i make stuff.

i'm mike, a full-stack product engineer in czechia — react and typescript on top, node underneath, and i'd rather own the whole slice than half of it. i do stuff, sometimes it works and sometimes it doesn't, but give me enough time and i'll make it work. probably.

the sand up there is real, go make a mess. it's a tiny cousin of powder-lab.

things i made

all public, all on github, all built to scratch an itch.

  • ssscribe

    speak or paste anywhere, it's text everywhere

    react 19 · tanstack · pocketbase · pwa · deepgram

    private during the build · public at launch

    talk to my phone, paste from my laptop, and it all lands as text in one private feed that syncs to every device, copy-ready. then run ai on any capture: tldr it, clean up the transcription, pull out the todos, whatever. self-hosted on my own box, pocketbase doing realtime and storage, installable as a pwa. the snake from the landing pages survives here as a waveform that threads the ai outputs together.

    ssscribe desktop — watch the stream
    ssscribe capture screen on phone
    design mockups · the app itself is mid-build
  • on-task

    a creature that knows when i've drifted

    python · activitywatch · webgl2 · gtk3 · systemd · claude sonnet

    private repo · the site is public

    i declare what i'm working on and a little ink creature in the corner of my screen watches whether i actually do it. regexes over activitywatch handle the obvious calls; when it genuinely can't tell, it screenshots the screen and asks sonnet — announcing itself first, because a thing that watches you should say when it's looking. drift and it gets agitated. ignore it and it deflates rather than nags. the landing page runs the same loop on you while you read it — tab away and it'll notice.

    it'll watch you read it

    the on-task landing page: it knows what you said you'd do, and the ink creature is asleep next to it
    the session log the daemon writes, with a nudge card saying it won't repeat itselfthe precedence ladder of watcher states, from no-task and on-task down to nudge
    the live landing page — it runs the real detection loop on you while you read it
  • cc-bench

    does your CLAUDE.md actually do anything?

    node 22 · zero deps · bwrap sandbox · paired stats · 160 tests

    instrument built and tested · no findings yet

    everyone writes a CLAUDE.md full of "be concise" and "don't hedge", and nobody knows if any of it lands. this swaps the config, runs the same 48 prompts against a deliberately broken little repo, and counts what changed — words, hedges, lists, tool calls — instead of asking a model whether the answer got better. the first version couldn't produce a negative result, so i killed it and wrote down why. the landing page runs the real counters on whatever you paste in.

    paste your config in

    the cc-bench fingerprint tool comparing a terse answer against a padded one, counter by counterthe cc-bench fingerprint tool comparing a terse answer against a padded one, counter by counter
    the counters on the page are the benchmark's own code — a guarded build step keeps them from drifting
  • powder-lab

    a falling-sand sandbox

    react · typescript · canvas · vitest

    paint with fourteen-ish materials and watch them fall, flow, burn, dissolve and react. react owns the buttons; an imperative core owns the pixels, so the simulation never touches a re-render. dirty-chunk scheduling (the noita trick) means settled sand costs nothing. the toy at the top of this page is its little cousin.

    play it

  • claude-skills

    my claude code, customized

    node · markdown · zero deps

    a dozen installable skills that run my actual days: a morning briefing parsed straight from conversation history, an end-of-day receipt that proves the day happened, an adhd thought-structurer for when it didn't. zero-dependency parsers and an interactive installer, symlink or copy, your choice.

  • aw-watcher-git

    time tracking that knows which repo i’m in

    python · watchdog · activitywatch

    an activitywatch watcher that logs which repo and branch i'm actually working in, no matter the editor or terminal. three layers of detection (filesystem events, window cross-checks, git status polling) so long uncommitted thinking still counts. it stores repo and branch, never file paths. on-task further up this page reads the same activitywatch buckets, so the creature knows which repo i've wandered out of.

  • ssscribe-landing-pages

    landing pages with actual personality

    react 19 · tailwind 4 · gsap

    marketing pages for a voice-note transcription bot. one shared page component themed entirely through css variables, so the next product is a class swap, not a fork. handcoded chunky look: ink borders, hard shadows, and a dot grid that follows your cursor around.

that's the stuff i built because i wanted to. below is the stuff someone paid me to build. turns out i like that too.

what was actually mine

one contract — atreo digital, apr 2024 to august 2026, fully remote — and several clients at once, none of whom i can name. so here's the only part worth telling you: how much of each thing i was actually holding.

