Este es la arquitectura de backend que proporciona los endpoints para la administracion de inventario usando Node.JS, TypeScript, TypeORM, Express and MySQL. La aplicacion permite el manejo de productos, monitorear el nivel de stock, y el flujo de movimiento de los productos.
En el backend, se ha utilizado una arquitectura cebolla o onion architecture, que divide la lógica en capas bien definidas y facilita la separación de responsabilidades. Esta arquitectura tiene las siguientes capas:
- Entidades: Aquí se definen los modelos que representan los datos de nuestra aplicación. Por ejemplo, la entidad Product representa un producto en la base de datos.
- Interfaces de repositorio: Se definen interfaces que representan cómo interactuar con los datos (CRUD), pero no se implementan aquí, lo que permite mayor flexibilidad.
- Controladores: Son los puntos de entrada de la API. Reciben las solicitudes HTTP, se las pasan a los servicios, y devuelven respuestas al cliente.
- Adaptadores de persistencia (TypeORM): Implementan la lógica de acceso a la base de datos usando TypeORM. Aquí es donde las interfaces de repositorio del Product_core se implementan realmente.
- Servicios: Contienen la lógica de negocio. Los controladores se comunican con los servicios para realizar acciones de más alto nivel, como la creación o modificación de productos. Los servicios a su vez utilizan los repositorios de persistencia.
- Interfaces de servicios: Definen cómo los servicios deben comportarse y cuáles son las operaciones disponibles para los controladores.
- Desacoplamiento: Las capas están bien desacopladas. Si deseas cambiar el framework de base de datos, solo tendrías que modificar la capa de infraestructura.
- Escalabilidad: Las capas independientes facilitan la adición de nuevas características.
- Facilidad para escribir tests: Como las capas están separadas, se pueden escribir tests unitarios para cada una sin necesidad de probar todo el sistema.
- Gestion de Productos: Add, edit, and delete products.
- Monitoreo de Stock: View current stock levels and receive alerts when stock is low.
- Historial de Inventario: Track the history of inventory movements (stock in/out).
- Buscar y Filtrar: Easily search and filter products by different attributes.
-
Backend:
- Next.js API routes (for server-side logic)
- Node.js
- Express (optional for more complex routing and middleware)
- TypeORM
- CORS
-
Database:
- MySQL
- Node.js (v14 or later)
- MySQL (v8 or later)
-
Clone the repository:
git clone [email protected]:SebastianTuquerrezG/GestionInventarioCRUD.git cd Backend
-
Instalar dependencias:
npm install npm i --save-dev @types/cors
-
Ejecutar servidor:
npx ts-node src/server.ts