Web and mobile app development
From idea validation through prototype and MVP to deployment. One person for product design and development.
I build things.
I design and build custom web and mobile apps and business software — from validating your workflow to deployment and handover.
Custom app development · MVPs and prototypes · AI Product Builder
How I can help
From idea validation through prototype and MVP to deployment. One person for product design and development.
Internal tools, customer portals and connected applications built around a specific workflow.
A concrete product I built: student apps, a school portal, roles and shared data.
Available to discuss remote projects in Czechia and across Europe. Working language, scope and local requirements are agreed before work starts.
01Selected work
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.
Try the products
Explore the app interfaces with ready-made fictional data. No registration. Choose a product and its demo opens right here.
All names, results and invoices are fictional. Changes stay in this browser. The demo does not send messages or payments, access real accounts or call online AI services. Please use test data only.
Cestiq demonstrates the school-management portal; exam practice is available in the mobile app. Demo interfaces are in Czech; invoicing also has an English switch. Faktury is in development. These demos show current functionality, not real customer results.
Driving-school learning platform
Try the products
A working demo with fictional data. No registration, and no need to leave this page.
All names, results and invoices are fictional. Changes stay in this browser. The demo does not send messages or payments, access real accounts or call online AI services. Please use test data only.
The original Cestiq administration interface with a fictional school. Mobile exam practice is available on the App Store and Google Play. Videos and online server services are not included in this demo.
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 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.
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?
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.
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.
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
25 questions, 30 minutes, scored exactly like the state test.
Filter by unseen, hard, or bookmarked questions. Full-text search across the bank.
Lessons, road signs, and the full text of act 361/2000 Sb. — searchable offline.
One number from 0 to 100, combining results, accuracy and coverage.
Per-topic success rate with a practice button on every row.
Builds a plan from the learner's own pace and results.
Free tier, paid tiers, and school-managed seats.
Instructors and administrators follow student progress from the browser.
What is underneath
Student, instructor, manager and admin have separate rights enforced by Firestore rules on the server — not by hiding buttons in the app.
Every write to a student's statistics is backed up automatically, keeping the last five versions.
If a record would collapse from dozens of tests to zero, the previous state is saved as an emergency backup before the overwrite happens.
Student, instructor, school and the whole community, each rolled up separately.
Every question compares this school's success rate against all users.
Weak results, never leaving the same questions, guessing instead of reading, repeated mistakes, barely studying, stopped, practice-only.
Seats, top-ups, granular manager permissions, invitations, QR sign-in.
Seven scheduled jobs, daily recomputation of global question statistics, daily subscription sync. 63 server functions in total.
App Check rejects calls that did not come from Cestiq itself.
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.






02
The whole running of a driving school, in one place
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.


A project in development, not yet ready for public testing. The planned scope connects student records, lessons, scheduling and school operations. The screenshots show a development preview, not a finished product.
Planned scope
Records, categories and course types in one register.
Recorded as a route, replayed on the map afterwards.
The school defines the junctions a student must handle; coverage is a table.
Who drives with whom, when, and in which car.
Instructor availability turned into an honest answer about start dates.
The fleet, with what each car is used for.
Expenses, payments, loans and settlements — including a bank import.
Everything keeps running without signal and syncs when there is some.
03
Bilingual website for a driving school
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.


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
The price sits on the page of the course it belongs to.
Builds the real total, including the extras people forget.
Availability, absences and load turn into an honest start date.
Chapters, lessons and topics for students already enrolled.
Articles answering what people ask before they sign up.
Czech and English side by side, not a translation bolted on later.
Cars and the people who teach in them, kept as content.
The school edits its own site without touching markup.
04
A running plan built from what your body actually did
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.


Screenshots come from a development build of the app. A public interactive demo is not available yet.
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
Daniels VDOT and heart-rate zones derived from recent performances, not a form.
Base, build, peak and taper, with taper length set by race type.
Metabolic strain from heart rate, mechanical from descent and terrain.
ACWR with exponential smoothing, plus Foster monotony and strain.
A missed session changes the plan — with your approval, not behind your back.
Strava, Suunto, Polar, Apple Health and Health Connect. Or a FIT, GPX or TCX file.
Route map coloured by gradient, weather along the track, surface from OpenStreetMap.
Marathon, ultra and mountain running, with a whole season of races chained together.
05
From a project to a clear invoice
Try the products
A working demo with fictional data. No registration, and no need to leave this page.
All names, results and invoices are fictional. Changes stay in this browser. The demo does not send messages or payments, access real accounts or call online AI services. Please use test data only.
Faktury is in development. Explore current functionality, not a real customer account.
The problem
A small business needs to know what it has invoiced, what customers have paid and what is overdue. Creating and reading an invoice should be simple.
Explore the invoicing app with the fictional Studio Javor. Six sample jobs cover web design, photography and other small-business services. Open an invoice, choose a design or create your own sample document. The demo works with local browser data and uses no real banking details or payments.
What it does
Issued invoices, amounts, due dates and payment status in one place.
Customer, line items, due date and the finished document in one flow.
Choose how your invoices present your business.
The fictional company and sample documents are ready to explore.
02About
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
Every project is a little different. This is just the path I usually take from an idea to a finished thing.
01Idea
It all starts with an idea. Some are small; others get hold of me until I have to try building them.
02Problem
First I work out who the product is for, and what it should genuinely make easier for them.
03Design
Then how all of it should work. As simply as possible, clearly, and with nothing spare.
04Build
The idea takes its first real shape. I build it, put it into use, and find out what works.
05Refining
This is where it shows what was good and what was not. I change it, try again, and gradually get it right.
06Launch
Finally I put it out to people. Because a product nobody uses is still only an idea.
04Collaboration
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
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 and custom logic tailored to the project.
€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.