Sistema web desarrollado en Flask para el registro, seguimiento y análisis de producción de azúcar en las plantas industriales de Palmira y Buga del Ingenio Manuelito.
- Características
- Tecnologías
- Instalación
- Uso
- Estructura del Proyecto
- Capturas de Pantalla
- API y Endpoints
- Configuración
- Despliegue
- Contribuir
- Licencia
- 📝 Registro de Producción: Captura de datos por planta, turno y tipo de azúcar
- 📊 Reportes Detallados: Visualización completa de la producción del día
- 💰 Cálculos Automáticos: Estimación de recursos y costos en tiempo real
- 🔢 Matrices NumPy: Procesamiento eficiente de datos multidimensionales
- 🎨 Interfaz Moderna: Diseño responsivo y fácil de usar
- 💾 Persistencia de Sesión: Los datos se mantienen durante la sesión activa
- ⚡ Validación de Datos: Validación en cliente y servidor
- 🖨️ Reportes Imprimibles: Formato optimizado para impresión
| Categoría | Opciones |
|---|---|
| Plantas | Palmira, Buga |
| Turnos | Mañana, Tarde |
| Tipos de Azúcar | Cruda, Blanca, Orgánica |
- Caña de azúcar necesaria: 10 toneladas de caña por tonelada de azúcar producida
- Costo por tonelada de caña: $180,000 COP
- Totales por: Planta, turno, tipo de azúcar
- Producción total del día
- Flask 3.0.0 - Framework web minimalista y poderoso
- NumPy 1.26.2 - Procesamiento numérico y matrices
- Werkzeug 3.0.1 - Utilidades WSGI
- Python-dotenv 1.0.0 - Gestión de variables de entorno
- HTML5 - Estructura semántica
- CSS3 - Estilos modernos con gradientes y animaciones
- JavaScript Vanilla - Validaciones del lado del cliente
- Jinja2 - Motor de plantillas
- Gunicorn 21.2.0 - Servidor WSGI para producción
- Python 3.8 o superior
- pip (gestor de paquetes de Python)
- Git
git clone https://github.com/smarinx15/ingenio-manuelito.git
cd ingenio-manuelitoWindows:
python -m venv venv
venv\Scripts\activateLinux/Mac:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCrea un archivo .env en la raíz del proyecto:
SECRET_KEY=tu-clave-secreta-super-segura-aqui
DEBUG=True
PORT=5000
⚠️ Importante: Genera una clave secreta segura. Puedes usar:
python -c "import secrets; print(secrets.token_hex(32))"python app.pyVisita: http://localhost:5000
- Selecciona la planta de producción (Palmira o Buga)
- Elige el turno (Mañana o Tarde)
- Selecciona el tipo de azúcar (Cruda, Blanca u Orgánica)
- Ingresa la cantidad en toneladas (ej: 25.5)
- Haz clic en "Registrar Producción"
Haz clic en "Ver Reporte Completo" para visualizar:
- ✅ Producción total del día
- 📍 Producción por planta
- 🍬 Producción por tipo de azúcar
- ⏰ Producción por turno
- 🌾 Caña de azúcar necesaria
- 💰 Costo total estimado
- 📋 Matriz completa de producción
Desde la vista de reportes, haz clic en "Imprimir Reporte" para generar una versión lista para impresión.
Para reiniciar el sistema y borrar todos los registros, usa el botón "Limpiar Datos".
ingenio-manuelito/
│
├── 📄 app.py # Aplicación principal Flask
├── 📄 requirements.txt # Dependencias del proyecto
├── 📄 .env # Variables de entorno (NO incluido en Git)
├── 📄 .gitignore # Archivos ignorados por Git
├── 📄 README.md # Este archivo
│
├── 📁 templates/ # Plantillas HTML
│ ├── base.html # Plantilla base con estilos globales
│ ├── index.html # Formulario de registro
│ ├── reporte.html # Vista de reportes
│ ├── 404.html # Página de error 404
│ └── 500.html # Página de error 500
│
├── 📁 static/ # Archivos estáticos (si se agregan)
│ ├── css/ # Hojas de estilo
│ ├── js/ # Scripts JavaScript
│ └── img/ # Imágenes
│
└── 📁 venv/ # Entorno virtual (NO incluido en Git)
Interfaz intuitiva para registrar la producción
Vista detallada con todos los cálculos y totales
Diseño responsivo para tablets y smartphones
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/ |
Página principal con formulario de registro |
POST |
/registrar |
Procesa el registro de producción |
GET |
/reporte |
Muestra el reporte completo de producción |
GET |
/limpiar |
Limpia todos los datos de la sesión |
La aplicación utiliza una matriz NumPy 3D con las siguientes dimensiones:
matriz[planta][turno][tipo]
# Dimensiones: (2, 2, 3)
# - 2 plantas: Palmira (0), Buga (1)
# - 2 turnos: Mañana (0), Tarde (1)
# - 3 tipos: Cruda (0), Blanca (1), Orgánica (2)| Variable | Descripción | Valor por Defecto |
|---|---|---|
SECRET_KEY |
Clave secreta para sesiones Flask | dev-secret-key-change-in-production |
DEBUG |
Modo de depuración | False |
PORT |
Puerto del servidor | 5000 |
SECRET_KEY=desarrollo-no-usar-en-produccion
DEBUG=True
PORT=5000SECRET_KEY=clave-super-secura-generada-aleatoriamente
DEBUG=False
PORT=8000gunicorn app:app --bind 0.0.0.0:8000 --workers 4- Crear archivo
Procfile:
web: gunicorn app:app
- Desplegar:
heroku create ingenio-manuelito
git push heroku main
heroku config:set SECRET_KEY=tu-clave-secreta- Sube los archivos al servidor
- Crea un entorno virtual
- Instala las dependencias
- Configura WSGI con Flask
- Conecta tu repositorio de GitHub
- Configura las variables de entorno
- Render detectará automáticamente Flask
¡Las contribuciones son bienvenidas! Si deseas mejorar este proyecto:
- Fork el proyecto
- Crea una rama para tu feature:
git checkout -b feature/AmazingFeature
- Commit tus cambios:
git commit -m 'Add: Nueva funcionalidad increíble' - Push a la rama:
git push origin feature/AmazingFeature
- Abre un Pull Request
- Usa docstrings en español para funciones
- Sigue PEP 8 para el código Python
- Comenta código complejo
- Escribe mensajes de commit descriptivos
Si encuentras un error, por favor abre un Issue con:
- Descripción del problema
- Pasos para reproducirlo
- Comportamiento esperado vs actual
- Capturas de pantalla (si aplica)
Para ejecutar las pruebas (cuando se implementen):
python -m pytest tests/- Base de datos persistente (SQLite/PostgreSQL)
- Autenticación de usuarios
- Exportación a Excel y PDF
- Gráficos interactivos con Chart.js
- Historial de producción por fechas
- Dashboard administrativo
- API RESTful
- Tests unitarios y de integración
- Modo oscuro
- ✅ Variables sensibles en
.env(no versionado) - ✅ Secret key para sesiones seguras
- ✅ Validación de entrada en cliente y servidor
- ✅ Manejo robusto de errores
- ✅ Sin exposición de información sensible
- Usar HTTPS
- Implementar rate limiting
- Agregar autenticación y autorización
- Sanitizar inputs adicionales
- Usar base de datos en lugar de sesiones
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
MIT License
Copyright (c) 2025 Ingenio Manuelito
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
Santiago Marín
- GitHub: @smarinx15
- Proyecto: ingenio-manuelito
- Flask por su simplicidad y elegancia
- NumPy por el procesamiento numérico eficiente
- La comunidad de Python por las excelentes herramientas
Si tienes preguntas o necesitas ayuda:
- 📧 Abre un Issue
- 💬 Inicia una Discussion
⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub ⭐
Made with ❤️ and ☕ in Colombia