Interface Engineering
React and TypeScript applications built to survive their second year: predictable state, honest component APIs, and tests that fail for real reasons.
Web DeveloperSince 2019
Interfaces that are fast, accessible and quietly exact.
Most of what makes an interface good is invisible: the request that never fires, the layout that never shifts, the focus ring that lands exactly where your hand expects it. I spend my time there. The visible part — the type, the motion, the restraint — is what is left once the invisible part is right.
React and TypeScript applications built to survive their second year: predictable state, honest component APIs, and tests that fail for real reasons.
Scroll choreography, page transitions and micro-interaction detail — implemented on transform and opacity only, so the frame budget stays intact.
Core Web Vitals treated as a design constraint from the first commit. Bundle budgets, font subsetting, image pipelines, and real-device profiling.
WCAG 2.2 AA as a floor, not a target. Keyboard-first flows, sensible focus order, screen-reader passes, and reduced-motion paths that are genuinely equivalent.
Token architecture, component documentation and the governance around it — the part that decides whether a system is used or quietly abandoned.
Vite build pipelines, CI that catches regressions before review, and deployments boring enough to run on a Friday afternoon.
Good software feels like nothing at all. That absence is the whole craft.
I am a web developer based in Zagreb, working with studios, cultural institutions and product teams who care how a thing is made. Seven years in, mostly front-end, increasingly the parts of the back-end that decide whether the front-end can be fast.
I like briefs with a real constraint in them — a museum tablet from 2014, an editor who ships at midnight, a warehouse with no signal. Constraints are where the interesting decisions live.
Open to studio collaborations, product work and the occasional rescue job.