Case study 01 · A SaaS product for automotive dealerships
A new app on a backend I inherited
The new product had to work with a legacy backend that was staying. I joined as the only frontend developer, before any of the new app existed.
Framework choice
I evaluated five frontend and five backend frameworks on six criteria: velocity, maintainability, ecosystem maturity, team familiarity, learning curve, and the constraints we already had. React was on the table. I argued for Vue instead. React experience on the team was thin, the timeline left no room for a learning curve, and Vue matched what we already knew. We built on Vue.
An offer builder that renders itself
The old system re-rendered a page per step. Its form inputs were scattered: some defined in the database, some in the HTML, some in jQuery. It barely used APIs at all. The new one had to feel like a SPA, which meant a frontend built from scratch and a backend that served data instead of pages.
So I built the form to render itself. Five to ten steps, each one shaped by flags set for that user: location, compliance, and a lot more, all resolved before the form even opens. The backend sends the structure and the constraints. The frontend builds the inputs from it at runtime: text, number, price, percentage, select, checkbox, radio, and textarea. Validation rules come down as part of the same JSON.
Writing the contract first
I helped architect the new API layer, and I wrote the specification for the parts I owned: endpoints, request and response shapes, and where frontend responsibility ends and backend begins. Then I mocked the data shapes so both sides could build in parallel.
The backend team was discovering what the old system would and wouldn't let them do while we were already building. Shapes changed, sometimes the day before a deadline. I kept a thin layer between the API and the components to reshape responses, which wasn't fun to maintain but meant each change landed in one place instead of across every component that touched that data.
Result
The frontend foundation is mine: routing, global styling, design tokens, responsive navigation, and the component patterns the rest of the team works inside. I also led the product design with a VP and the product owner, delivering wireframes, mockups and prototypes, which meant implementation questions got settled during design instead of coming back later as rework.