115 lines
3.0 KiB
Markdown
115 lines
3.0 KiB
Markdown
# Gym Backend - Node.js Version
|
|
|
|
This is a Node.js backend for a Gym application that was converted from a Java/Quarkus application. It uses Express.js and Sequelize with PostgreSQL.
|
|
|
|
## Características
|
|
|
|
- Gestión de usuarios
|
|
- Gestión de clases de gimnasio
|
|
- Sistema de reservas
|
|
- Subida de archivos (imágenes)
|
|
|
|
## Tecnologías
|
|
|
|
- Node.js & Express
|
|
- PostgreSQL con Sequelize
|
|
- Autenticación con bcrypt
|
|
- Multer para subida de archivos
|
|
|
|
## Instalación
|
|
|
|
```bash
|
|
# Instalar dependencias
|
|
npm install
|
|
|
|
# Configurar variables de entorno
|
|
# Edita el archivo .env con tus credenciales de PostgreSQL
|
|
```
|
|
|
|
## Configuración de la Base de Datos
|
|
|
|
Puedes usar PostgreSQL local o en Railway. Asegúrate de actualizar las variables de entorno en el archivo .env:
|
|
|
|
```
|
|
PORT=3000
|
|
DB_HOST=localhost
|
|
DB_USER=postgres
|
|
DB_PASSWORD=postgres
|
|
DB_NAME=gymdb
|
|
DB_PORT=5432
|
|
DB_DIALECT=postgres
|
|
NODE_ENV=development
|
|
```
|
|
|
|
## Ejecución de la Aplicación
|
|
|
|
```bash
|
|
# Ejecutar en modo desarrollo
|
|
npm run dev
|
|
|
|
# Ejecutar en modo producción
|
|
npm start
|
|
|
|
# Poblar la base de datos con datos de ejemplo
|
|
npm run seed
|
|
```
|
|
|
|
## Endpoints de la API
|
|
|
|
### Usuarios
|
|
- `GET /api/users` - Obtener todos los usuarios
|
|
- `GET /api/users/:id` - Obtener usuario por ID
|
|
- `POST /api/users` - Crear nuevo usuario
|
|
- `PUT /api/users/:id` - Actualizar usuario
|
|
|
|
### Clases de Gimnasio
|
|
- `GET /api/classes` - Obtener todas las clases
|
|
- `GET /api/classes/:id` - Obtener clase por ID
|
|
- `POST /api/classes` - Crear nueva clase
|
|
- `PUT /api/classes/:id` - Actualizar clase
|
|
- `DELETE /api/classes/:id` - Eliminar clase
|
|
|
|
### Reservas
|
|
- `GET /api/bookings` - Obtener todas las reservas
|
|
- `GET /api/bookings/user/:userId` - Obtener reservas por usuario
|
|
- `POST /api/bookings` - Crear nueva reserva
|
|
- `PUT /api/bookings/:id/cancel` - Cancelar reserva
|
|
|
|
### Subida de Archivos
|
|
- `POST /api/upload` - Subir un archivo
|
|
|
|
## Despliegue en Railway
|
|
|
|
1. Crea una cuenta en [Railway](https://railway.app/) si aún no tienes una
|
|
2. Crea un nuevo proyecto en Railway
|
|
3. Agrega un servicio de PostgreSQL desde el dashboard
|
|
4. Conecta tu repositorio de GitHub o sube el código directamente
|
|
5. Configura las variables de entorno en Railway:
|
|
```
|
|
PORT=3000
|
|
DB_HOST=${{ PGHOST }}
|
|
DB_USER=${{ PGUSER }}
|
|
DB_PASSWORD=${{ PGPASSWORD }}
|
|
DB_NAME=${{ PGDATABASE }}
|
|
DB_PORT=${{ PGPORT }}
|
|
DB_DIALECT=postgres
|
|
NODE_ENV=production
|
|
```
|
|
6. Railway detectará automáticamente que es una aplicación Node.js y ejecutará `npm start`
|
|
7. Una vez desplegada, ejecuta el comando de inicialización de datos desde la terminal de Railway:
|
|
```
|
|
npm run seed
|
|
```
|
|
|
|
## Comparación con la Versión Java/Quarkus
|
|
|
|
Esta versión Node.js mantiene la misma funcionalidad y estructura de API que la versión original Java/Quarkus, con estas diferencias clave:
|
|
|
|
1. Usa Sequelize como ORM en lugar de Hibernate/Panache
|
|
2. Implementa API RESTful con Express en lugar de JAX-RS
|
|
3. Maneja la subida de archivos con Multer en lugar de RESTEasy Multipart
|
|
4. Mantiene compatibilidad con PostgreSQL al igual que la versión original
|
|
|
|
## Licencia
|
|
|
|
MIT |