3.0 KiB
3.0 KiB
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
# 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
# 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 usuariosGET /api/users/:id- Obtener usuario por IDPOST /api/users- Crear nuevo usuarioPUT /api/users/:id- Actualizar usuario
Clases de Gimnasio
GET /api/classes- Obtener todas las clasesGET /api/classes/:id- Obtener clase por IDPOST /api/classes- Crear nueva clasePUT /api/classes/:id- Actualizar claseDELETE /api/classes/:id- Eliminar clase
Reservas
GET /api/bookings- Obtener todas las reservasGET /api/bookings/user/:userId- Obtener reservas por usuarioPOST /api/bookings- Crear nueva reservaPUT /api/bookings/:id/cancel- Cancelar reserva
Subida de Archivos
POST /api/upload- Subir un archivo
Despliegue en Railway
- Crea una cuenta en Railway si aún no tienes una
- Crea un nuevo proyecto en Railway
- Agrega un servicio de PostgreSQL desde el dashboard
- Conecta tu repositorio de GitHub o sube el código directamente
- 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 - Railway detectará automáticamente que es una aplicación Node.js y ejecutará
npm start - 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:
- Usa Sequelize como ORM en lugar de Hibernate/Panache
- Implementa API RESTful con Express en lugar de JAX-RS
- Maneja la subida de archivos con Multer en lugar de RESTEasy Multipart
- Mantiene compatibilidad con PostgreSQL al igual que la versión original
Licencia
MIT