Bienvenido a la API MacJavaNest, desarrollada por Jaime Lozano, Diego Torres, Oscar Encabo, Kelvin Sánchez y Raúl Rodríguez. Esta API ofrece una administración segura, completa y escalable de bases de datos, diseñada para la gestión de un restaurante online.
Para trabajar con nuestra API, recomendamos mirar: Nest
- Introducción
- Gitflow
- Tecnologías
- Bases de datos
- Características comunes de los endpoints
- Categoría
- Trabajadores, clientes y proveedores
- Restaurantes y productos
- Autenticación
- Usuarios
- Pedidos
- Despliegue
- Tests
- Conclusión y presupuesto
La API MacJavaNest ofrece una administración segura, completa y escalable de bases de datos, diseñada para la gestión de un restaurante online. Basada en NestJS, destaca por su uso de TypeScript y su arquitectura escalable y modular.
Hemos seguido la metodología Gitflow para la organización del proyecto, creando ramas de características (features) que luego se integran en una rama de desarrollo (develop) para su testing y finalmente se fusionan en la rama principal (master) para la implementación.
La API utiliza NestJS como framework principal, aprovechando las características de TypeScript para un código más robusto y mantenible. Entre otras tecnologías destacadas se incluyen cache manager, TypeORM y Mongoose para la interacción con bases de datos, JWT para la autenticación y Jest para las pruebas.
Para el almacenamiento de datos estructurados utilizamos PostgreSQL, mientras que para datos semi-estructurados como los pedidos empleamos MongoDB. Estas bases de datos ofrecen robustez, escalabilidad y rendimiento para las necesidades de la aplicación.
Varios endpoints comparten características comunes, incluyendo modelos con notaciones de TypeORM, uso de UUIDs y Autonuméricos, DTOs y Mappers para la transferencia de datos, y métodos comunes como findAll, findById, save, update y deleteById.
El endpoint de categoría gestiona los roles (puestos) dentro del restaurante, con detalles como el nombre del puesto y un salario base asociado.
Estos endpoints permiten la gestión de trabajadores, clientes y proveedores. Solo los usuarios con rol de administrador pueden realizar cambios en las bases de datos.
Estos endpoints ofrecen control mixto, con acciones permitidas para todos los usuarios y acciones específicas solo para administradores. Se manejan respuestas detalladas y códigos de estado para garantizar la integridad de la aplicación.
El endpoint de autenticación permite registrar usuarios e iniciar sesión, utilizando JWT para la gestión de tokens y la autenticación de usuarios.
El endpoint de usuarios administra la información de los usuarios, con detalles tanto para administradores como para usuarios normales. Se utiliza Bcrypt para el almacenamiento seguro de contraseñas.
El endpoint de pedidos es el más complejo, gestionando los pedidos de restaurantes, clientes y trabajadores. Utiliza MongoDB para almacenar los datos de los pedidos y ofrece métodos para realizar operaciones CRUD y cálculos de precios.
Para el despliegue de la aplicación se utiliza Docker, facilitando su implementación en diferentes entornos. Se utilizan archivos docker-compose para gestionar los contenedores de la base de datos y de la aplicación.
Se han creado pruebas de caja negra y caja blanca para verificar el correcto funcionamiento de la aplicación. Se han utilizado Jest y Supertest para simular el comportamiento del código y se han mockeado las dependencias necesarias para las pruebas unitarias.
El proyecto MacJavaNest representa una inversión razonable en recursos financieros y humanos. Con una estrategia publicitaria en Instagram, el registro de un dominio, el uso de servicios en la nube y el trabajo de desarrolladores, se han logrado los objetivos del proyecto en un período de 2 meses.
El proyecto tiene el potencial de ser exitoso y generar un retorno positivo de la inversión realizada. La inversión en recursos técnicos y de marketing refleja el compromiso y motivación del equipo con el proyecto.
¡Gracias por leer nuestro README! Si tienes alguna pregunta o sugerencia, no dudes en contactarnos. ¡Esperamos que disfrutes usando nuestra API MacJavaNest!