Lab
Experiments
Side projects, tools, and explorations. Things I build to learn, to scratch an itch, or to see what happens.
Projects
Tyck
A stage timer for conferences and services that you run by talking to it. Type or say "add five minutes to the keynote", or photograph a printed schedule and get a working run-sheet.
- SvelteKit 2
- Svelte 5
- TypeScript
- Tailwind 4
- WebSockets
- Postgres
- Redis
- Claude API
- Stripe
LiD Prep
A free, ad-free study app for Germany's Leben in Deutschland and naturalisation tests. It turns the official 460-question catalogue into 44 bilingual chapters, so you learn the civics behind the answers instead of memorising them.
- Next.js 15
- React 19
- TypeScript
- Tailwind 4
- Drizzle ORM
- Supabase Postgres
- Playwright + axe-core
- Gemini / Claude (content pipeline)
Tauker
Push-to-talk dictation for the Mac. Hold a key, speak, release, and finished text lands in whatever app you are using. Your voice is transcribed on the Mac and the recording never leaves it.
- Swift 6
- SwiftUI
- AppKit
- Apple SpeechAnalyzer
- Accessibility API
- XcodeGen
- Ollama (optional)
VoiceGen
A voice-over studio that turns a script into expressive speech. Mark up delivery with inline tags like [whisper], [pause] or [suspense], or let an AI voice director do it, then render a master WAV.
- React 19
- Vite
- TypeScript
- Tailwind
- Vercel Functions
- Gemini 2.5 TTS
- Gemini 2.5 Flash
- Firebase Auth
- Firestore
Portfolio + AI Chatbot + Case Study Presenter
My portfolio site, an AI chatbot trained on my professional profile, and a custom case study presentation tool - all built with Claude Code.
- Next.js
- Claude API
- Sanity CMS
- Vercel
LinkedIn Publishing Pipeline
Publish blog posts to LinkedIn with one toggle in the CMS. Sanity fires a webhook, an API route picks it up, and the LinkedIn API does the rest.
- Sanity
- LinkedIn API
- Webhooks