JanKimla


I build things.

I design and build web and mobile apps — from a prototype or MVP to a launched digital product.

Custom app development · MVPs and prototypes · AI Product Builder


01Selected work

Things I have built

Cestiq is live on the App Store, Google Play and the web. The other projects below are explicitly marked in development — they show current scope, not invented outcomes.

Cestiq

Driving-school learning platform

Year
2026
Built by
Jan
Status
Live on iOS, Android and web
Built with
Flutter · Firebase · Cloud Functions · Retrieval engine
  • Live on iOS, Android and web
  • 1,000+ Google Play downloads (October 2026)
  • 6 languages
  • 1,151 questions linked to legislation
  • 4 connected product surfaces
  • 63 server functions

The problem

Learner drivers practise by grinding through the same question bank until the answers stick. Nothing tells them which topics they are actually weak in, or whether they are ready for the exam. They find out at the test centre.

  • Cestiq home screen showing the readiness index and the Exam, Tricky and Quick cards
    Home — readiness index and the way into the exam
  • Cestiq practice screen showing question 9 of 1126 with answer options
    Practice — filtered, searchable, bookmarkable
  • Cestiq catalogue of mandatory road signs with codes and explanations
    Signs — the full catalogue, explained
  • Cestiq exam in progress with a countdown and a question built around a photograph
    Exam — timed and scored like the real thing
  • Cestiq error review showing the correct answer marked in green
    Error review — what was wrong and what was right
  • Cestiq settings with appearance mode, font size, daily reminders and shuffle answers
    Settings — appearance, type size, reminders

Cestiq turns exam preparation into something measurable. It scores readiness on a 0–100 index, shows exactly which topics are dragging that number down, and links every question back to the paragraph of law it comes from. Driving schools get their own portal to follow how their students are doing.

  1. 01Idea

    Every app on the market shipped the same question bank. None of them answered the only question a learner has: am I ready yet?

  2. 02Product

    A readiness index built from test scores, answer accuracy and how much of the material has actually been covered — one number, and the topics underneath it.

  3. 03System

    The bank grew into a corpus: 1 151 questions tied to the text of the road traffic act, a study track, and school-side administration on top.

  4. 04Launch

    Shipped on iOS, Android and web in six languages, with subscriptions and a separate portal for driving schools and their instructors.

What it does

  • Exam

    25 questions, 30 minutes, scored exactly like the state test.

  • Practice

    Filter by unseen, hard, or bookmarked questions. Full-text search across the bank.

  • Study

    Lessons, road signs, and the full text of act 361/2000 Sb. — searchable offline.

  • Readiness index

    One number from 0 to 100, combining results, accuracy and coverage.

  • Weak-topic analysis

    Per-topic success rate with a practice button on every row.

  • Study assistant

    Builds a plan from the learner's own pace and results.

  • Accounts & subscriptions

    Free tier, paid tiers, and school-managed seats.

  • School portal

    Instructors and administrators follow student progress from the browser.

What is underneath

  • Access decided in the database

    Student, instructor, manager and admin have separate rights enforced by Firestore rules on the server — not by hiding buttons in the app.

  • Statistics that survive

    Every write to a student's statistics is backed up automatically, keeping the last five versions.

  • It notices a bad write

    If a record would collapse from dozens of tests to zero, the previous state is saved as an emergency backup before the overwrite happens.

  • Four levels of aggregation

    Student, instructor, school and the whole community, each rolled up separately.

  • Per-question benchmarking

    Every question compares this school's success rate against all users.

  • Seven behavioural signals

    Weak results, never leaving the same questions, guessing instead of reading, repeated mistakes, barely studying, stopped, practice-only.

  • Licences and roles

    Seats, top-ups, granular manager permissions, invitations, QR sign-in.

  • Runs by itself

    Seven scheduled jobs, daily recomputation of global question statistics, daily subscription sync. 63 server functions in total.

  • Locked to the app

    App Check rejects calls that did not come from Cestiq itself.

  • One product, four surfaces

    An iOS app, an Android app, a web version for learners and a browser portal for the school — over one set of data, with one set of rules. The portal works on a phone too, so an instructor can check a student between lessons without opening a laptop.

  • School portal overview — upcoming exams, weekly record holders and seven signals for students who are struggling
    School portal — the daily overview. Seven rules watch for students who are falling behind.
  • One student's progress — score history, readiness index, weakest topics and repeatedly failed questions
    One student — score trend, coverage, weakest topics, and the questions they keep getting wrong
  • Register of students, instructors and administrators with invitation status and licence use
    Register — students, instructors and administrators, invitation status and licence use
  • The school portal on a phone — upcoming exams, weekly record holders and struggling-student signals
    The school portal on a phone — the same overview as on a desktop
  • Student register on a phone, filtered by invitation status
    The register on a phone — filters, not a squeezed-down table
  • A student's progress on a phone — score history, time in app and readiness index
    A student's progress on a phone — full history and readiness index

