|
|
--- |
|
|
title: Makerpage |
|
|
emoji: 🛠️ |
|
|
colorFrom: blue |
|
|
colorTo: purple |
|
|
sdk: docker |
|
|
app_file: app/main.py |
|
|
pinned: false |
|
|
--- |
|
|
|
|
|
# 🛠️ Makerpage - Sistema de Gestión Maker Space |
|
|
|
|
|
Aplicación web para gestionar préstamos de herramientas y proyectos en un Maker Space, con integración de Telegram para notificaciones y aprobaciones. |
|
|
|
|
|
## 🌟 Características |
|
|
|
|
|
- 📝 **Registro y autenticación de usuarios** con aprobación por administrador |
|
|
- 🔐 **Recuperación de contraseña** vía email |
|
|
- 🛠️ **Sistema de préstamos** de herramientas y dispositivos |
|
|
- 📱 **Integración con Telegram** para notificaciones y aprobaciones en tiempo real |
|
|
- 📊 **Gestión de proyectos GitLab** |
|
|
- 💾 **Persistencia de datos** con Hugging Face Datasets |
|
|
|
|
|
## 🚀 Configuración |
|
|
|
|
|
### 1. Configurar Variables de Entorno |
|
|
|
|
|
En **Settings → Repository secrets**, configura las siguientes variables: |
|
|
|
|
|
#### Variables Obligatorias |
|
|
|
|
|
| Variable | Descripción | |
|
|
|----------|-------------| |
|
|
| `SECRET_KEY` | Clave secreta de Flask (genera con: `python3 -c "import secrets; print(secrets.token_hex(32))"`) | |
|
|
|
|
|
#### Variables para Persistencia (Hugging Face Datasets) |
|
|
|
|
|
| Variable | Descripción | |
|
|
|----------|-------------| |
|
|
| `HF_TOKEN` | Token de Hugging Face con permisos de escritura ([crear aquí](https://huggingface.co/settings/tokens)) | |
|
|
| `HF_DATASET_USERS` | Nombre del dataset para usuarios (ej: `tu-usuario/makerpage-users`) | |
|
|
| `HF_DATASET_LOANS` | Nombre del dataset para préstamos (ej: `tu-usuario/makerpage-loans`) | |
|
|
|
|
|
> **Nota:** Los datasets deben ser **privados** (contienen contraseñas hasheadas). Se crearán automáticamente al guardar el primer registro. |
|
|
|
|
|
#### Variables Opcionales (Funcionalidades Adicionales) |
|
|
|
|
|
| Variable | Descripción | |
|
|
|----------|-------------| |
|
|
| `TELEGRAM_TOKEN` | Token de tu bot de Telegram | |
|
|
| `TELEGRAM_CHAT_ID` | ID del chat para notificaciones | |
|
|
| `GOOGLE_PROXY_URL` | URL del proxy de Google Script | |
|
|
| `GITLAB_TOKEN` | Token de acceso personal de GitLab | |
|
|
| `GITLAB_GROUP_ID` | ID del grupo de GitLab | |
|
|
| `RESEND_API_KEY` | API key de Resend para emails | |
|
|
| `FROM_EMAIL` | Email remitente verificado en Resend | |
|
|
|
|
|
### 2. Desplegar |
|
|
|
|
|
El Space se desplegará automáticamente al hacer push al repositorio. |
|
|
|
|
|
## 💾 Persistencia de Datos |
|
|
|
|
|
La aplicación usa **Hugging Face Datasets** para almacenamiento persistente: |
|
|
|
|
|
- ✅ **Con HF_TOKEN configurado:** Los datos se guardan en datasets privados de HF y persisten permanentemente |
|
|
- ⚠️ **Sin HF_TOKEN:** Los datos se guardan localmente en `/app/data` (temporales, se pierden al reiniciar) |
|
|
|
|
|
**Recomendación:** Configura `HF_TOKEN`, `HF_DATASET_USERS` y `HF_DATASET_LOANS` para garantizar persistencia en producción. |
|
|
|
|
|
## 🔧 Tecnologías |
|
|
|
|
|
- **Backend:** Flask + Flask-SocketIO |
|
|
- **Autenticación:** Flask-Login |
|
|
- **Notificaciones:** Telegram Bot API |
|
|
- **Email:** Resend API |
|
|
- **Integración:** GitLab API |
|
|
- **Persistencia:** Hugging Face Datasets (con fallback a JSON local) |
|
|
- **Despliegue:** Docker + Gunicorn + Eventlet |
|
|
|
|
|
## 📝 Licencia |
|
|
|
|
|
Este proyecto es de código abierto. |
|
|
|