Files
app-padel/docs/roadmap/FASE-01.md
Ivan Alcaraz b558372810 FASE 1 COMPLETADA: Fundamentos y Core del Backend
- 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
2026-01-31 08:11:53 +00:00

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