Skip to main content
Josef Kvapil

Frontend architect — Prague

A button, built the way I build platforms.

I architect and lead frontend platforms for banks and enterprises. This is the foundation it all stands on: six steps, in the exact order they have to happen. No step skipped — not on a button, not on a platform.

Say hello

01 — Architecture

I draw the boundary first.

Before anything looks like anything, I decide what it is, where it ends and who may touch it. The dashed line around this button is the same line I draw around domains of a banking platform — just closer together.

button →
one component, one job
platform →
domain boundaries and what teams may import from each other

02 — TypeScript

Then I write its contract.

What a thing cannot promise, the compiler refuses on my behalf. The discipline is identical at every scale — only the blast radius of a broken promise grows.

button →
typed props: intent, size, onPress
platform →
typed API contracts between a dozen teams

03 — Design systems

Every state is a decision.

Hover, pressed, disabled — someone has to decide them on purpose. Designing this button’s states is the same job as designing an application’s visual language: make each decision once, so no team ever makes it twice.

button →
hover, pressed, disabled — designed, not defaulted
platform →
a design system that answers questions before teams ask them

04 — Accessibility

It works for every hand.

A keyboard, a screen reader, a shaky thumb on a phone — an interface has to work for everyone, not just the ideal user with a mouse. On this button that means a visible focus ring and a 44-pixel target; on a bank’s portal it is the bar the whole product ships against.

button →
focus-visible ring · 44px target
platform →
WCAG 2.1 AA across every screen and every team

05 — Review & AI leverage

Then it has to prove it.

Tests and review before anything ships — the same bar for my code, my team’s, and the AI’s. I work AI-first and let it draft plenty; nothing merges without a human signature. One diff or a whole release: the workflow does not bend.

button →
this diff: reviewed, tested, signed
platform →
a review culture dozens of developers ship through

06 — Delivery

Now it’s real.

The same element you have watched the whole way down, now wired to a real address. A button or a corporate system — the workflow never changes, only the number of zeros in the component count.

button →
wired to production — press it
platform →
platforms serving banks, insurers and utilities

I can lead the big because I never skipped the small.

architecture · leadership · React · TypeScript · TanStack

Capabilities

What I bring to a project.

  1. 01

    Platform & microfrontend architecture

    I design frontend platforms that let many teams ship independently — shells, federated modules, typed seams, and the framework underneath.

    proof: architected a core-system rebuild for a major insurance group — framework used daily by dozens of developers

  2. 02

    Leading frontend teams

    Team lead who still reads the diffs. Honest review culture, mentoring, and the same quality bar for everyone — including me.

    proof: led FE teams on a public mobile-first self-service app and on a utility giant’s sales digitalization

  3. 03

    Delivery in regulated industries

    Banking, insurance, energy — KYC flows, e-signing, SAP-integrated portals. Interfaces that hold up where mistakes are expensive.

    proof: fully online bank-account opening incl. identity verification; paperless contracting end-to-end

  4. 04

    Analysis & client communication

    I translate between the boardroom and the codebase: requirements, target architecture, functional specifications, and estimates someone can actually plan a release on.

    proof: analysis phase of sales & customer portals for an energy company — the spec its delivery team builds on

  5. 05

    AI-first development, human-verified

    AI-assisted since the Copilot closed beta: my own agent tooling, internal talks, and a hard rule — AI drafts, an engineer signs. I also know when AI is the wrong tool.

    proof: open-source agent tooling below · internal AI talks · SDLC-automation initiative

Every proof is a real delivery. Clients stay unnamed by design — discretion is part of the job.

Open source

Tools that keep my honesty public

  1. 01biome-you-might-not-need-an-effectBiome linter plugin detecting unnecessary React useEffect hooks, based on react.dev guidelines. Published on npm.
  2. 02construeNatural language to validated structured output. React-first, provider-agnostic LLM tooling built on Standard Schema.
  3. 03companionDesktop companion that reacts to Claude Code activity in real time via hooks.
  4. 04openclaw-guardianRate-limit aware HTTP proxy and session healer for the Claude API. Prometheus metrics, Grafana dashboard, zero dependencies.

About

I dig into how things work underneath.

I wrote my first PHP website in sixth grade and never stopped. Today that curiosity means React core, deep TanStack, Hono and Astro where they earn their place — reading the internals, not just the docs — and a seat on a train to the next conference. I love cutting-edge tech and I know exactly when a project needs something proven and stable instead.

I have been into AI-assisted development since the GitHub Copilot closed beta, long before it was a roadmap item. Today I run an AI-first workflow, build my own agent tooling and give internal talks on using it well. My stance: AI is a powerful assistant that still needs an experienced engineer to guide it — and to know when not to trust it. Enthusiastic precisely because I know its limits. Vibecoding is not engineering.

Stack

daily
React · TypeScript · TanStack · Hono · Drizzle · Astro · MUI · Vite · Biome
environment
vim · tmux · Claude Code · Docker · GitLab CI · Jenkins · OpenShift
I find my way in
Rust · Java · C# · PHP · Angular · Vue · Kotlin · Go · Elixir · Gleam · Swift

A new language is not a barrier — I find my way around an unfamiliar codebase fast, whatever it is written in.

Employment

  1. 2021 — now
    Trasksenior frontend developer → architect & team lead — banking, energy, insurance
  2. 2019 — 21
    LundegaardJavaScript developer — React & Angular on large corporate applications
  3. 2018 — 19
    TraskJavaScript developer — Angular, JSP, a bit of Java
  4. 2015 — 17
    C26.czprogrammer — PHP, C, jQuery, and my first clients

For the record

AWS Certified Cloud Practitioner · Anthropic Claude Code certifications · mentoring & internal talks · CZ / EN / DE

Contact

Say hello

Open to interesting frontend problems, architecture work and open-source collaboration.

btn / your-project

the next sketch could be yours