Clocksiris engineering

Architecture, decisions, and practices supporting a local-first application for Windows and Android.

Engineering details

Clocksiris separates business rules, use cases, persistence, and presentation to maintain a clear, cross-platform foundation that is ready to evolve.

Technical overview

Architecture

Separated responsibilities

The design organizes the domain, use cases, persistence, and presentation with clear boundaries and dependencies directed toward business rules.

Clean ArchitectureCQRSVertical Slice ArchitectureMVVM

Platforms

One foundation for Windows and Android

The application shares most of its experience across desktop and mobile, adapting composition, density, and navigation to each environment.

.NET MAUIWindowsAndroid

Quality and continuity

Verifiable local operation

Rules and use cases are validated with automated tests, while local storage, backups, and restoration protect work continuity.

Unit TestingLocal StorageBackups

Architecture and boundaries

01

Cross-platform experience

The presentation layer brings together pages, navigation, and visual state for a consistent Windows and Android experience.

02

Use cases

Coordination of timers, entries, reports, exports, and backups keeps each flow focused on a product capability.

03

Domain and business rules

The model concentrates the rules for clients, projects, tasks, time, rates, billing, and settings.

04

Persistence and local services

The local database, files, exports, backups, and restoration support operations without moving information control to an external service.

Decisions and tradeoffs

DecisionReasonBenefitTradeoff and review
Local-first over cloudPrioritize autonomy, offline availability, and data control.Core tasks do not depend on an external service and information remains on the device.Automatic synchronization between devices is outside the MVP; review if a real collaboration or mobility need emerges.
SQLite and Entity Framework CoreUse an embedded database with a maintainable relational model.Operational simplicity, local consistency, and controlled evolution of the data model.The application must explicitly manage initialization, migrations, and file locations.
Explicit domain modelProtect concepts such as intervals, duration, rates, currency, and money.Important rules remain close to the business and do not become scattered across the interface or database.Requires more initial modeling; review the model as product boundaries change.
Rates and historyRetain the applied rate and estimated amount within each entry.History keeps its meaning even when later rates or settings change.Entries contain derived data; review the rules if more rate or currency types appear.
One MAUI foundation for two platformsShare most of the application between Windows and Android.A common visual and navigation foundation with adaptation for each device.Shared code must be balanced with differences in density, navigation, and interaction.

Technology stack

Application

Cross-platform foundation

C# and .NET 10 support the application, while .NET MAUI enables a shared experience across Windows and Android. Clean Architecture, CQRS, Vertical Slice Architecture, and MVVM organize responsibilities.

C#.NET 10.NET MAUIMVVM

Persistence

Organized local data

SQLite and Entity Framework Core provide embedded persistence and a data model that can evolve in a controlled way.

SQLiteEntity Framework Core

Experience

State and interaction

CommunityToolkit libraries support observable properties, view models, and shared interface utilities.

CommunityToolkit.MvvmCommunityToolkit.Maui

Export and quality

Verifiable results

ClosedXML enables Excel files, while the testing strategy uses xUnit, Moq, and Coverlet to validate the core layers.

ClosedXMLCSVExcelxUnitMoqCoverlet

Quality and operations

Business rules

Unit tests cover intervals, timer transitions, project and task relationships, rate resolution, billing, and settings.

Use cases

Coverage focuses on time tracking, history, clients, projects, tasks, dashboard, reports, exports, settings, and backups.

Current automated scope

The strategy uses xUnit, Moq, and Coverlet for unit tests across the domain and application layers. It does not include automated UI, integration, or end-to-end tests.

Want to return to the product narrative?