Ekkinox


Context
Custom business tool for construction-site financial tracking, started as an internal Patriarche product then turned into a white-label version with a SaaS path ahead. I was senior front-end and front lead for 18 months, on a team of 2 front, 2 back, 1 PM and 1 designer.
My approach
We started out wanting a modular setup, but the domain turned out too interconnected for that, so we went with a domain-oriented organization structured around interfaces. That split follows the UX designer's mental model and how people actually use the tool. We ran business workshops for every feature, iterated fast, and did regular client demos. We adjusted often, sometimes heavily, without ever losing the overall coherence.
- Domain-oriented front-end architecture built to last 18 months of delivery, split by interfaces aligned with UX flows rather than by file type. No components/utils/views folder ballooning out of control.
- Tailor-made business views: financial tables, custom behavior per module, and an in-house design system built alongside the product to stay coherent as features piled up.
- Recurring user workshops and client demos at every milestone. Learning construction-site finance on the job became part of the role, not a side concern.
Stack & technical choices
Vue + TypeScript and Pinia on the front, with an in-house design system built in parallel with the product. NestJS on the back, full TypeScript end to end. Front-end architecture was the structuring topic: a strict domain split wouldn't have held since everything is linked, so we went for an interface-based split that maps to the business and how people actually use it.
Outcome & takeaways
18 months on the project, from day one through the move to a white-label version, with a front-end architecture that never had to be rewritten along the way. On a personal level, this was my first real front-lead role over the long haul: a chance to lay foundations that hold, push back on the PM when it mattered, and learn a domain (construction-site finance) deep enough to talk to users without hand-waving.