Skip to content

My projects.

Guess the Band

Music quiz with a serverless API and difficulty stats

Full-stack app — from the design to the API.

  • React
  • Vite
  • TypeScript
  • Supabase
  • Motion

Live ↗Source ↗

Vercel Functions proxy the Deezer API server-side rather than exposing it to the browser. Every round and answer is recorded in Postgres to compute per-track difficulty. Anonymous play always works, and syncs the moment you sign in.

Guess the Band

Podhod

Full-stack strength trainer on Cloudflare Workers and D1

Full-stack app — from the design to the API.

  • React
  • TypeScript
  • Hono
  • Cloudflare Workers
  • Drizzle ORM

Live ↗Source ↗

A bilingual workout builder and tracker, built solo. A 1,324-exercise library, per-exercise progression computed by a pure engine, Google sign-in, and a CI pipeline that migrates the database before every deploy.

Podhod

Slovníček

Offline-first PWA with a hand-written sync engine

Full-stack app — from the design to the API.

  • Next.js
  • TypeScript
  • Dexie
  • Supabase
  • PWA

Live ↗Source ↗

IndexedDB is the source of truth, not a cache. The hard part is a bidirectional sync engine: last-write-wins with per-table watermarks, and pull deliberately ordered before push so a stale offline edit can never overwrite a newer server row.

Slovníček

Rječniček

The same engine, retargeted to Croatian

Full-stack app — from the design to the API.

  • Next.js
  • TypeScript
  • Dexie
  • Supabase
  • Vitest

Live ↗Source ↗

Slovníček rebuilt for a family member learning Croatian: a B1–B2 word bank extended with an electrician's trade vocabulary. Proof that a one-off app can be turned into a reusable product shape.

Rječniček

Kambuz

Bilingual recipe finder fed by a multi-agent Claude pipeline

Full-stack app — from the design to the API.

  • Next.js
  • TypeScript
  • Claude API
  • MongoDB
  • Vitest

Live ↗Source ↗

What to cook tonight: pick a meal, a cuisine and what's in the fridge, or just search, and get a dish in Russian or English. The recipes come from a multi-agent Claude pipeline, built solo, that turns YouTube cooking videos into structured recipes. A scout finds the dishes in a vlog and skips videos that aren't recipes, an extractor writes each one up with timestamps into the video, a verifier checks every amount against the transcript, and a judge catches duplicates. Extraction runs on Haiku 5.5 after per-agent benchmarks; Sonnet 5.5 translates into English and Opus 5.5 proofreads, chosen on a 20-recipe eval. About 7 cents a dish.

Kambuz

Gipper Platform

Fourteen microfrontends, an AI canvas pipeline, production SSR

  • React
  • TypeScript
  • Vite
  • MobX
  • Module Federation
  • Fabric.js
  • MUI

Live ↗

The sports content platform I work on daily, used by thousands of organisations. A Claude agent interprets a natural-language request, the front-end renders offscreen React templates, measures text slots via getBoundingClientRect, and assembles a Fabric.js canvas.

job-feed-bot

My first Python project, running on a cron since day one

  • Python
  • GitHub Actions
  • Telegram Bot

Source ↗

A job aggregator over five sources behind a pluggable source interface, notifying through a Telegram bot, running on a GitHub Actions cron every four hours with persistent dedupe state. My first project in Python, and the reason I now reach for it.