michal pšenčík
full-stack product engineer
react, typescript, node. i own the whole vertical slice from the api to the ui, and i ship every day with ai agents doing a lot of the typing.
- czechia
- remote (cet / emea)
- available from september 2026
- english + czech
the day job
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.
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
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
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
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
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
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
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.
shipped on my own time
three of mine that are running, public, or both. the rest are on the main page, sand toy included, and that toy is a small cousin of my falling-sand engine.
ssscribe
personal transcription pwa
react 19 · tanstack · pocketbase · pwa · deepgram
speak into my phone or paste from my laptop, and it lands as text in one private feed that syncs to every device. self-hosted on my own box, installable as a pwa, and i've used it every day since the summer, which is the only test i trust.
on-task
focus and accountability system
python · activitywatch · webgl2 · gtk3 · systemd · claude sonnet
a daemon that watched what was actually on my screen and a desktop mascot that got progressively less polite about it. ran on my machine for months. it's switched off now and i'd rather say so than pretend it's a product.
cc-bench
public benchmark
node 22 · zero deps · bwrap sandbox · paired stats · 160 tests
asks whether a CLAUDE.md file changes anything about what claude code does, since everyone writes one and nobody measures it. the harness is built, tested and public, and the site runs the real counters on whatever config you paste in. the answer is still open.