How Okupter built Updraft, Cyfrin’s Web3 developer education platform, in a 4-week MVP sprint that scaled to 100,000+ monthly users and 2 million+ lessons completed per month.



The work
Highlights:
Built the MVP in four weeks as an Okupter sprint engagement
Scaled to 100,000+ monthly users with 2 million+ lessons completed every month
Owned the full stack: REST API design, database, SvelteKit frontend
Continued the work as a senior software engineer at Cyfrin after the contract phase wrapped
Live at updraft.cyfrin.io
Cyfrin runs smart-contract audits, security competitions, and developer education for Web3. The education side had been running on free YouTube series and was outgrowing that format. They wanted a real platform: structured courses, progress tracking, interactive lessons in the browser, certificates.
They didn’t have six months to build it. They needed to ship something users could touch and start gathering signal.
I came in as an Okupter contractor with one goal: get a working version of Updraft live in four weeks.
The scope I agreed to:
The course structure (courses → sections → lessons), powered by a REST API I designed and built and a headless CMS
The lesson UI (markdown content, code examples, interactive challenges, autosaved progress)
Auth and account management
A dashboard showing course progress and completed lessons
A working deployment people could actually use
What I cut from the MVP:
Certificates (shipped two months later)
Quizzes and tests (shipped in v2)
Peer review (still doesn’t exist; turned out users didn’t ask for it)
Multi-language support (added later)
By the end of week four, Updraft was live, Cyfrin had migrated their first course onto it, and a small group of beta users were working through lessons. The pattern of “ship the spine, add the muscles later” turned out to be the right call.
Most of what Cyfrin thought was MVP-critical pre-build wasn’t, and most of what users actually wanted only became visible once people were on the platform.
Updraft grew from those few beta users to around 100,000 monthly users over the next year. Two million lessons completed every month. That’s a lot of progress writes per second.
The parts that held up well:
The course → lesson schema: barely changed since the first week
The progress-write API: aggressive batching and idempotency from day one made it cheap to scale
The SvelteKit component architecture: interactive lesson UIs got built on top of the same primitives without fighting the original structure
The parts that needed rethinking:
Auth: the lightweight MVP approach got replaced by something heavier once multi-tenant features arrived
Caching: no caching layer at first; became necessary around the 30K MAU mark
Search: added once the lesson catalog grew beyond what’s browsable in a tree view
A few months after the post-MVP work, I joined as a senior software engineer to keep owning the platform. I said yes, and the contract phase wrapped into the in-house phase.
That’s not a typical case-study outcome, most contract work ends with a handoff to the client’s team. But it’s the kind of arc a sprint can grow into when both sides are happy with how the work is going.
Updraft is still live and growing. I’m no longer at Cyfrin (left in mid-2025) and the team there has continued to ship without me, which is the other thing I wanted: I left a codebase another senior engineer could own.
Tell me what you're building. I'll tell you whether a sprint is the right shape, usually within a day.