02

Autoškolník

The whole running of a driving school, in one place

Year
2026
Built by
Jan
Status
In development
Built with
Flutter · Firebase · SQLite · Mapbox

The problem

A driving school runs on a paper diary, a spreadsheet of payments and an instructor's memory of where they drove. Nothing is connected: nobody can say what a course actually earned, or whether a student has driven the junction they will be examined on.

One system for the side of a driving school that never gets software. Students, lessons and calendars on one side; cars, expenses, payments and settlements on the other. Lessons are recorded as GPS routes, so coverage of the junctions that matter becomes a table instead of a memory. Built offline-first, because a car in a tunnel has no signal.

What it does

  • Students

    Records, categories and course types in one register.

  • Lessons

    Recorded as a route, replayed on the map afterwards.

  • Critical locations

    The school defines the junctions a student must handle; coverage is a table.

  • Calendar

    Who drives with whom, when, and in which car.

  • Capacity

    Instructor availability turned into an honest answer about start dates.

  • Vehicles

    The fleet, with what each car is used for.

  • Money

    Expenses, payments, loans and settlements — including a bank import.

  • Works offline

    Everything keeps running without signal and syncs when there is some.

03

Autoškola Kapr

Bilingual website for a driving school

Year
2026
Built by
Jan
Status
In development
Built with
Astro · YAML content

The problem

A driving school teaching both Czechs and foreigners was running on WordPress: the pricing lived in five different places, and nobody could tell a prospective student when a course would actually start.

  • Autoškola Kapr homepage split in two — for beginners and for refresher lessons
    Homepage — one half for people without a licence, one for people who have one
  • Autoškola Kapr pricing page with a licence-group switch and course packages
    Pricing — the price sits on the course it belongs to, authority fees kept separate

A static site where price sits on the course page it belongs to, a calculator builds the real total including the extras people forget, and a capacity model turns instructor availability into an honest answer about start dates. Czech and English side by side. All content is YAML — the school edits its own site without touching markup.

What it does

  • Courses and prices

    The price sits on the page of the course it belongs to.

  • Price calculator

    Builds the real total, including the extras people forget.

  • Capacity model

    Availability, absences and load turn into an honest start date.

  • Study room

    Chapters, lessons and topics for students already enrolled.

  • Guide

    Articles answering what people ask before they sign up.

  • Two languages

    Czech and English side by side, not a translation bolted on later.

  • Fleet and instructors

    Cars and the people who teach in them, kept as content.

  • Self-service admin

    The school edits its own site without touching markup.

kaprdrivingschool.cz


04

Kondičomat

Booking for refresher driving lessons that come to you

Year
2026
Built by
Jan
Status
In development
Built with
Next.js · Supabase · Mapbox

The problem

Refresher lessons are booked by phone, one call at a time. The hard part is not the calendar — it is that the instructor drives to the client, so whether a slot is bookable depends on where the previous lesson ended.

Booking that understands geography. Pick an address and the app works out the travel time from the surrounding slots, prices the zone accordingly, and only offers times that can physically be reached. Instructors keep their own calendars and cars; the office sets pricing rules instead of doing arithmetic.

What it does

  • Booking by address

    The address is geocoded and the travel time worked out from it.

  • Only reachable times

    It offers slots the instructor can physically get to, and no others.

  • Zones and pricing

    Distance decides the price, automatically.

  • Instructor calendars

    Each instructor keeps their own calendar and their own car.

  • Pricing rules

    The office sets the rules instead of doing the arithmetic.

  • Fleet

    Cars assigned to instructors, each with its own availability.

  • Customer account

    Bookings, status and history in one place.

  • Instructor view

    A separate side for the people actually driving.

