ABOUT

Ten products, one person.

I’m Jerrick Hakim — a self-taught engineer and founder in Rockland, Maine. Since 2018 I’ve built and shipped 10 products on my own: web apps, iOS apps, APIs, payment systems, and the infrastructure under all of it. That arithmetic only works if you stop rebuilding the same things.

Jerrick Hakim

Nearly every product I’ve built needed the same foundation: accounts, teams, invitations, roles, billing, transactional email. I wrote that from scratch about ten times — a slightly different version in every product, each with its own bugs. Eventually I stopped and pulled it out into something shared.

@jerrick/workspaces is a multi-tenant application SDK: accounts, workspaces, members, invitations, permissions, Firestore rules, Stripe plans. @jerrick/ui is a 62-component design system that inherits the theme of whichever app installs it. Four products run on them today; a fix to invitations ships to all four at once. The rest are still being moved over, one at a time.

Right now

I’m rewriting and migrating the older products onto that foundation, and I’m doing it inside RepoGo — my own tool. Workspaces switch in a tap, dev servers spin up on their own, and Claude Code, Codex and Cursor all run from one place, so a project I haven’t opened in a year is running again in seconds.

Using it across my own products is the fastest way to find everything wrong with it.

How I work

That’s the whole method, really: abstractions have to be earned. Nothing moves into a shared package until a second product genuinely needs it, because the version I’d have designed up front would have been wrong. Ten imperfect copies taught me what the real interface was.

Migrating onto it is deliberately slow. Each app dual-writes the new shape alongside its legacy one, and the old fields don’t get dropped until every read has moved. It means living with duplication for a while, and one product may never be worth converting at all — hand-rolled code that works isn’t an emergency.

The same instinct shows up in what I depend on. Data, auth and email sit behind adapters, because the substrate should be replaceable — Firebase today, Postgres or Convex when the economics change. I’d rather own the thin coordination layer than be locked into someone’s platform.

What that looks like

  • RepoGoMobile AI

    Coding agents that run against your real machine, driven from an iPhone. A Go transport spine over persistent TLS connections, a Swift menu-bar host on macOS, TypeScript agents, and a protobuf wire contract tested against golden fixtures. One interface for Claude Code, Cursor, Copilot and Codex. Agents execute on the user's own machine or their own cloud, and BYOK keeps model billing on their provider account.

  • ClipReplyVideo

    Interactive branching video with thirteen step types, embeddable as a player or a widget, served through signed CloudFront URLs. It's also where the shared SDK is authored and shipped from.

  • VenueRunCommerce

    Commerce for restaurants and venues: Stripe Terminal tap-to-pay, NFC tags, two tenant models. About 1,700 commits across nine repositories.

  • BopprNetworking

    NFC business cards with Apple Wallet passes and real-time profile sync, decomposed from a Firebase monolith into web, API and Expo apps.

  • app.tlDeveloper tools

    Permanent short links, branded handles, custom domains, a scoped API. It exists because I was fairly sure I had the domain sitting unused — and because a link shortener was the right size to be the workspaces SDK's first real test: small enough to finish, real enough to prove the foundation held when starting from zero.

Background

I studied criminal justice in Wisconsin for sixty credits before changing direction and teaching myself to build software. Nobody reviewed my early code, which meant every security mistake, every schema that didn’t survive contact with real data, and every badly timed migration was mine to find and fix. It’s still the most useful education I’ve had.

I write about that at /blog: 28 essays on migrations, architecture decisions, and the parts that only make sense in hindsight.

Before any of this I was filming. I’m an FAA Part 107 certified drone pilot, and the oldest thing on this site is an aerial edit of Madison from 2017. I grew up skateboarding, which is a decade of practice at doing something badly in public until it works. Wisconsin originally, Maine now.

What I work with

Languages
TypeScript, JavaScript, Swift, Go, SQL
Front end
React, Next.js, React Native, Expo, Vue, Svelte, Tailwind
Back end
Node.js, Go, Firestore, REST APIs, WebSockets, Socket.IO
Infrastructure
AWS Lambda, S3, CloudFront, Docker, Vercel, Cloudflare
Product systems
Stripe, Square, multi-tenant architecture, real-time apps

Get in touch

If you want to talk about a project — or just compare notes on building alone — send me a note.