File size: 3,058 Bytes
33ea8ba
 
 
 
 
 
 
 
 
 
d058982
 
 
 
 
 
 
 
 
 
 
1ac174c
d058982
33ea8ba
d058982
1ac174c
d058982
1ac174c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d058982
 
 
4762ecd
d058982
 
 
 
 
 
 
1ac174c
 
 
 
 
 
 
d058982
1ac174c
 
d058982
1ac174c
d058982
 
 
 
 
 
 
 
1ac174c
d058982
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
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.