05

RuriLab

A running plan built from what your body actually did

Year
2026
Built by
Jan
Status
In development
Built with
Flutter · Firebase · OpenAI · Strava · Suunto · Polar

The problem

Training plans are templates. The app tells you to run intervals on Tuesday whether you slept four hours or eight, and when you skip a week it carries on as though nothing happened. The data that would answer this is already on the watch you own — nobody reads it.

RuriLab builds an endurance plan from your own history and keeps adjusting it. Paces come from your recent performances rather than a questionnaire. Training load is split into metabolic and mechanical strain, so a descent counts differently from flat kilometres. Load, monotony and injury risk are tracked against your own baseline, and when a week goes wrong the plan is reshaped — after asking you first.

What it does

  • Paces from your own runs

    Daniels VDOT and heart-rate zones derived from recent performances, not a form.

  • Periodised plan

    Base, build, peak and taper, with taper length set by race type.

  • Load in two parts

    Metabolic strain from heart rate, mechanical from descent and terrain.

  • Risk from your baseline

    ACWR with exponential smoothing, plus Foster monotony and strain.

  • Reshapes after a bad week

    A missed session changes the plan — with your approval, not behind your back.

  • Reads your watch

    Strava, Suunto, Polar, Apple Health and Health Connect. Or a FIT, GPX or TCX file.

  • Every run, in full

    Route map coloured by gradient, weather along the track, surface from OpenStreetMap.

  • Built for long races

    Marathon, ultra and mountain running, with a whole season of races chained together.

rurilab.com


02About

Where this came from

I didn’t start as a traditional software developer.

I started with ideas and a desire to build them.

AI changed what was possible.

What I am good at has not changed: working out what a product should be, how it should feel to use, and why the first version was wrong. AI removed the step where that stayed a sketch.

So I build the whole thing — the idea, the interface, the data model, the parts nobody sees — and keep going until it is genuinely useful to the person it was made for. Usually that takes longer than the building did.


03How I work

Idea, then everything after it

Every project is a little different. This is just the path I usually take from an idea to a finished thing.

  1. 01Idea

    It all starts with an idea. Some are small; others get hold of me until I have to try building them.

  2. 02Problem

    First I work out who the product is for, and what it should genuinely make easier for them.

  3. 03Design

    Then how all of it should work. As simply as possible, clearly, and with nothing spare.

  4. 04Build

    The idea takes its first real shape. I build it, put it into use, and find out what works.

  5. 05Refining

    This is where it shows what was good and what was not. I change it, try again, and gradually get it right.

  6. 06Launch

    Finally I put it out to people. Because a product nobody uses is still only an idea.


04Collaboration

Built with the right people

I don’t believe every project needs a big team. Sometimes it’s just me and AI. Sometimes the right designer changes everything.

Most products here were built directly by me. When one needs a different perspective, I bring in specialists I trust — and I stay responsible for the whole of it either way.

  • Jan + AI

    Most projects.

  • Jan + designer + AI

    When visual direction decides whether it works.

  • Jan + selected collaborators

    When the problem is bigger than one head.


05What it costs

Roughly what and roughly when

Nothing here is a quote. Ranges, so you know whether we are in the same ballpark before either of us spends an afternoon on it.

  • Prototype

    A working version you can click through. About a week.

    €540fixed

  • A website

    Content, forms, no accounts. Like Autoškola Kapr.

    €1,800 – 3,150

  • An application

    Accounts, data, logic of its own. Like Kondičomat.

    €3,150 – 8,100

  • A platform

    Several roles, several platforms, a system inside. Like Cestiq.

    from €8,100

  • After launch

    Changes, new features, administration. Or a monthly retainer.

    €40per hour

What it costs exactly, I say after the prototype. Until then every number is a guess — mine as much as yours.


06Contact

Have an idea?

Let’s build it.

Tell me what should exist and who it is for. Answer a few questions and you get a written brief back — yours to keep, whether or not we work together.

Tell me about it

Or email me directly