Sistema POS Cookiemania
Sistema integral de punto de venta y gestión para panadería artesanal con control de producción, inventario y ventas multimodal
Tecnologías
01. Contexto
Una panadería artesanal de galletas necesitaba un sistema completo para gestionar todo su proceso operativo: desde la compra de ingredientes, control de recetas con cálculo de costos, producción por lotes, gestión de inventario con control de caducidades, hasta ventas en múltiples modalidades (unidad, peso, paquetes). El negocio carecía de trazabilidad y control de mermas, generando pérdidas económicas significativas.
02. Objetivo
Desarrollar un sistema POS integral que unificara todas las operaciones del negocio en una sola plataforma: gestión de proveedores y compras, control de inventario de insumos con lotes y caducidades, sistema de recetas con cálculo automático de costos, producción por lotes con seguimiento de estados, ventas multimodales, generación de reportes y análisis, todo con un sistema robusto de roles y permisos para diferentes usuarios (Administrador, Vendedor, Producción, Cliente).
03. Mi Rol
Diseñé e implementé la arquitectura completa del sistema utilizando el patrón MVC con Flask Blueprints para modularización. Desarrollé 15+ modelos de base de datos con relaciones complejas, implementé 10 módulos funcionales independientes (autenticación, ventas, producción, inventario, recetas, compras, proveedores, pedidos, clientes, usuarios), creé un sistema de roles con decoradores personalizados, implementé cálculos automáticos de costos y precios, y desarrollé dashboards interactivos con Plotly para análisis de datos.
Arquitectura
- Patrón: MVC con Flask Blueprints para modularización por funcionalidad
- Backend: Flask 3.0.1 con SQLAlchemy 2.0.27 como ORM
- Base de datos: MySQL con 15+ tablas relacionales y enumeraciones personalizadas
- Autenticación: Flask-Login con hash de contraseñas (Werkzeug) y sistema de recuperación por email
- Frontend: Jinja2 templates + Tailwind CSS + Flowbite components
- Visualización: Plotly Express para gráficos interactivos de ventas y producción
- Seguridad: Control de acceso basado en roles con decorador @require_role
- Auditoría: Sistema de logs para todas las operaciones críticas
- Validación: WTForms para validación de formularios en backend
Decisiones Técnicas
- Elegí Flask con Blueprints para crear módulos independientes y escalables, facilitando el mantenimiento y testing
- Implementé SQLAlchemy como ORM para abstracción de base de datos y prevención de SQL injection
- Diseñé enumeraciones Python (UserRole, EstadoLote, TipoVenta, etc.) para garantizar consistencia de datos
- Creé decorador @require_role personalizado para control de acceso centralizado y reutilizable
- Utilicé Tailwind CSS con Flowbite para desarrollo rápido de UI consistente y responsiva
- Implementé sistema de auditoría con logging a archivo para trazabilidad de operaciones críticas
- Diseñé sistema de lotes tanto para insumos como producción para trazabilidad completa FIFO
- Agregué cálculos automáticos en modelos (costos, precios, inventarios) para evitar inconsistencias
Galería del Proyecto
Impacto y Resultados
- 10 módulos funcionales integrados (auth, ventas, producción, inventario, recetas, compras, proveedores, pedidos, clientes, usuarios)
- 4 tipos de roles con matriz de permisos granular
- 3 modalidades de venta con cálculo automático de precios
- 6 estados de producción con trazabilidad completa
- Sistema de alertas para caducidades y stock bajo
- Reportes visuales con Plotly (ventas, producción, inventario)
"El sistema nos permitió tener control total de la operación, desde la compra de harina hasta la venta de cada galleta. Redujimos las mermas significativamente gracias a las alertas de caducidad."
Lecciones Aprendidas
- 💡 La importancia de diseñar un esquema de base de datos robusto desde el inicio, especialmente las relaciones entre entidades
- 💡 Los Blueprints de Flask son excelentes para modularizar aplicaciones grandes y mantener código organizado
- 💡 El uso de enumeraciones previene errores de consistencia de datos y facilita validaciones
- 💡 Un sistema de roles bien diseñado desde el principio facilita el control de acceso sin complejidad adicional
- 💡 La auditoría mediante logs es crucial para debugging y trazabilidad en sistemas de negocio
- 💡 Los cálculos automáticos en modelos (properties/methods) mantienen la lógica centralizada y consistente
- 💡 El control de lotes con FIFO es fundamental para productos perecederos y trazabilidad
- 💡 Las validaciones en múltiples capas (frontend + backend + base de datos) garantizan integridad de datos