Doctors in Germany need CME points to keep their license. Our association runs a platform where healthcare companies can offer accredited training sessions – about one per day, 30 to 400 physicians each.
The old system? WordPress held together by manual work. One person handled everything: scheduling, registrations, certificates, paperwork for the Medical Chamber. It worked. But it didn't scale.
We knew we needed automation. First we tried Moodle. Too complex, not user-friendly enough. Off-the-shelf solutions? Too expensive. So the task became: build something ourselves.
I'm not a developer. I had no formal programming background. But I had Claude Code, Cursor, and six months.
the afternoon that changed everything
I didn't start with a grand architecture. I started with a single afternoon and a few targeted prompts.
A basic dashboard. A simple form that writes data to a database. That was it.
And it worked.
That moment – seeing data flow from a form I'd just prompted into existence into a Supabase table – that was the unlock. Not because it was impressive. Because it proved I could keep going.
From there, function by function. Prompt by prompt.
how I actually built it
My workflow became predictable: Plan mode in Cursor or Claude Code whenever I wanted a new feature. You get something half-finished. Then you iterate – prompt after prompt – until it works the way you imagined. Test it. Move to the next function.
What surprised me most was the speed. New features in an afternoon. Alone. As someone who'd never written production code before.
the key insight
You don't need to understand everything upfront. You need to understand enough to know when something's wrong – and how to describe what you want instead.
The stack came together naturally: Next.js because Claude suggested it, Supabase because databases shouldn't be hard, Hero UI because starting from zero takes forever – a solid component library gives you a foundation to build on fast. Vercel because deployment should be one click.

The result is a self-service dashboard where member companies now create, manage, and host their own training sessions. No manual intervention from our team.

Automated PDF exports handle the Medical Chamber certification that used to eat up hours. Permission levels, scheduling, participant management – all built in.


For the physician-facing frontend, I designed the interface in Figma and coordinated an external dev team to implement it.



what I actually learned
This project taught me GitHub, Supabase, how Vercel makes deployment trivial. But the real lessons were about working with LLMs.
The two-prompt rule. If a bug isn't fixed after the second prompt, it won't be fixed at the tenth. The model starts doing weirder things – more errors, unnecessary code, architectural changes you didn't ask for. Better to reset the changes and start fresh. Or switch models entirely.
I bounce between Claude Opus 4.5 and OpenAI Codex now. Some models fix things others can't. No idea why. Don't need to know why.
LLMs can code. They can't design. Using a UI library takes so much work off your plate. But once the functions work, go back and fix the small things. For internal tools, whatever – ship it. But this was external-facing. The details matter.
Lean on existing tools. Supabase for the database. Resend for email. There are great solutions out there. Just ask Claude to do a web search for how to solve something and you get solid suggestions.
Architecture is still on you. LLMs are good at writing code. They're not good at thinking through how your whole system should be structured. I'd argue my database is pretty messy – too many columns, relationships an experienced dev would cringe at. That's my fault, not Claude's. I should have planned more upfront. V2 will be cleaner.
the meta-lesson
The speed at which you can write code now is genuinely crazy. Claude Opus 4.5 pushed the quality up another level. Cursor's Composer model is incredible for quick design fixes – it's just so fast.
But the tool doesn't replace thinking. It replaces typing. You still need to know what you're building and why. You still need to notice when something's off. You still need taste.
The LLM gets you 70% there in 10% of the time. The last 30% is still iteration, judgment, and knowing when to throw away what isn't working.
This was my first project at this scale. Six months, solo, no development background. Now our team has their time back and member companies can self-serve.
Not bad for someone who learned Git along the way.
Built with Claude Code and Cursor. Architecture mistakes are my own.