/mongoAlquiler

Esta plataforma te permite administrar alquileres de vehículos de manera eficiente y organizada. Diseñada con Node.js, Express y MongoDB, nuestra solución proporciona funciones esenciales para la gestión de alquileres, clientes y automóviles.

Primary LanguageJavaScript

Alquiler de Automoviles

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.

ÍNDICE


Generar la base de datos local o en tu servidor Mongo Cloud

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

  1. Instalar la extensión MondoDB for VS Code la cual es parte del sitio oficial de mongodb

  2. Habiendo instalado la extensión, accederemos al archivo db.mongodb ubicado en la carpeta DB, seleccionaremos todo y daremos click donde se muestra en la siguiente imagen

    Screenshot from 2023-08-17 08-05-38

    Bien hecho, ya tenemos nuestra base de datos gerada

Configuración de las Variables de Entorno

Para personalizar el host y el puerto, sigue estos pasos:

  1. Abre el archivo .env.

  2. Asigna la base de datos que deseas usar en tu cuenta de MongoDB a ATLAS_USE.

  3. Ingresa la contraseña de tu base de datos en ATLAS_PASSWORD.

  4. Define el nombre de tu base de datos en ATLAS_DB.

  5. Asigna el URL generado por MongoDB a URL_CONNECT. Copia el código y pégalo en la variable de entorno.

  6. 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...



¿Cómo Utilizar el Software?

Para instalar este software en tu servidor y utilizarlo localmente, necesitarás tener instalados los siguientes requisitos:

Ahora que sabemos que el sistema puede funcionar en tu servidor, intentemos ejecutarlo siguiendo estos pasos:

  1. Clona el repositorio: https://github.com/JuanDavidAvilaRaveloCampus/mongoAlquiler.git

  2. Nos ubicamos en la carpeta ./backend

    cd backend/
  3. Desde la terminal, ve a la carpeta backend y instala las dependencias con el siguiente comando:

    npm update
  4. Generamos los archivos que servirán de controladores:

    npm run tsc
    1. 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
  5. 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.


Rutas

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:

Alquiler:

  • 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.


Automóviles

  • 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.

Clientes

  • 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.


Empleados

  • 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.


Reservas

  • 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.


Sucursal Automóvil

  • http://[tu_host]:[tu_puerto]/sucursal-automovil: Consulta relación entre sucursales y autos.

Más Info


Tecnologías Utilizadas

  • Node.js
  • Expres.js
  • MongoDB
  • TypeScript


Dependencias

  • 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 y class-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


Contribuciones y licencia

¡Agradecemos tus contribuciones al proyecto! Si deseas colaborar, sigue los siguientes pasos:

  1. Crea un nuevo "branch" para tus cambios.

    git checkout -b mi-nueva-funcionalidad    
  2. Realiza tus modificaciones y mejoras.

  3. Haz un "commit" de tus cambios.

    git commit -m "Agrego nueva funcionalidad"      
  4. Envía tus cambios al repositorio remoto.

    git push origin mi-nueva-funcionalidad    
  5. 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"!