El sistema de alquiler y gestión de reservas para autos es una solución optimizada basada en Node.js, Express.js y MongoDB, diseñada para mejorar la eficiencia de los procesos y ofrecer un servicio excepcional a los clientes.
- Generar la base de datos local o en tu servidor Mongo Cloud
- Configuración de las Variables de Entorno
- ¿Cómo Utilizar el Software?
- Rutas
- Más Info
Nota: Para llevar a cabo estos pasos, primero hay que configurar las variables de entorno, más específicamente las de URL, a la tuya propia. Si no sabes como hacerlo, te recomendamos que revises la documentación oficial de mongodb, sobre como generar una cuenta en MongoDB y como utilizar los controladores para node.js. Aquí te dejamos los enlaces para acceder a la información:
Mongodb
Mongodb En Node.js
Para mayor entendimiento te recomendamos visitar la Universidad de mongo donde te instruyen completamente gratis y te certifican. Mongodb University
Con esto en cuenta, vamos a proceder a generar nuestra base de datos.
Para ello necesitaremos instalar una sencilla extension en vscode y si estas en otros editores de codigo, busca alguna extension que sea similar a la que instalaremos
-
Instalar la extensión MondoDB for VS Code la cual es parte del sitio oficial de mongodb
-
Habiendo instalado la extensión, accederemos al archivo
db.mongodb
ubicado en la carpetaDB
, seleccionaremos todo y daremos click donde se muestra en la siguiente imagenBien hecho, ya tenemos nuestra base de datos gerada
Para personalizar el host y el puerto, sigue estos pasos:
-
Abre el archivo
.env
. -
Asigna la base de datos que deseas usar en tu cuenta de MongoDB a
ATLAS_USE
. -
Ingresa la contraseña de tu base de datos en
ATLAS_PASSWORD
. -
Define el nombre de tu base de datos en
ATLAS_DB
. -
Asigna el URL generado por MongoDB a
URL_CONNECT
. Copia el código y pégalo en la variable de entorno. -
Reemplaza
<password>
con tu contraseña.
OPCIONAL: La variable SERVER_CONFIG
controla el host y el puerto. Puedes ajustarlos como prefieras.
Ejemplo: SERVER_CONFIG = {"hostname": 127.01.01, "port": 3000}
¡Listo! Has configurado las variables de entorno.
Pero...
Para instalar este software en tu servidor y utilizarlo localmente, necesitarás tener instalados los siguientes requisitos:
- Node.js
- Una cuenta en MongoDB
Ahora que sabemos que el sistema puede funcionar en tu servidor, intentemos ejecutarlo siguiendo estos pasos:
-
Clona el repositorio:
https://github.com/JuanDavidAvilaRaveloCampus/mongoAlquiler.git
-
Nos ubicamos en la carpeta
./backend
cd backend/
-
Desde la terminal, ve a la carpeta
backend
y instala las dependencias con el siguiente comando:npm update
-
Generamos los archivos que servirán de controladores:
npm run tsc
- Una vez instaladas las dependencias vamos a abrir una nueva terminal y corremos el servidor estando ubicados en la carpeta
backend
, ejecutamos el software:
npm run dev
- Una vez instaladas las dependencias vamos a abrir una nueva terminal y corremos el servidor estando ubicados en la carpeta
-
En la consola, verás la URL base de tu servidor, por ejemplo:
http://localhost:3000
Si deseas cambiar el host y el puerto, consulta este enlace
¡Listo! Tu servidor está en funcionamiento.
Warning
Antes de acceder a las rutas, primero tenemos que generar el token para tener acceso a estas. Para ello tenemos que hacer lo siguiente:
http://[tu_host]:[tu_puerto]/token/[endpoint]
🔍: Sustituye endpoint
por el la ruta a la que se busca tener acceso.
Luego esto generará un token el cual tenemos que copiar y pegar en los headers de la solicitud.
En los headers tenemos que agregar un campo llamado "Authorization" y su valor va a ser el token que hayamos generado (osea pegar el token ahí).
Luego de haber realizar esta accion, podremos acceder libremente a nuestro endpoint
Ya tenemos corriendo nuestro servidor, pero ¿cómo ingresamos a la información almacenada en nuestra base de datos?. Pues aquí está la explicación de como ingresar a cada una de ellas:
-
http://[tu_host]:[tu_puerto]/alquiler/search=:id
🔍: Sustituye:id
por el identificador del alquiler que deseas obtener. -
http://[tu_host]:[tu_puerto]/alquiler/search-estado=:sts
📋: Sustituye:sts
por el estado de los alquileres que deseas obtener, como Activo, Disponible o Inactivo.
Nota: La consulta debe comenzar con mayúscula.
-
http://[tu_host]:[tu_puerto]/alquiler/search-costo-total=:id
💰: Acceso al costo total por alquiler. -
http://[tu_host]:[tu_puerto]/alquiler/search-start_date=:inicio&end_date=:fin
📅: Sustituye:inicio
con la fecha de inicio y:final
con la fecha de finalización del alquiler.Formato de fecha: AAAA-MM-DD Ejemplo: 2023-01-01
-
http://[tu_host]:[tu_puerto]/alquiler/search-fechas=Punto_12
⏳: Busca alquileres que comiencen el 2023-08-01.
Nota: Los parámetros no son dinámicos actualmente, pero se implementarán más adelante.
http://[tu_host]:[tu_puerto]/alquiler/search-cliente
👤: Consulta a los clientes con al menos un alquiler.
http://[tu_host]:[tu_puerto]/automoviles
🚘: Consulta todos los automóviles.http://[tu_host]:[tu_puerto]/automoviles/disponibles
🟢: Consulta automóviles disponibles. Próximamente dinámico.http://[tu_host]:[tu_puerto]/automoviles/capacidad/qte=:id
👥: Consulta autos con capacidad igual o mayor a:id
.http://[tu_host]:[tu_puerto]/automoviles/capacidad/lte=:id
🙋♂️: Consulta autos con capacidad igual o menor a:id
.http://[tu_host]:[tu_puerto]/automoviles/modelo_marca
🏁: Consulta automóviles ordenados por modelo y marca.
-
http://[tu_host]:[tu_puerto]/clientes
🧑🤝🧑: Consulta a todos los clientes. -
http://[tu_host]:[tu_puerto]/clientes/dni=:id
🔑: Consulta cliente según:id
. -
http://[tu_host]:[tu_puerto]/clientes/alquiler
📝: Consulta clientes con al menos un alquiler.
-
http://[tu_host]:[tu_puerto]/empleados
🕴️: Consulta empleados. -
http://[tu_host]:[tu_puerto]/empleados/cargo=:cg
👷: Consulta empleados por cargo, como Gerente, Supervisor, Asist
ente, Recepcionista y Vendedor.
-
http://[tu_host]:[tu_puerto]/reservas
📆: Consulta todas las reservas. -
http://[tu_host]:[tu_puerto]/reservas/estado=:sto
📌: Consulta reservas por estado, como Pendiente o Disponible. -
http://[tu_host]:[tu_puerto]/reservas/estado=:sto/cliente=:id
📋🧑🤝🧑: Consulta reservas por estado y cliente.:sto
: Disponible o Pendiente.:id
: Identificación del cliente.
http://[tu_host]:[tu_puerto]/sucursal-automovil
: Consulta relación entre sucursales y autos.
- Node.js
- Expres.js
- MongoDB
- TypeScript
- class-transformer : Biblioteca que simplifica la transformación de objetos entre diferentes estructuras de datos, como objetos TypeScript y JSON
- class-validator : Validación de objetos basada en decoradores en TypeScript y JavaScript
- dotenv : Biblioteca para cargar variables de entorno desde un archivo
.env
en el entorno de Node.js - express : Un marco de aplicación web minimalista y flexible para Node.js que facilita la creación de aplicaciones web y APIs.
- express-rate-limit : Un middleware para Express que implementa límites de velocidad y control de acceso basado en IP
- jose : Una biblioteca que implementa los estándares JSON Web Token (JWT) y JSON Web Signature (JWS)
- mongodb : El controlador oficial de MongoDB para Node.js, que permite interactuar con bases de datos MongoDB
- nodemon : Una herramienta que monitoriza cambios en archivos y automáticamente reinicia la aplicación Node.js para un flujo de desarrollo más eficiente
- reflect-metadata : Una librería que proporciona metadatos sobre tipos en tiempo de ejecución. Se utiliza comúnmente con otras bibliotecas de TypeScript, como
class-transformer
yclass-validator
, - typescript : lenguaje de programación que extiende JavaScript al agregar tipos estáticos y otros características para el desarrollo más seguro y estructurado
¡Agradecemos tus contribuciones al proyecto! Si deseas colaborar, sigue los siguientes pasos:
-
Crea un nuevo "branch" para tus cambios.
git checkout -b mi-nueva-funcionalidad
-
Realiza tus modificaciones y mejoras.
-
Haz un "commit" de tus cambios.
git commit -m "Agrego nueva funcionalidad"
-
Envía tus cambios al repositorio remoto.
git push origin mi-nueva-funcionalidad
-
Abre un "Pull Request" en GitHub para que revisemos tus cambios.
Este proyecto se encuentra bajo la Licencia MIT. Siéntete libre de utilizar, modificar y distribuir el código según tus necesidades.
¡Gracias por contribuir al proyecto "mongoAlquiler"!