Mi Jornada
Aplicación web para registrar jornadas laborales y saber en todo momento cuántas horas se han trabajado y cuánto dinero se ha generado.
Objetivo
Registrar jornadas laborales y calcular automáticamente la duración trabajada y el importe de cada registro.
Problema que resuelve
Llevar la cuenta de horas y sueldo a mano (papel, notas u hojas de cálculo) es lento y propenso a errores, sobre todo con horarios partidos, pausas para comer o varios lugares de trabajo.
Diagrama de arquitectura
- NavegadorVue 3 + Vite · aplicación de una página
- Django + DRFAPI REST · asistente de IA con Gemini
- PostgreSQLSupabase · esquema y rol propios
Funcionalidades
- Inicio de sesión con email; la sesión se mantiene al recargar.
- Fichar la jornada con la hora exacta, con pausa de comida y opción de descartarla; si cruza la medianoche se pide revisarla.
- Registros con fecha, entrada, salida, lugar, descripción y descanso de comida; duración e importe calculados automáticamente, conservando el sueldo por hora de cada registro.
- Validación de horarios (la salida debe ser posterior a la entrada).
- Formulario corto con Hoy/Ayer, lugares sugeridos, repetir el último día y duplicar un día.
- Listado filtrable por mes y lugar, con exportación a CSV compatible con Excel en castellano.
- Calendario mensual con las horas de cada día.
- Estadísticas del mes: horas, importe, media diaria, gráfico por día y horas por lugar.
- Asistente "Escríbelo o díctalo" con IA que convierte frases como «ayer de 8 a 14 y de 16 a 19 en la obra» en registros; no guarda nada hasta que el usuario confirma.
- Recuperación de contraseña por email.
- Modo claro y oscuro; diseño para móvil y escritorio.
- Panel de administración con el sueldo por hora de cada usuario.
- Cuenta de demostración pública con datos ficticios que se regeneran solos.
Retos técnicos
- 01Django y Vue en VercelEl frontend se compila y Django lo sirve como archivos estáticos dentro de una Vercel Function.
- 02Conexiones agotadas en producciónEl pooler de Supabase admite 15 clientes y las conexiones persistentes lo llenaban; se resolvió cerrando la conexión en cada petición y liberándola mientras la IA responde.
- 03Fichar con fiabilidadZona horaria de Madrid, como máximo una jornada activa por usuario y tratamiento de las jornadas que cruzan la medianoche.
- 04IA útil con un plan gratuitoSalida estructurada validada en el servidor, confirmación obligatoria, modelos de reserva si el principal está saturado y límite de usos diario.
Estado actual
En producción. En septiembre de 2026 se migró de PythonAnywhere a Vercel y Supabase. El backend cuenta con 22 pruebas automáticas. No tiene registro público, pero se puede probar con una cuenta de demostración con datos ficticios que se reinicia sola.
Mejoras futuras
- Registro público para que cualquiera pueda crear su propia cuenta.
- Que cada usuario pueda cambiar su sueldo por hora desde su perfil.
Artículos relacionados
11 min de lecturaDespliegue
De PythonAnywhere a Vercel y Supabase con una app Django, paso a paso
Cómo migré Mi Jornada (Django + Vue) a Vercel y Supabase, con todos los errores que me salieron por el camino (requirements en UTF-16, 500 en el primer arranque, conexiones agotadas, Gmail rechazando la contraseña) y cómo arreglé cada uno.
Leer artículo