ManLanC
En desarrollo

ControlHorario

Un fichaje de entrada y salida parece el ejercicio de programación más aburrido posible. Lo es, durante los primeros veinte minutos. Luego llega el primer caso real que no habías previsto, y otro, y otro.

React NativeExpoTypeScriptSQLite

¿Qué pasa si trabajas para dos empresas y sus horarios se pisan?

No es un caso raro: mucha gente compagina un contrato a media jornada con otro. Si ControlHorario solo supiera sumar horas por empresa por separado, dos turnos solapados en el mismo tramo pasarían desapercibidos hasta la nómina.

Tiene su propio aviso de solape, distinto del aviso genérico de "mes cerrado o días pendientes" — necesitaba distinguirse visualmente de un aviso de estado normal para que no se perdiera entre los demás.

Pantalla de gestión de empresas, con una activa y otra pausada

¿Y si el mes cierra con días todavía sin fichar?

El resumen mensual no puede simplemente sumar lo que hay y callarse lo que falta. Un mes con días pendientes de validar necesita decirlo con claridad — de lo contrario, un cálculo de nómina se basaría en datos incompletos sin que nadie lo notara.

Resumen mensual con horas totales y días sin validar señalados

¿Qué pasa si marco diez días de vacaciones de golpe y ya había horas fichadas ahí?

Seleccionar un rango de fechas de una vez es cómodo. También es la forma más rápida de sobrescribir sin darte cuenta horas que ya estaban fichadas, o un tipo de día que ya tenía otro significado.

La ventana de selección de rango avisa explícitamente del conflicto antes de aplicar el cambio — no deja que el "de golpe" se coma lo que ya había.

Calendario mensual con horas propuestas y reales por día, y un día marcado como vacaciones

¿Qué pasa si falla la sincronización del backup y no te enteras?

La primera versión tenía un catch que se tragaba el error sin más. Si la copia de seguridad fallaba, la app se quedaba tan tranquila — y el usuario, sin saber que sus datos llevaban una semana sin respaldo.

Corregido: el catch ahora registra el fallo y lo refleja en el propio dashboard (mensajeSync). — 2026-08-21

Dashboard de ControlHorario con el resumen del mes: horas extra, días trabajados y accesos para fichar y ver el calendario

¿Y si la app se rompe nada más abrirla?

La primera versión no tenía ningún try/catch en el arranque. Cualquier fallo — uno solo, en cualquier parte de la inicialización — dejaba la app en una pantalla blanca, sin ningún mensaje, sin ninguna salida.

Corregido: try/catch/finally + pantalla de error dedicada, con la causa categorizada y hasta tres salidas distintas. — 2026-08-21

Formulario de edición de un día en ControlHorario

401 tests cubren esto hoy, y el motor de cálculo (core/) vive separado de la interfaz para poder reutilizarlo en otra app futura sin arrastrar pantallas. Ninguno de los casos de arriba se descubrió pensándolo desde el escritorio — todos salieron de usarlo, de auditarlo, o de que alguien real lo rompiera primero.

Estado real

v1.0.0, pendiente de tramitación en Play Store: Data Safety, clasificación de contenido y el listing, nada de lo cual cuesta o es irreversible — solo falta redactarlo. El inicio de sesión con Google sigue en modo de pruebas hasta que la política de privacidad quede publicada.

Lo que queda no es código: es papeleo de tienda de aplicaciones. Curiosamente, ha sido más lento de resolver que cualquiera de los problemas de arriba.

Si te ha pasado algo parecido tramitando una app, o simplemente quieres comparar cicatrices: mlandeira72@yahoo.com.