sorted by how much of it was mine, not by how big it was. the counts are from the repos, not from memory.

  1. the entire frontend repo.

    staffing marketplace mvp · a czech startup

    • every screen, first commit to launch-ready
    • routing, the data layer, the caching
    • state, styling, the component library
    • the api contract, agreed before either of us built against it
    • every decision nobody else was in the room to argue with
    • the api itself — not mine. an external backend dev owned it.

    sole frontend dev means the good version and the bad version of the same thing. the good version is that the whole repo is coherent because one person decided all of it. the bad version is that when a choice turned out wrong there was nobody to blame, so i just fixed it and kept the commit message honest.

    450+ commits · sole frontend dev

    react · typescript · vite · tanstack router + query · zustand · tailwind

  2. four fifths of an energy-management system.

    internal ems · one of the largest czech energy groups

    • the operations calendar: drag to move and resize shifts, live time labels, preview clamped at the grid edges
    • per-location timezone handling, end to end — the api talks utc, the calendar doesn't lie about local time
    • the oidc auth flow, hardened: token sync, 401 logout, the session states nobody specs
    • dashboard widgets and charts, down to the mobile tooltips and sticky table headers
    • the backend — not mine.

    449 of the repo's 552 commits are mine, from the first one. the hard part was never the calendar looking right — it was a drag interaction that stays honest at 00:00 and 24:00, across timezones, without a single off-by-one day.

    449 of 552 commits · ~81% of the repo

    react · typescript · vite · mui · tanstack query · zustand · daypilot

  3. roughly four fifths of the app.

    job marketplace, ios + android · expo / react native monorepo

    • onboarding
    • profile
    • in-app chat, media and all
    • offer management
    • in-app purchases and push
    • the api endpoints sitting behind all of the above
    • the map
    • rebrand → play signing → store-ready builds
    • the other fifth — not mine. i'm not going to pretend i know what's in it.

    the map is the part i'd show you first. clustered pins, screen-space decluttering so markers stop stacking on each other when you zoom, and native marker rendering on both platforms.

    900+ commits in three months · taken to store-ready on both platforms

    react native · expo · typescript · nestjs · drizzle

  4. the 3d, and the pipeline that feeds it.

    b2b room planner · equipment placed in 2d and 3d

    • a model-optimization service on the upload endpoint: gltfpack with texture compression, draco decode, everything normalized to glb
    • the gltfpack binary built into the docker images, with a fallback path for when basisu isn't there
    • a batch command that runs the whole existing product catalogue back through it
    • instancing in the room visualizer, and the material work that makes instances safe to share
    • automatic dimension detection from the mesh, so a vendor's model doesn't have to be measured by hand
    • wall, window and door cutouts via csg — and the babylon.js 4 → 8 upgrade underneath all of it
    • the rest of the platform — not mine. i owned the 3d.

    a room full of the same shelf shouldn't cost a mesh per shelf, and a model a vendor uploads shouldn't ship at whatever size it happened to be exported at. the pipeline shrinks assets on the way in; the instancing keeps the scene cheap once they're in the room.

    620+ commits · the largest single contributor to the repo

    babylon.js · react · next.js · nestjs · gltf-transform · draco

  5. the b2b side, front to back.

    platform for a measurement-industry manufacturer

    • carrier management and tracking numbers: migrations, entities, endpoints, ui, notification emails
    • an erp export — per-side pricing breakdown, code mapping, xml generation, wired into b2b checkout
    • a shared price-calculation service, so the frontend and backend stopped disagreeing about totals
    • shipping breakdown with carrier detection and per-location allocation
    • revised through rounds of client feedback — shipped, corrected, shipped again
    • the rest of the platform — not mine. it's older than my contract.

    this is the one that made me stop calling myself a frontend dev. owning a section properly meant the migration and the nest service and the react form were all the same task, and the interesting bugs lived in the seams between them.

    840+ commits · the largest single contributor to the repo

    next.js · nestjs · typeorm · typescript · styled-components

  6. half of a customer-monitoring portal.

    internal portal · the same energy group

    • server-side pagination, search, sorting and filtering across every table in the app
    • a column-sort and filter popover built once and reused everywhere
    • overview widgets and charts, plus the fullscreen detail views and csv / xlsx export
    • the other half — not mine. this one was a team.

    enterprise data density: the kind of screen where the table is the product and every column has its own opinion about how it wants to be sorted. unglamorous, and the place where "just add sorting" quietly becomes an api negotiation.

    369 of 713 commits · ~51% of the repo

    react · typescript · vite · mui · tanstack query · zustand · azure msal

  7. the cms wiring.

    career portal · the largest czech pharmacy chain

    • connected the cms and the plumbing around it
    • the design, the content, most of the rest — not mine.

    the smallest claim on this page, kept small on purpose. if every entry above claimed everything, you'd have no reason to believe any of them.

    no commit count worth quoting. that's sort of the point.

    next.js

2023 — 2024before atreo: wordpress presentation sites for local clients, self-employed. not a career yet, but it's where the invoices started.

the obvious problem with all of this: every one of those repos is private and i can't show you a single line. so — get me on a call and pick anything above. the decluttering pass, the model pipeline, the timezone handling in the calendar. you'll know inside five minutes whether i wrote it.

the atreo contract ends in august 2026, so from september i'm looking — contract or full-time, remote, and happy to talk specifics that aren't on this page. misa.psencik@gmail.com.

smaller things

  • vite-react-supabase-starter and vite-react-shadcn-starter: the two starters i clone so future me skips a day of wiring. react 19, tanstack query, auth, the boring parts done.
  • backlogged: a game library with an ai recommender that remembers what it already suggested. probably abandoned. i'm being honest with you.