Horas — Time Tracking System
Horas is a time management application designed to support how an organisation actually runs. Schedules, clock entries, absences and activity tracking all come together in one place, with a clear distinction between what employees need and what managers need.
But behind that apparent simplicity lies a more interesting challenge: how do you design a tool flexible enough to adapt to the different realities of a company, while keeping it simple to use and reliable day to day?
It is around that question that Horas was designed.

A time management system designed to represent the real constraints of an organisation.
Horas lets employees clock in, check their schedule and manage their absences, while managers steer their teams, their schedules and their indicators.
What the project mostly led me to solve was one question: how do you represent enough business situations without turning the backend into a pile of special cases?
- My role
- Backend — design & implementation
- Team
- 4 developers
- Stack
- TypeScript · Express · Prisma · PostgreSQL
- Frontend
- UI contribution & integration
- Context
- Epitech · IT Architect track
What I set out to solve
Understanding the need
Translating business needs into a structure flexible enough to represent real-world situations.
Preserving consistency
Guaranteeing consistent logic across the different business concepts, from how clock entries work through to managing rights and role-based permissions.
Scalability
Designing an architecture and systems that stay scalable and maintainable throughout the development cycle.
The technical point that interested me most
How do you evolve several layers of a backend without copying the same structures everywhere?
Horas uses a hierarchy of types and typed projections, all of them dependent on the Domain layer, to surface those inconsistencies to the compiler.
- One change
- Targeted errors
- No silent drift