ServPrepper es una aplicación web desarrollada en Python con Flask que permite gestionar inventarios físicos, subir documentos clasificados por categoría/subcategoría/ubicación, y exportar datos a PDF. Está diseñada para funcionar en entornos sin conexión o en contextos tácticos, como talleres, almacenes, bases de operaciones o situaciones prepper.
- ✅ Gestión de objetos por categoría, subcategoría y ubicación
- ✅ Subida y visualización de documentos (PDF, JPG, PNG, etc.)
- ✅ Filtros y búsqueda avanzada para los documentos
- ✅ Exportación del inventario filtrado a PDF
- ✅ Visualización de estado de caducidad: por caducar (naranja) y caducado (rojo)
- ✅ Alternancia entre vista por categoría y vista por ubicación
- ✅ Sistema de autenticación de usuarios (registro, login, logout)
- ✅ Interfaz simple, intuitiva y responsiva
serv_prepper/
├── app.py # Lógica principal con Flask
├── data.json # Inventario (estructura por categoría y objetos)
├── usuarios.json # Base de usuarios registrados
├── requirements.txt # Dependencias
├── README.md # Este documento
├── templates/ # HTML con Jinja2
│ ├── base.html
│ ├── index.html
│ ├── agregar.html
│ ├── editar.html
│ ├── ver.html
│ ├── login.html
│ ├── registro.html
│ └── exportar_inventario.html
├── static/
│ └── estilos.css # Estilos generales
└── venv_prepper/ # Entorno virtual (ignorado por Git)
git clone https://github.com/EXTRANFUNEDGAR/serv_prepper.git
cd serv_prepper
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install -r requirements.txt
Antes de ejecutar por primera vez, crea los siguientes archivos vacíos:
touch inventario.json usuarios.json documentos.json
python app.py
Luego accede en tu navegador a:
📡 http://127.0.0.1:5001
- Python 3.10 o superior
- Flask
- reportlab
Instálalos automáticamente con:
pip install -r requirements.txt
- Contraseñas cifradas con
werkzeug.security
- Registro y autenticación de usuarios
- Rutas protegidas con sesión de Flask
Los objetos del inventario incluyen:
- Nombre
- Cantidad y unidad
- Categoría y subcategoría
- Ubicación física
- Fecha de caducidad
- Notas
- Extras personalizables (clave: valor)
Los objetos se agrupan dinámicamente por categoría/subcategoría o por ubicación, y su estado de caducidad se evalúa automáticamente.
Desde la vista /inventario/exportar
puedes:
- Seleccionar filtros por categoría, subcategoría y ubicación
- Generar un PDF con los objetos que cumplan los filtros
- Ver la fecha de generación
- Ver conteo total de objetos exportados
- Registro de usuarios en
/registro
- Inicio de sesión en
/login
- Cierre de sesión en
/logout
- Solo usuarios autenticados pueden acceder al sistema
- Flask - backend web
- Jinja2 - plantillas HTML dinámicas
- ReportLab - generación de PDF
- HTML/CSS/JS - frontend
- JSON - base de datos local (sin SQL)
Edgar Delgado
Desarrollador full-stack | Entusiasta de la radiofrecuencia, la seguridad y los sistemas offline.
🔗 GitHub: https://github.com/EXTRANFUNEDGAR