Este es el backend del proyecto que se encarga de gestionar los usuarios, propiedades, habitaciones y transacciones a través de una API RESTful. Utiliza Node.js, NestJS y TypeORM para interactuar con una base de datos MySQL. Las contraseñas de los usuarios se encriptan utilizando bcryptjs y la autenticación se maneja a través de JWT.
Para más detalles sobre los endpoints y cómo utilizarlos, consulta la Documentación de la API.
Puedes ver la demostración de la aplicación en EZHub App.
- Node.js.
- NestJS: Un marco de trabajo para construir aplicaciones de servidor eficientes, confiables y escalables en TypeScript.
- TypeORM: Un ORM que puede ejecutarse en plataformas NodeJS y puede ser utilizado con TypeScript y JavaScript.
- bcryptjs: Una biblioteca para encriptar contraseñas.
- jsonwebtoken: Una implementación de tokens de acceso JSON Web Token.
- MySQL: Un sistema de gestión de bases de datos relacional.
- Yarn: Un gestor de paquetes rápido, fiable y seguro.
Asegúrate de tener instalado Node.js y yarn antes de seguir estos pasos.
✔️ Paso 1: Clonar el Repositorio
git clone https://github.com/Yul1b3th/ezhub-backend.git
✔️ Paso 2: Ingresa al directorio del proyecto:
cd ezhub-backend
✔️ Paso 3: Instalar las Dependencias
npm install
✔️ Paso 4: Configuración de la Base de Datos
Este proyecto utiliza variables de entorno para la configuración de la base de datos. Estas variables se definen en un archivo .env
que no se incluye en el repositorio por razones de seguridad. Sin embargo, se proporciona un archivo .env.template
como ejemplo.
Copia el archivo .env.template
y renómbralo a .env
. Luego, reemplaza los valores de las variables con la información de tu base de datos:
cp .env.template .env
Nota: Asegúrate de reemplazar las variables con los valores correspondientes a tu configuración.
El proyecto utiliza el módulo ConfigModule
de NestJS para leer las variables de entorno desde el archivo .env
. Estas variables se utilizan para configurar la conexión a la base de datos en app.module.ts
y para definir el puerto del servidor en main.ts
.
✔️ Paso 5: Levantar el Servidor
yarn run start:dev
El servidor estará disponible en http://localhost:8000 por defecto.
- POST /api/auth/register: Registra un nuevo usuario.
- POST /api/auth/login: Inicia sesión con un usuario existente.
- GET /api/auth/profile: Obtiene el perfil del usuario actualmente autenticado.
- GET /api/auth/check-token: Verifica el token de sesión y devuelve un nuevo token JWT válido.
- GET /api/users: Obtiene todos los usuarios.
- GET /api/users/:id: Obtiene un usuario por ID.
- PATCH /api/users/:id: Actualiza un usuario existente.
- DELETE /api/users/:id: Elimina un usuario.
Nota: Reemplaza :id con el ID del usuario correspondiente.
- GET /api/properties: Obtiene todas las propiedades. (JWT requerido)
- GET /api/properties/:id: Obtiene una propiedad por ID. (JWT requerido)
- POST /api/properties: Crea una nueva propiedad. (JWT requerido)
- PATCH /api/properties/:id: Actualiza una propiedad existente. (JWT requerido)
- DELETE /api/properties/:id: Elimina una propiedad. (JWT requerido)
Nota: Reemplaza :id con el ID de la propiedad correspondiente.
- GET /api/properties: Obtiene todas las propiedades públicas. (Sin JWT requerido)
- GET /api/properties/:id: Obtiene una propiedad pública por ID. (Sin JWT requerido)
Nota: Reemplaza :id con el ID de la propiedad correspondiente.
- GET /api/rooms: Obtiene todas las habitaciones. (JWT requerido)
- GET /api/rooms/:id: Obtiene una habitación por ID. (JWT requerido)
- POST /api/rooms: Crea una nueva habitación. (JWT requerido)
- PATCH /api/rooms/:id: Actualiza una habitación existente. (JWT requerido)
- DELETE /api/rooms/:id: Elimina una habitación. (JWT requerido)
Nota: Reemplaza :id con el ID correspondiente de la habitación.
- GET /api/public-rooms: Obtiene todas las habitaciones públicas. (Sin JWT requerido)
- GET /api/public-rooms/:id: Obtiene una habitación pública por ID. (Sin JWT requerido)
- GET /api/public-rooms/:id/amenities: Obtiene todas las comodidades de una habitación pública por ID. (Sin JWT requerido)
Nota: Reemplaza :id con el ID correspondiente de la habitación.
Si deseas colaborar en este proyecto o informar sobre problemas, no dudes en crear un "issue" o enviar un "pull request."