Websites & Web Apps
Custom marketing sites and web apps in React, Next.js, Vue, and Nuxt. Fast, accessible, SEO-ready, and easy for your team to update. The same stack I run for a 500+ person firm and my own SaaS products.
ExploreSenior full-stack engineer in Los Angeles. I build fast websites, lead-generation systems, and AI products — then stay on the hook for how they perform. 15 years of React · Next.js · Nuxt in production, and you work with me directly.
Editorial & post-production · New York
A video-first showcase for a New York post house: continuous-scroll reels, fast playback, and a CMS the team runs themselves.
Read the case studyIndependent snowboarding media
The home of an independent snowboarding magazine: video parts, features, the print magazine, and a shop, in an editorial layout built around the footage.
Read the case study
Real estate investment & development · San Francisco
A site for a San Francisco real estate developer that opens on the city itself: a full-bleed aerial film under one line, Projects With Impact.
Read the case study
Remembrance travel · Free public guide
A free guide to Canadian WW1 and WW2 cemeteries and memorials in Europe, with 21 downloadable self-guided itineraries and guides.
Read the case study
I work with founders, marketing teams, agencies, and creative studios — on a single build or as the senior engineer on your team. The deliverable isn't a pile of code. It's leads, conversion, uptime, and a system your next engineer can inherit.
Custom marketing sites and web apps in React, Next.js, Vue, and Nuxt. Fast, accessible, SEO-ready, and easy for your team to update. The same stack I run for a 500+ person firm and my own SaaS products.
ExploreLanding-page systems, conversational intake, UTM attribution, and A/B testing that tie ad spend to lead quality. The systems I run bring in thousands of leads a month across 50+ domains.
ExploreBuilt it fast with Cursor, Lovable, or Bolt, and it works — in the demo? I audit, harden, and take ownership of AI-built apps before they meet real traffic, real money, or a security review.
ExploreClaude and Gemini wired into real product flows: content generation, conversational intake, scoring, and recommendations. Shipped with evals, guardrails, and cost dashboards so it holds up in production.
ExploreStoryblok, Sanity, Contentful, and headless WordPress behind a fast frontend. Content models your editors understand, live preview, and pages marketing can ship without a dev ticket.
ExplorePre-rendered and edge-rendered builds, plus Core Web Vitals fixes for the site you already have. Sub-second loads, zero layout shift, INP under 200ms — because slow pages leak leads.
ExploreSchema, structured data, and Core Web Vitals built in from the first commit, plus optimization for Google AI Overviews, ChatGPT, and Perplexity citations. SEO that compounds because it's part of the engineering.
ExploreThe dashboards, Slackbots, and automations every team wants but never gets budget for. AI made small tools cheap to build; senior review makes them safe to rely on.
ExploreAI lets anyone get a demo running in a weekend — your team, a contractor, me included. What didn't shrink is the gap between a demo and a system that survives real traffic, a security review, and a year of changes. I use AI tooling where it saves time, so you get the speed. What you're paying for is fifteen years of knowing what to merge, what to kill, and what never to build.
Every ticket gets a one-page spec written in plain language: goal, constraints, affected areas, success criteria. The spec is the contract the work is measured against.
Work ships as small, reviewable changes, each with its own preview link. AI-assisted tooling handles the routine parts, which is where the speed comes from.
I read every PR before it merges. Architecture, security, performance budgets, data changes, API contracts. Speed is cheap now; I'm the quality bar and the accountability.
Typecheck, lint, Playwright on critical flows, Core Web Vitals budget, preview deploy. The bar to merge is the same it always was. Only the cost of getting there collapsed.
The tools are table stakes — anyone can rent them. The numbers above are outcomes, not output, because outcomes are what I sell. Want to see the judgment part up close? Book a call and I'll walk you through a real pull request, end to end.
No agency layers. No handoff drift. You work directly with the person writing the code, integrating the APIs, and keeping it running after launch.
A working session to map the problem. We pressure-test your goals against the real constraints — traffic, content cadence, team capacity, integrations — and you get a written scope with milestones, success metrics, and a clear recommendation.
The right stack for your team, not the trendy one. Next.js or Nuxt, headless CMS or static, edge or serverless. Every decision is written down with its trade-offs, so you and future engineers know why.
Two-week increments with a live preview link on every change, so you see progress as it lands — not at the end. Typed APIs, tested integrations, and automated tests on the flows that make you money.
Core Web Vitals budgets enforced on every change. WCAG 2.2 AA accessibility. Structured data, sitemap, and social cards checked per template. Analytics and conversion tracking wired before launch, not bolted on after.
Cutover with a rollback plan, real-user monitoring, and a dashboard for the numbers that matter. Then we iterate on what the data says, not what felt good in the meeting.
Most projects start with a free 30-minute call. Bring the problem; leave with a recommended approach and a rough estimate. No pitch deck.
Book a free 30-min callThirty minutes, your hardest problem on the table. Bring the site that isn't converting, the AI-built prototype that's starting to scare you, or the rebuild you keep putting off. You'll leave with a straight read on what it actually takes — and whether I'm the right person for it. No pitch deck. A Figma file, a Notion doc, or a complaint about your current stack is plenty.
Book a free 30-min callPrefer writing? Use the form. I reply within 24 hours.