- API REST completa con Node.js + Express + TypeScript - Autenticación JWT con roles (Player/Admin) - CRUD completo de canchas - Sistema de reservas con validaciones - Base de datos SQLite con Prisma ORM - Notificaciones por email (Nodemailer) - Seed de datos de prueba - Documentación de arquitectura Endpoints implementados: - Auth: register, login, refresh, me - Courts: CRUD + disponibilidad - Bookings: CRUD + confirmación/cancelación Credenciales de prueba: - admin@padel.com / admin123 - user@padel.com / user123
4.8 KiB
4.8 KiB
Fase 1: Fundamentos y Core
Estado: ✅ COMPLETADA
✅ Tareas completadas:
1.1.1 Definición de Arquitectura
- Stack tecnológico definido (Node.js + Express + TypeScript + Prisma + SQLite)
- Diagrama de arquitectura creado
- Estructura de base de datos diseñada
- Documento de requisitos técnicos
1.1.2 Setup de Infraestructura
- Repositorios Git configurados
- Entorno de desarrollo configurado
- Dependencias instaladas
- Configuración TypeScript
- ESLint configurado
1.2.1 Sistema de Autenticación
- Registro de usuarios con validación
- Login con JWT
- Refresh token
- Logout
- Middleware de autenticación
- Hash de contraseñas con bcrypt
1.2.2 Gestión de Roles
- Rol Jugador
- Rol Administrador
- Middleware de permisos (authorize)
- Protección de rutas por rol
1.3.1 Gestión de Canchas
- CRUD completo de canchas
- Configuración de horarios
- Estados de cancha (activa/inactiva)
- Tipos de cancha (Panorámica, Exterior, Cubierta)
- Consulta de disponibilidad por fecha
1.3.2 Sistema de Reservas Core
- Crear reserva con validaciones
- Validación de disponibilidad en tiempo real
- Verificación de horarios de cancha
- Prevención de reservas duplicadas
- Cancelación de reservas
- Confirmación de reservas (admin)
- Listado de reservas por usuario
- Listado de todas las reservas (admin)
1.3.3 Notificaciones Básicas
- Servicio de email configurado (Nodemailer)
- Email de bienvenida al registrar
- Email de confirmación de reserva
- Email de cancelación de reserva
- Template básico de emails
📊 Resumen de Implementación
Backend API
- URL Base:
http://localhost:3000/api/v1 - Tecnologías: Node.js 20, Express, TypeScript, Prisma, SQLite
- Autenticación: JWT con refresh tokens
- Validación: Zod schemas
Endpoints implementados:
| Método | Ruta | Descripción |
|---|---|---|
| POST | /auth/register | Registro de usuarios |
| POST | /auth/login | Login |
| GET | /auth/me | Perfil del usuario |
| POST | /auth/refresh | Refresh token |
| GET | /courts | Listar canchas |
| GET | /courts/:id | Ver cancha |
| POST | /courts | Crear cancha (admin) |
| PUT | /courts/:id | Actualizar cancha (admin) |
| DELETE | /courts/:id | Eliminar cancha (admin) |
| GET | /courts/:id/availability | Disponibilidad |
| POST | /bookings | Crear reserva |
| GET | /bookings | Listar reservas (admin) |
| GET | /bookings/my-bookings | Mis reservas |
| GET | /bookings/:id | Ver reserva |
| PUT | /bookings/:id | Actualizar reserva |
| DELETE | /bookings/:id | Cancelar reserva |
| PUT | /bookings/:id/confirm | Confirmar reserva (admin) |
Base de Datos
- Provider: SQLite (desarrollo) / PostgreSQL (producción)
- ORM: Prisma
- Entidades: User, Court, CourtSchedule, Booking
Credenciales de prueba:
Admin: admin@padel.com / admin123
User: user@padel.com / user123
🚀 Cómo ejecutar
# Instalar dependencias
cd backend
npm install
# Configurar variables de entorno
cp .env.example .env
# Generar cliente Prisma
npx prisma generate
# Ejecutar migraciones
npx prisma migrate dev
# Seed de datos
npx tsx prisma/seed.ts
# Iniciar servidor
npm run dev
📁 Archivos creados en esta fase
backend/
├── src/
│ ├── config/
│ │ ├── index.ts
│ │ ├── database.ts
│ │ └── logger.ts
│ ├── controllers/
│ │ ├── auth.controller.ts
│ │ ├── court.controller.ts
│ │ └── booking.controller.ts
│ ├── middleware/
│ │ ├── auth.ts
│ │ ├── errorHandler.ts
│ │ └── validate.ts
│ ├── routes/
│ │ ├── auth.routes.ts
│ │ ├── court.routes.ts
│ │ ├── booking.routes.ts
│ │ └── index.ts
│ ├── services/
│ │ ├── auth.service.ts
│ │ ├── court.service.ts
│ │ ├── booking.service.ts
│ │ └── email.service.ts
│ ├── utils/
│ │ ├── jwt.ts
│ │ ├── password.ts
│ │ └── constants.ts
│ ├── validators/
│ │ └── auth.validator.ts
│ └── index.ts
├── prisma/
│ ├── schema.prisma
│ └── seed.ts
├── package.json
├── tsconfig.json
└── .env
📝 Notas
- La Fase 1 está completa y lista para usar
- El backend está funcional con todas las operaciones CRUD
- Se incluyen datos de prueba (seed)
- Los emails funcionan en modo simulado en desarrollo
- Para producción, configurar SMTP en variables de entorno
Completada el: 2026-01-31