Ingeniería de Clocksiris

Arquitectura, decisiones y prácticas que sostienen una aplicación local-first para Windows y Android.

Detalles de ingeniería

Clocksiris separa las reglas de negocio, los casos de uso, la persistencia y la presentación para mantener una base clara, multiplataforma y preparada para evolucionar.

Resumen técnico

Arquitectura

Responsabilidades separadas

El diseño organiza el dominio, los casos de uso, la persistencia y la presentación con límites claros y dependencias dirigidas hacia las reglas del negocio.

Clean ArchitectureCQRSVertical Slice ArchitectureMVVM

Plataformas

Una base para Windows y Android

La aplicación comparte la mayor parte de su experiencia entre escritorio y dispositivos móviles, adaptando composición, densidad y navegación a cada entorno.

.NET MAUIWindowsAndroid

Calidad y continuidad

Una operación local verificable

Las reglas y los casos de uso se validan con pruebas automatizadas, mientras el almacenamiento local, los backups y la restauración protegen la continuidad del trabajo.

Unit TestingLocal StorageBackups

Arquitectura y límites

01

Experiencia multiplataforma

La presentación reúne páginas, navegación y estado visual para ofrecer una experiencia coherente en Windows y Android.

02

Casos de uso

La coordinación de temporizadores, entradas, reportes, exportaciones y backups mantiene cada flujo enfocado en una capacidad del producto.

03

Dominio y reglas de negocio

El modelo concentra las reglas de clientes, proyectos, tareas, tiempo, tarifas, facturación y configuración.

04

Persistencia y servicios locales

La base de datos local, los archivos, las exportaciones, los backups y la restauración sostienen la operación sin trasladar el control de la información a un servicio externo.

Decisiones y tradeoffs

DecisiónMotivoBeneficioTradeoff y revisión
Local-first frente a nubePriorizar autonomía, disponibilidad sin red y control de los datos.Las tareas principales no dependen de un servicio externo y la información permanece en el dispositivo.La sincronización automática entre dispositivos no forma parte del MVP; revisar si aparece una necesidad real de colaboración o movilidad.
SQLite y Entity Framework CoreUsar una base embebida con un modelo relacional mantenible.Simplicidad operativa, consistencia local y una evolución ordenada del modelo de datos.La aplicación debe gestionar explícitamente la inicialización, las migraciones y la ubicación de los archivos.
Modelo de dominio explícitoProteger conceptos como intervalos, duración, tarifas, moneda y dinero.Las reglas importantes permanecen cerca del negocio y no se dispersan en la interfaz o la base de datos.Requiere más modelado inicial; revisar el modelo cuando cambien los límites del producto.
Tarifas e historialConservar la tarifa aplicada y el importe estimado dentro de cada registro.El historial mantiene su significado aunque cambien las tarifas o los ajustes posteriores.Los registros contienen datos derivados; revisar las reglas si aparecen más tipos de tarifa o moneda.
Una base MAUI para dos plataformasCompartir la mayor parte de la aplicación entre Windows y Android.Una base visual y de navegación común con adaptación a cada dispositivo.Hay que equilibrar el código compartido con las diferencias de densidad, navegación e interacción.

Stack tecnológico

Aplicación

Base multiplataforma

C# y .NET 10 sostienen la aplicación, mientras .NET MAUI permite compartir la experiencia entre Windows y Android. Clean Architecture, CQRS, Vertical Slice Architecture y MVVM organizan las responsabilidades.

C#.NET 10.NET MAUIMVVM

Persistencia

Datos locales organizados

SQLite y Entity Framework Core proporcionan persistencia embebida y un modelo de datos que puede evolucionar de forma controlada.

SQLiteEntity Framework Core

Experiencia

Estado e interacción

Las librerías de CommunityToolkit apoyan propiedades observables, view models y utilidades compartidas de la interfaz.

CommunityToolkit.MvvmCommunityToolkit.Maui

Exportación y calidad

Resultados verificables

ClosedXML permite generar archivos Excel y la estrategia de pruebas utiliza xUnit, Moq y Coverlet para validar las capas core.

ClosedXMLCSVExcelxUnitMoqCoverlet

Calidad y operación

Reglas de negocio

Las pruebas unitarias cubren intervalos, transiciones del temporizador, relaciones entre proyectos y tareas, resolución de tarifas, facturación y configuración.

Casos de uso

La cobertura se concentra en registro de tiempo, historial, clientes, proyectos, tareas, dashboard, reportes, exportaciones, ajustes y backups.

Alcance automatizado actual

La estrategia utiliza xUnit, Moq y Coverlet para pruebas unitarias de las capas de dominio y aplicación. No incluye pruebas automatizadas de UI, integración o end-to-end.

¿Quieres volver a la narrativa del producto?