Studio

About

I’m Justin Ahinon, a solo Svelte and SvelteKit developer based between Cotonou, Nairobi, and Cape Town. I ship apps in two-week sprints. Past work for the NBA, WNBA, and Cyfrin’s Updraft (100K monthly users).

I’m Justin. I run Okupter, a solo studio shipping Svelte and SvelteKit apps in two-week sprints. I split time between Cotonou (Bénin), Nairobi (Kenya), and Cape Town (South Africa), depending on which month it is.

“Solo studio” can mean a lot of things, so here’s the version that matters:

I’ve been writing software for production for about eight years. Four of those were spent contributing to WordPress Core, sponsored by Yoast. I worked on the Documentation team, led the Performance team, and I led the migration of WordPress Core’s end-to-end tests to Playwright. That work shipped to roughly half the internet.

Around the same time, I co-founded AfricArXiv, the first open preprint repository dedicated to African scholarship. I’m still its technical advisor, seven years in.

In 2022 I picked up Svelte and never went back.

Since then:

  • Was the main engineer on Updraft, Cyfrin’s education platform for Web3 developers. Around 100,000 monthly users. Over 2 million lessons completed every month. I owned the SvelteKit frontend, the REST API, and most of the database design.

  • Spent 2025–2026 as a senior software engineer at Fabric Blockchain Labs, building real-time DeFi trading on a decentralized exchange — WebSocket-driven order management, smart-account wallet auth, a Bun monorepo with five SvelteKit apps sharing a component system, plus a rich-text CMS for the documentation platform.

  • Shipped a dozen of my own products in the last year: DishCost, WhatIsThatMovie (~30K monthly visitors, 25K+ searches a month), WhatIsThatBook, ToriAgent, naps.sh, WhatMedicaidPays, FlareCap, Threadcast, Remorai, and open-source libraries like sveltekit-pgboss, KitForStartups, and Orathor.

That last list is most of what’s worth knowing about me.

I learn by shipping. The studio exists because I needed something to point at when people asked, “do you take client work?”, and because client work keeps my Svelte muscle warm between side projects.

What Okupter is

A solo Svelte studio I started in 2022.

It began as a blog, then turned into me doing consulting on the side while I was full-time at WebDevStudios working on NBA Cares and the WNBA's site (Next.js, headless WordPress, the kind of work that sounds glamorous in a portfolio and is mostly anxious in the calendar).

The dual-roles caught up with me. I burned out, got let go, and decided to give Okupter a real chance. I went full-time on it for about a year before joining Cyfrin, then Fabric.

Now I'm back, running Okupter full-time. A few sprints per quarter, picked carefully, scoped to what I can actually ship without burning out a second time. The rest of the time goes to my own products.

If “Okupter” is a meaningful unit for you (your accounting team needs an LLC to invoice, your legal team wants a contract counterparty), that part is real. Okupter LLC, US-registered, with operating history to back it.

If “Okupter” is just a fancy way of saying Justin, that’s also right.

How I work

Two-week sprints, one engineer, working code at the end of each cycle. No agency layers between you and the code. No junior swapped in mid-sprint. No “we’ll need another two weeks for QA, it’ll be ready next month.”

The bar is: at the end of week two, something is deployed and you can use it.

I use Claude Code in my workflow (and the occasional Codex run) because it lets me move faster on the parts of a project that aren’t load-bearing decisions. But I read every line. I’m the one steering the direction. The expertise is in knowing what to push back on, what to delete, and what’s actually the right approach instead of the one that compiles first. That’s the part the agents can’t do for you.

If you’ve worked with someone who shipped fast but you couldn’t trust the output, that’s the failure mode I’m avoiding. I want both.

What I believe about software

Boring code outlives interesting code. When I evaluate a framework, a library, or a pattern, the question isn’t “is this elegant?” or “does this have a great DX?”. It’s “what does my code look like underneath this?” If the framework disappeared tomorrow, would my code still make sense? Could I port it? Could I read it? If yes, the tool is doing its job. If no, I’ve made a mistake.

That’s the bias I bring to every project: keep the stuff that actually matters in plain functions, in code you wrote on purpose. Treat the framework as glue. Glue is replaceable. Structure is forever.

Accessibility isn’t a bonus feature. I’m certified by Deque University in accessibility fundamentals. Every site I ship is keyboard-navigable, screen-reader-tested, and Lighthouse-audited before it leaves my laptop.

Not because I’m being virtuous, because the alternative is shipping something half the internet can’t use, and that’s just bad engineering.

Who hires me

Mostly founders and product teams who:

  • Need senior Svelte (Kit) expertise but aren’t ready to hire a full-timer

  • Have a deadline and need someone who can take a brief and ship

  • Have an existing SvelteKit app that needs performance work, an a11y pass, a tricky migration, or a new feature

  • Want one person who’ll own the project start to finish and stick around

I’m not the right call if you want twenty engineers, an agency procurement process, a non-Svelte stack, or a project without a real deadline. I won’t pretend otherwise.

Where to find me

If you’ve got a Svelte project that needs to ship, or you just want to know whether it’s the right shape for a sprint, send me a paragraph. I’ll tell you honestly.