Autor: Soanny Geraldine Rivas Gutierrez, Stevie Marca Aguilar
Fecha: 10 noviembre de 2026
1. Introducción
Una adecuada administración de inventarios es fundamental para mantener el control de los productos y evitar pérdidas ocasionadas por errores en los registros.
Con este propósito desarrollamos SmartInventory, una aplicación web que permite gestionar productos, supervisar existencias y registrar movimientos de almacén de manera organizada.
El sistema utiliza Couchbase Capella como base de datos NoSQL en la nube, junto con React, Node.js y Express. También incorpora herramientas de automatización para facilitar las pruebas y el despliegue de la aplicación.
2. Objetivo del proyecto
SmartInventory busca optimizar el seguimiento de inventarios mediante una plataforma que centraliza la información de productos, proveedores y movimientos.
Entre sus principales objetivos se encuentran:
- Administrar productos, categorías y proveedores.
- Registrar entradas, salidas y ajustes de inventario.
- Evitar movimientos que generen existencias negativas.
- Identificar productos con niveles bajos de stock.
- Consultar indicadores y reportes.
- Mantener un historial de los movimientos realizados.
3. Herramientas y tecnologías utilizadas
Para implementar la aplicación se utilizaron las siguientes tecnologías:
| Tecnología | Utilidad |
|---|---|
| React 18 | Interfaz de usuario |
| Tailwind CSS | Diseño visual |
| Node.js y Express | Desarrollo de la API REST |
| Couchbase Capella | Base de datos NoSQL |
| JWT | Autenticación |
| GitHub Actions | Automatización CI/CD |
| Render | Despliegue en la nube |
La combinación de estas herramientas permite separar la interfaz, la lógica de negocio y el almacenamiento de información.
4. Funcionamiento de SmartInventory
La plataforma dispone de diferentes módulos para facilitar la gestión del almacén.
Panel principal: presenta indicadores sobre productos activos, unidades disponibles, movimientos recientes y alertas.
Productos: permite registrar, consultar, modificar y desactivar artículos.
Categorías y proveedores: facilita la organización del catálogo y la administración de los proveedores.
Movimientos: registra las entradas, salidas y ajustes, manteniendo información sobre las cantidades y los responsables.
Alertas: identifica automáticamente productos agotados o con existencias inferiores al mínimo establecido.
Reportes: permite consultar información relacionada con las existencias y los movimientos registrados.
Además, se contemplan los roles de administrador y almacenero, con permisos diferentes según sus responsabilidades.
5. Almacenamiento con Couchbase Capella
Uno de los componentes más importantes del proyecto es la implementación de Couchbase Capella, una base de datos NoSQL que almacena información mediante documentos JSON.
La estructura principal está organizada de la siguiente manera:
Couchbase Capella │ └── Bucket: smartinventory │ └── Scope: inventario │ ├── usuarios ├── productos ├── categorias ├── proveedores └── movimientos Cada producto contiene información como nombre, código, precio, cantidad disponible y stock mínimo.
Por ejemplo:
{ "id": "PROD-001", "nombre": "Teclado Mecánico", "precioVenta": 79.90, "stockActual": 15, "stockMinimo": 5, "estado": "ACTIVO" } Couchbase también permite utilizar SQL++ para consultar y filtrar documentos JSON, facilitando la recuperación de información.
6. Control de stock y seguridad
Una característica importante de SmartInventory es la validación de los movimientos de inventario.
Cuando se registra una salida, el sistema verifica que exista suficiente cantidad disponible.
Por ejemplo, si un producto tiene 10 unidades y se solicita retirar 15, la operación se rechaza para evitar que el inventario quede en negativo.
También se utilizan transacciones ACID, que permiten actualizar las existencias y registrar el movimiento como una operación conjunta.
El proyecto incorpora mecanismos para manejar conflictos cuando varios usuarios intentan modificar simultáneamente el stock de un mismo producto.
Para la seguridad se utiliza autenticación mediante JWT, contraseñas protegidas con bcrypt y restricciones de acceso según el rol.
7. Automatización y publicación en la nube
SmartInventory integra un flujo de CI/CD mediante GitHub Actions.
Este proceso permite ejecutar pruebas automáticas y compilar el proyecto cuando se realizan cambios en el repositorio.
Si las verificaciones terminan correctamente, el flujo puede activar el despliegue en Render mediante los mecanismos configurados.
La plataforma dispone de dos servicios principales:
- Frontend: aplicación React publicada como sitio web.
- Backend: API REST desarrollada con Node.js y Express.
El backend se comunica con Couchbase Capella para consultar y actualizar la información del inventario.
8. Resultados y aprendizajes
El desarrollo de SmartInventory permitió aplicar conocimientos sobre bases de datos NoSQL, arquitectura web, consultas SQL++, seguridad y automatización.
Uno de los aprendizajes más importantes fue comprender cómo mantener la consistencia de las existencias cuando varios usuarios registran movimientos al mismo tiempo.
Asimismo, la integración con servicios en la nube permitió conocer el proceso de publicación de una aplicación full stack.
9. Conclusiones
SmartInventory demuestra cómo las tecnologías NoSQL pueden utilizarse para desarrollar soluciones prácticas de administración de inventarios.
El uso de Couchbase Capella facilita el almacenamiento documental, mientras que las transacciones contribuyen a mantener la integridad de las operaciones.
La implementación de React, Node.js, GitHub Actions y Render permitió integrar el desarrollo frontend, backend y despliegue dentro de un mismo proyecto.
En conjunto, SmartInventory constituye una solución funcional para gestionar productos, controlar existencias y supervisar movimientos de almacén utilizando tecnologías modernas.
10. Enlaces del proyecto
Repositorio GitHub:
https://github.com/Stevien04/SmartInventory
Aplicación desplegada:
https://smartinventory-app.onrender.com
API del sistema:
https://smartinventory-api-29jb.onrender.com/api/health
Video demostrativo:
https://youtu.be/g1ksH2ASxBw
