Aplicación completa desarrollada con Flask para gestionar fichajes de empleados, solicitudes de vacaciones y solicitudes de bajas médicas.
Versión actual: v0.5.0
- Sistema de fichaje (Entrada/Salida)
- Solicitud y aprobación de Vacaciones (descuentan días)
- Solicitud y aprobación de Bajas (no descuentan días)
- Sistema de roles (usuario, aprobador, admin)
- Notificaciones por email (simuladas en desarrollo)
- Cronograma de ausencias (Vacaciones y Bajas)
- Resúmenes de horas trabajadas (diario/semanal)
- Panel de administración completo (Gestión de usuarios, festivos, aprobadores)
- Cálculo automático de días laborables (descuenta festivos y fines de semana)
- Python 3.8+
- Flask
- Flask-SQLAlchemy
- Flask-Login
- Flask-Mail
- Flask-Dance
- Gunicorn (para producción)
-
Crear y activar un entorno virtual:
python -m venv venv source venv/bin/activate # En Windows: venv\Scripts\activate
-
Instalar dependencias:
pip install -r requirements.txt
-
Ejecutar la aplicación:
flask run --debug
La aplicación estará disponible en
http://localhost:5000.
-
Asegúrate de tener Docker y Docker Compose instalados.
-
Construye y levanta el contenedor:
docker-compose up --build
-
La aplicación estará disponible en
http://localhost:5000. La base de datos (fichaje.db) se guardará en un volumen de Docker llamadofichador_web_db_datapara persistir los datos.
Al iniciar por primera vez, se crea automáticamente un usuario administrador:
- Email:
admin@example.com - Contraseña:
admin123
-
Configura las credenciales de Google OAuth en el archivo
.env:GOOGLE_CLIENT_ID=your_client_id GOOGLE_CLIENT_SECRET=your_client_secret
-
En la consola de Google Cloud Platform (https://console.cloud.google.com/):
- Ve a "APIs & Services" → "Credentials"
- Ve a tu OAuth 2.0 Client ID
- En "Authorized redirect URIs", añade: http://127.0.0.1:5000/login/google/authorized http://localhost:5000/login/google/authorized
- Guarda los cambios
-
Reinicia tu servidor Flask después de hacer cambios en
.env
La aplicación puede sincronizar automáticamente las vacaciones y bajas aprobadas a un calendario compartido de Google visible por todos los empleados.
Opción A: Service Account (Producción)
- Crea un Service Account en Google Cloud Console
- Descarga las credenciales JSON →
service-account.json - Crea un calendario compartido en Google Calendar
- Comparte el calendario con el service account (permisos: "Hacer cambios")
- Configura en
.env:GOOGLE_CALENDAR_ID=abc123@group.calendar.google.com GOOGLE_SERVICE_ACCOUNT_FILE=service-account.json
Opción B: OAuth Usuario Admin (Desarrollo)
- Habilita Calendar API en Google Cloud Console
- Crea credenciales OAuth →
credentials.json - Ejecuta:
python scripts/authenticate_calendar.py - Configura en
.env:GOOGLE_CALENDAR_ID=abc123@group.calendar.google.com
Ver documentación completa: docs/GOOGLE_CALENDAR_SETUP.md