taller-ionic/backend/README.md
2025-04-24 12:44:46 -04:00

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