ControlSafe
Sistema de gestión de vencimientos para comercios minoristas, diseñado y desarrollado en solitario de punta a punta: backend, frontend y toda la lógica de negocio. En producción y en uso activo en la sucursal 175 de Farmacity (Villa María).Expiration-date management system for retail stores, designed and built solo end to end: backend, frontend and all the business logic. In production and actively used at Farmacity branch 175 (Villa María).
- Autenticación y roles con Spring Security + JWT (ADMIN / OPERADOR); credenciales y secretos por variables de entorno.Authentication and roles with Spring Security + JWT (ADMIN / OPERATOR); credentials and secrets via environment variables.
- Scheduler diario que actualiza estados de vencimiento y envía alertas por email (SendGrid), generales y personalizadas por producto o departamento, con frecuencia configurable.Daily scheduler that updates expiration statuses and sends email alerts (SendGrid), both general and custom per product or department, with configurable frequency.
- Autocompletado por código de barras con la API pública Open Food Facts, y soporte para escáner USB.Barcode auto-fill using the public Open Food Facts API, with USB scanner support.
- Panel de administración de usuarios y departamentos: crear, activar/desactivar y resetear accesos.Admin panel for users and departments: create, activate/deactivate and reset access.
- Reportes PDF con filtros dinámicos (iText) e historial de trazabilidad de acciones por usuario y puesto.PDF reports with dynamic filters (iText) and a full audit trail of actions by user and workstation.
- Despliegue en producción: backend con Docker en Railway (CI/CD desde GitHub) junto a MySQL, y frontend en Vercel.Production deployment: Dockerized backend on Railway (CI/CD from GitHub) with MySQL, and frontend on Vercel.