I set the foundation other people build on.

Five years of frontend work, mostly Vue 3 against Laravel APIs. Architecture, routing, design tokens, component patterns, and the API contract that decides how much of it you have to rewrite later.

Right now I'm the sole frontend developer on a SaaS product for automotive dealerships, where I also led the product design. Open to senior frontend roles.

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.

Role

UX Developer, sole frontend

Stack

Vue 3, TypeScript, Inertia.js, Tailwind, Laravel

Owned

Architecture, API specification, framework evaluation, product design

I wrote the API spec so both sides could build in parallel, then built against it. The contract was mine before the code was.

Case study 02 · Goodwill of Central & Northern Arizona

Moving a monolith to Vue without a rewrite

A PHP and jQuery frontend serving people looking for work. It couldn't go offline, and a full rewrite was never going to get approved.

Incremental, and reversible

Instead of one migration, I shipped modular Vue applications feature by feature, each with Vue Router, Pinia and a focused Laravel REST API behind it, released under feature flags. Two frontends ran side by side for most of that time. The cost was carrying both; what it bought was the ability to turn any piece back off in a minute.

8,000 lines of Sass

The stylesheet was why small changes broke unrelated pages. I refactored it into a modular design system with Design, which cut the CSS footprint substantially and made consistency the default instead of something to catch in review.

What shipped

The two biggest features were a YouTube learning portal serving around a thousand videos and a multistep intake flow, both delivered as full single-page experiences. I also inherited a broken Cypress setup, repaired it and built coverage across login, dashboard and the resume builder, and chased performance problems down into Eloquent relationships and Webpack bundle loading.

Result

I was promoted from Junior Developer about a year in. After a restructuring I took on release documentation and planning, and mentored teammates through whiteboarding, Notion docs and demos. Three years in, the migration had moved the parts of the app people used most off the monolith.

Role

Software Engineer, 2022-2025

Stack

Vue 2, Pinia, Vue Router, Sass, Laravel, MySQL, Cypress

Owned

Migration strategy, design system refactor, E2E coverage, mentoring

The two frontends had to coexist, so every feature shipped behind a flag and nothing was ever a one-way door.

Case study 03 · Somni

Personality as a spectrum, not multiple choice

An AI personality app that mixes psychology and mythology. Twenty quizzes answered on sliders instead of fixed options, combined into one mythic archetype: your essence, your challenges, your destiny, written back to you as a character.

Somni Dashboard

The generated archetype. Deep blues and purples, a night sky over mountains, gradients and motion. Mythic, but still an interface you can read.

Somni was something I wanted to exist, so I built it. I've always liked personality quizzes, but most of them feel binary.

Motivation

I wanted personality treated as a spectrum, where an answer can be a degree instead of an absolute, and then all of it combined into one archetype rather than a category. It was also how I learned NoSQL and worked out how to use AI for something other than a demo.

Approach

I started with the hardest problems: authentication, the database, the API connections. Once that held I mapped the whole flow on a whiteboard, and planned for scale early so new quizzes and archetypes could be added without rebuilding major parts of the app.

Design and experience

Somni had to be easy to use and still feel mythic. Dark palette, deep blues and purples, a night sky over mountains behind everything, and a lot of gradients and animation to give it depth.

Challenges and learnings

I changed my mind about the flow more than once mid-build, and that cost me time. Next time I'd settle the flow first and then build, rather than working both out at once. I'd also run user tests earlier, because watching someone use it would have answered questions I was guessing at.

The bigger problem was prompt engineering. Getting the model to produce the kind of response I wanted took a lot of trial and error, and I learned more about talking to an LLM from that than from anything else in the project.

Reflection

This is the first product I took from nothing to finished on my own. I learned Firebase properly, got better at structuring a frontend, and figured out how to bring AI into a project so it's actually useful rather than decoration.

It's live at somni.quest. Have a look and tell me what you think.

Role

Everything

Stack

Vue 3, TypeScript, Pinia, Vue Router, Firebase, Netlify Functions, Stripe, OpenAI API

Year

2025

Getting the model to answer the way I wanted was most of the work.

About

I started making Flash games with ActionScript when I was thirteen. My degree was in web design, but the program covered frontend, backend, and design together, which is roughly how I've worked since.

Most of my work is frontend engineering. I care about the structure underneath features, what the data contract says and where state lives, because that decides how much work every change costs later. I also care about the surface: the spacing, the loading states, the interaction that feels right instead of nearly right.

When a project needs it, I can work further upstream. I can sit in a design review, argue for a pattern, then be the person who implements it, which removes a whole class of handoff problem. I did both on the same project in my current role. I like problems that take time to think through. I show work early, while it's still cheap to change.

Outside of work I read about philosophy and psychology, hike, and meditate.

A.A.S. in Web Design, Mesa Community College. Based in Phoenix, AZ. Remote.

Frontend

Vue 2 & 3, Nuxt, TypeScript, JavaScript, Sass, Tailwind, Pinia, Vue Router

Backend & data

Laravel, Inertia.js, PHP, MySQL, Eloquent, REST API design

Tooling

Cypress, Jest, Vite, Webpack, Git, CI/CD, Figma