O projektu: data, provoz a cena vývoje
Manažerské shrnutí webu Přijímačky na školu. Co web dělá, z jakých veřejných dat staví, jak je zpracovává a co by jeho vývoj stál, kdyby ho dodala běžná agentura.
Stav k 21. 9. 2026. Čísla o datech a školách se berou z týchž souborů, které pohánějí web, takže stárnou spolu s ním. Rozsah kódu a odhad ceny jsou měření a model k datu 21. 9. 2026.
1.Co web dělá
Přijímací řízení na střední školy vytváří každý rok velké množství veřejných dat. CERMAT zveřejňuje, kolik se na který obor přihlásilo uchazečů, kolik jich škola přijala a s jakými výsledky jednotné zkoušky. Česká školní inspekce vydává zprávy o školách. MŠMT vede rejstřík škol. Data jsou veřejná, ale leží v desítkách tabulek, které rodič ani ředitel školy neotevře.
Web tato data spojuje do jednoho místa a odpovídá jimi na otázky, které rodiče a žáci skutečně mají: jak velký je o obor zájem, s kolika body se tam někdo dostal v posledním uzavřeném ročníku, jak škola dopadá u maturity, co o ní napsala inspekce a jak dlouho se tam dítě dostane hromadnou dopravou. Každé číslo má dohledatelný zdroj a uvedený rok.
Web vzniká jako otevřený projekt Patricka Zandla ve spolupráci s Hlídačem státu. Veškerý kód i postupy zpracování dat jsou veřejné na GitHubu. Kdokoli si může ověřit, jak se konkrétní číslo spočítalo.
2.Web v číslech
Katalog drží 2024 (2 721 nabídek), 2025 (2 837 nabídek), 2026 (3 224 nabídek). Díky tomu jde u oboru ukázat vývoj, ne jen poslední číslo. Seznam škol z inspekce je širší než katalog, protože zahrnuje i základní a mateřské školy: je v něm 9 558 záznamů.
3.Jaká data používáme
Všechna data jsou veřejná a anonymizovaná. Web nesbírá nic o návštěvnících a nepracuje s údaji o konkrétních dětech; i tam, kde zdroj obsahuje jednotlivé uchazeče, jsou to anonymní řádky bez jakékoli možnosti ztotožnění.
Zdroje vede registr datových sad. U každé sady je zapsané, jaké období web zobrazuje, kdy se kontrolovala, co se z ní počítá a jak se aktualizuje. Registr je závazný: dokud v něm období nepřepneme, web novější data neukáže, ani když už je máme stažená. Naposledy se registr měnil 18. 9. 2026.
| Zdroj | Období | Jak se aktualizuje | K čemu |
|---|---|---|---|
| CERMAT, kapacity oborů, 1. kolo1 ukazatel na webu | 2026 | automaticky jen upozornění, že data vyšla | zobrazuje se |
| CERMAT, přihlášky na obory, 1. kolo5 ukazatelů na webu | 2026 | automaticky jen upozornění, že data vyšla | zobrazuje se |
| CERMAT, výsledky přijímacího řízení, 1. kolo12 ukazatelů na webu | 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| CERMAT, data o jednotlivých uchazečích, 1. kolo20 ukazatelů na webu | 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| CERMAT, data o jednotlivých uchazečích, 2. kolo | 2025 | automaticky jen upozornění, že data vyšla | leží ladem |
| CERMAT, položková data jednotné zkoušky | 2025 | automaticky jen upozornění, že data vyšla | jen rozbory |
| CERMAT, maturitní výsledky, společná část11 ukazatelů na webu | 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| CERMAT, školní agregáty JPZ 2017–2023 | - | neaktualizuje se | leží ladem |
| Rejstřík škol MŠMT, čtvrtletní snímky JSON-LD1 ukazatel na webu | 30. 6. 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| Rejstřík škol MŠMT, export CSV | 11. 2. 2026 | ručně | zobrazuje se |
| MŠMT, číselník kmenových oborů AKKO | 8. 3. 2026 | ručně | jen rozbory |
| Česká školní inspekce, seznam inspekcí a odkazy na zprávy | 7. 9. 2026 | celé automaticky | zobrazuje se |
| Inspekční zprávy, strojová extrakce | 25. 11. 2025 | ručně | zobrazuje se |
| INSPIS, profily škol | 11. 2. 2026 | ručně | zobrazuje se |
| Jízdní řády PID a celostátní GTFS | 7. 2. 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| Katalog, historické ročníky 2024 a 20251 ukazatel na webu | 2025 | neaktualizuje se | zobrazuje se |
| school_analysis.json, starší odvozený soubor2 ukazatele na webu | 2025 | neaktualizuje se | zobrazovat se nesmí |
| CERMAT, kapacity, přihlášky a výsledky 2. kola7 ukazatelů na webu | 2026 | stažení a kontrola automaticky, převzetí schvaluje člověk | zobrazuje se |
| MŠMT, harmonogram přijímacího řízení | 2027 | ručně | zobrazuje se |
| RSS/Atom feedy školních webů4 ukazatele na webu | průběžně | celé automaticky | zobrazuje se |
| Veletrhy a přehlídky středních škol2 ukazatele na webu | 2027 | ručně | zobrazuje se |
| CERMAT, převod výsledků cvičných testů TAU1 ukazatel na webu | 2024 | ručně | zobrazuje se |
| DiPSy, kritéria přijímacího řízení (přepis z PDF)2 ukazatele na webu | 2026 | ručně | zobrazuje se |
| Hranice krajů, RÚIAN (ČÚZK) | 27. 9. 2026 | ručně | zobrazuje se |
Sady, které se nezobrazují, jsou v soupisu schválně. Má být úplný, aby se při návrhu nové funkce hledalo mezi tím, co projekt opravdu má. Jinak se hledá mezi tím, co už je na webu vidět, a to je past, do které jsem spadl. Jedna sada je dokonce vedená jako zobrazovat se nesmí: obsahuje starší dopočty, které se rozcházejí s nynější metodikou.
4.Jak se data dostanou na web
Žádný zdroj se nepřebírá přímo. Mezi zveřejněním dat a jejich zobrazením je linka o pěti krocích, kterou z větší části obsluhuje stroj, ale poslední slovo má vždy člověk:
- 1Zjištění. Stroj se pravidelně ptá sledovaných adres, zda se soubor změnil nebo přibyl nový ročník.
- 2Příprava. Stáhne soubor, spočítá jeho otisk, zkontroluje, že má očekávané sloupce, a zkusmo ho zpracuje stranou od webu.
- 3Oznámení. Pošle správci shrnutí: co se změnilo, jak velký je rozdíl proti tomu, co web ukazuje, a co se stane po schválení.
- 4Schválení. Správce odpoví „schvaluji“. Bez toho se nestane nic.
- 5Předání. Teprve pak vznikne návrh změny ke kontrole. I po jeho přijetí web zobrazí nový ročník až po samostatném přepnutí v registru.
Dvojí pojistka, tedy schválení a pak samostatné přepnutí období, je tam schválně. Data o přijímacím řízení vycházejí nejprve předběžně a upřesňují se o rok později. Kdyby se web aktualizoval sám, mohl by rodičům ukázat čísla, která se ještě změní, a nikdo by si toho nevšiml.
Kontrola struktury není formalita. Když zdroj přejmenuje list v tabulce nebo vypustí sloupec, zpracování se zastaví a ohlásí to, místo aby tiše vyrobilo web s prázdnými hodnotami.
5.Jak je web postavený
Stránky škol a oborů se předgenerují dopředu, ne až při návštěvě. Když si rodič otevře konkrétní gymnázium, server nepočítá nic: posílá hotovou stránku. Má to tři důsledky, které stojí za zmínku.
- Únor a květen web nepoloží. Návštěvnost má dva ostré vrcholy, kolem podávání přihlášek a kolem výsledků; v únoru je zhruba šestkrát vyšší než v létě. Předgenerovaná stránka stojí stejně u sta i u sta tisíc návštěv.
- Chyba v datech se projeví při sestavení, ne u návštěvníka.Kontroly běží nad celým katalogem najednou, takže je vidět, že například čtrnáct oborů sdílí jednu adresu, dřív než si toho všimne rodič.
- Provoz je levný. Většinu webu tvoří hotové soubory.
Dynamické části jsou jen tam, kde bez nich nejde být: vyhledávání, dotaz na dojezd hromadnou dopravou, odběr novinek e-mailem a portál, přes který školy spravují svůj profil. Ty používají databázi. Sklízeč novinek z webů škol běží dvakrát denně odděleně od webu, aby výpadek cizího feedu neovlivnil nic dalšího.
Nad tím vším běží 59 automatických testů a 8 pravidelných kontrol. Některé testy prohánějí celou datovou linku proti falešnému zdroji, aby se dalo ověřit i chování při rozbitém vstupu, aniž by se čekalo na to, až se rozbije doopravdy.
6.Jak vývoj probíhal
Od první verze 24. 1. 2026 do dneška vyšlo 34 vydání. Úplný přehled je ve veřejném changelogu; tady jsou jen měsíce a to hlavní, co v nich přibylo.
- První verze
- Simulátor a rozšířené funkce
- Vyhledávání a opravy bodového systému
- Nová struktura škol a průvodce
- Mobilní responsivita
- UX/UI audit a opravy přístupnosti
- Transfer-aware Dijkstra v2 a rebranding
- Grafická kompatibilita s Hlídačem státu
- Redesign dostupnosti: per-oborové detaily a opravy mapování škol
- Bug report widget, UX dopravních informací a zarovnání tabulek
- AI shrnutí inspekčních zpráv ČŠI na detailu školy
- Výsledky přijímaček 2026 a přehledy měst
- Simulátor výběru oboru a kalendář přijímaček 2027
- Ročník 2026 v katalogu a jak dopadli loňští uchazeči
- Portál pro školy a čerstvější data inspekcí
- Nová stránka oboru: jak těžké je se dostat
- Nová stránka školy
- Odběr novinek e-mailem
- Kolik bodů je potřeba a data z přijímaček 2026
- Každý obor má vlastní stránku a jeden průvodce místo dvou
- Maturita i na stránce oboru
- Stránky měst, novinky ze školních webů a odběr e-mailem
- Veletrhy středních škol a „Kde stojím“ na stránce oboru
Rozložení není rovnoměrné a nemá být. Únor stavěl dopravní dostupnost a inspekce, jaro patřilo výsledkům přijímaček, léto bylo mrtvé období a září přineslo data ročníku 2026, přepsané stránky školy i oboru, portál pro školy a odběr novinek.
7.Co by vývoj stál
Otázka zní: kolik by stálo objednat tentýž výsledek u dodavatele. Odpověď je odhad a nemůže být nic jiného, protože nikdo neodpracoval a nevykázal hodiny, ze kterých by se dala sečíst. Aby šel odhad oponovat po částech, je rozepsaný na bloky i s tím, proč u každého vychází tolik, kolik vychází.
Změřený rozsah k 21. 9. 2026: 66 471 řádků kódu a 112 dokumentů o zhruba 250 696 slovech. Dokumentace tu není přílepek: velkou část tvoří rozbory zdrojů a zdůvodnění, proč se ten či onen ukazatel počítá takhle a ne jinak.
| Blok | Řádků | Člověkodnů |
|---|---|---|
Web: stránky škol, oborů a vyhledávání 34 typů stránek, z nich se staticky generují tisíce adres pro jednotlivé školy a obory, k tomu vyhledávání, kraje, města, mapa webu a náhledy pro sociální sítě. Největší blok rozsahem a sám o sobě přímočarý. Drží ho ale pravidlo „každá nabídka má vlastní stránku“, a to si vynutilo vlastní systém adres oborů i testy, které ho hlídají. | 15 000 | 50 |
Katalog přijímacího řízení Import tří zdrojů CERMAT za tři ročníky, spárování nabídek mezi ročníky, výpočet souhrnů za obor a skupinu srovnatelných škol. Nejtěžší datová část a jediná, ke které se práce vrací pořád. Obory se mezi ročníky přejmenovávají, slučují a ruší, takže párování má vlastní skript, ruční přepisy a doklady o chybovosti. Odhad byl původně 45 dnů a zvedl se poté, co rozbor commitů ukázal, že katalog má nejvíc změn ze všech oblastí, rozložených do 41 různých dnů napříč celým projektem, a že třetina z nich jsou opravy. Opakovaný návrat do téhož místa je dražší než práce v jednom kuse, a pro tým spíš víc než pro jednoho člověka. | 12 000 | 60 |
Školní novinky z webů škol Sklízeč RSS a Atom feedů, zařazení zprávy do rubriky, databáze, odběr e-mailem s dvojím potvrzením, odesílač a správa. Sklízeč cizích feedů je práce s nespolehlivým vstupem. Každá škola má jiný tvar a část webů spojení rovnou odmítne podle toho, odkud přichází. Odběr e-mailem k tomu přidává souhlasy, tokeny a doby uložení. | 10 090 | 35 |
Dopravní dostupnost Převod jízdních řádů do grafu, hledání nejkratšího spojení, geokódování škol a zastávek, dvě rozhraní pro dotaz na dojezd. Algoritmicky nejnáročnější blok. Jízdní řády mají vlastní formáty, noční linky a přestupy vyžadují zvláštní ošetření a chyby se projeví až na konkrétní trase. | 7 504 | 30 |
Portál pro školy Účty škol, přihlášení odkazem bez hesla, pozvánky, profil školy, e-mailová komunikace a správcovské rozhraní. Běžná aplikační práce s účty a oprávněními. Rozsah je daný počtem stavů, kterými účet projde: pozvánka, uplatnění kódu, přihlášení, změna profilu, odhlášení, odebrání. | 8 211 | 25 |
Data České školní inspekce Import seznamu inspekcí, strojový rozbor inspekčních zpráv do porovnatelné podoby, profily škol z portálu INSPIS a jejich zobrazení. Řádků málo, práce hodně. Rozbor zpráv psaných volným textem potřebuje vlastní ověření, jak dobře vychází. Bez něj se na web dostanou nesprávná tvrzení o konkrétní škole a nikdo si toho nevšimne. | 4 135 | 25 |
Analýza dat a metodika Soupis zdrojů sloupec po sloupci, slovník ukazatelů, oponentury vlastních návrhů, audity a doklady k měřením. Tohle dělá datový analytik. Odhad odpovídá 112 dokumentům a zhruba 250 tisícům slov, které vznikly rozborem dat; popis hotového kódu v nich nehledejte. | - | 40 |
Návrh a vzhled Vizuální podoba, komponenty, chování na telefonu, přístupnost. Měří se špatně, protože je rozptýlený po celém webu. Odhad odpovídá jednomu redesignu a průběžné údržbě; dvě třetiny návštěv jsou z telefonu, takže to není okrajová položka. | - | 25 |
Simulátor a obtížnost přijetí Rozdělení uchazečů do kohort, pásma přijetí podle bodů a rozhraní, které k oboru vrátí, jak těžké bylo se na něj dostat. Kódu je málo. Rozhodnout, co se smí tvrdit, stálo mnohonásobně víc než ho napsat. Web schválně nepředpovídá přijetí konkrétního dítěte; odhad zahrnuje i varianty výpočtu, které jsem zamítl. | 2 556 | 20 |
Testy a průběžná kontrola 59 testů a osm automatických běhů, které je spouštějí nad každou změnou. Součet testů napříč bloky. Část z nich spouští celou datovou linku proti falešnému zdroji, což je dražší než běžné testy jednotek. Odhad se snížil z 20 dnů, protože nasazení a konfigurace odešly do vlastního bloku níže. | 6 991 | 15 |
Provoz, konfigurace a nasazení Nasazení webu a odděleně běžícího sklízeče, databáze, bezpečnostní hlavičky, správa závislostí, obsluha vygenerovaných souborů. V první podobě odhadu tenhle blok chyběl úplně, protože se v žádném adresáři nesoustředí a při inventuře podle složek se přehlédne. Rozbor commitů ho našel: 85 změn ve 27 různých dnech, tedy víc rozptýlených dnů než u většiny funkcí. Patří sem i práce, kterou nikdo neplánuje, například vygenerovaný soubor, který se rozejde se zdrojem a musí se srovnat. | - | 15 |
Datová linka Automatické hlídání, zda zdroje vydaly nová data, jejich stažení a kontrola, oznámení správci a po jeho schválení příprava převzetí. Malá věc s velkým dopadem. Bez ní je každé nové vydání dat ruční práce. Odhad je vyšší, než by rozsah napovídal, protože podstatná část sedí v ošetření případů, kdy zdroj změní tvar souboru. | 1 850 | 15 |
Maturitní výsledky Import dvanácti ročníků, napojení na obory a jejich zobrazení u školy i oboru. Přímočařejší než ostatní datové bloky, protože zdroj nese klíč, kterým se výsledky na obory napojí, aniž by se mapa dohledávala. | 2 014 | 12 |
| Vedení projektu, koordinace a přejímka16 % k práci výše, běžná režie u dodávky této velikosti | - | 59 |
| Celkem | 66 471 | 426 |
367 člověkodnů práce plus 59 na vedení. Pro představu: 426 člověkodnů odpovídá zhruba dvěma rokům jednoho člověka na plný úvazek, nebo osmi měsícům čtyřčlenného týmu.
Při běžných českých sazbách
| Varianta | Kč/hod | Cena dodávky |
|---|---|---|
Dolní mez Menší studio nebo samostatní vývojáři na dlouhodobé spolupráci. | 1 200 | 4 089 600 Kč |
Střed Vážený průměr rolí: datový inženýr, vývojář rozhraní, analytik, vedení projektu. | 1 400 | 4 771 200 Kč |
Horní mez Zavedená agentura se smlouvou o dostupnosti a zárukou na dílo. | 1 800 | 6 134 400 Kč |
Kde se odhad může mýlit
- Člověkodny jsou odhad z rozsahu a obtížnosti, ne záznam odpracovaného času. Nikdo takový záznam nevede, protože projekt tímto způsobem nevznikal.
- Poměr 181 řádků kódu na člověkoden je na horní hranici běžné produktivity. Odhad proto spíš podhodnocuje; tým, který stejná data vidí poprvé, by strávil víc času rozborem zdrojů než psaním.
- Cena nezahrnuje průzkum mezi uživateli, testování s rodiči a žáky, právní posouzení ani provoz po spuštění.
- Sazba dodavatele obsahuje marži a nefakturovaný čas. Vlastní zaměstnanecký tým by týž rozsah zvládl levněji, veřejná zakázka na obdobný portál bývá dražší.
- Odhad říká, co by stál tento výsledek. Neříká, že by ho tým v tomto tvaru navrhl; část rozhodnutí vznikla až z toho, co se v datech našlo.
- Dva bloky se opravily poté, co rozbor 514 commitů ukázal, kam čas opravdu šel: katalog dostal o patnáct dnů víc a provoz s konfigurací přibyl jako blok, který v první podobě chyběl. Ostatní bloky se nepřepisovaly, protože naměřený čas říká, jak rychle práci odbyl model, ne jak dlouho by trvala týmu. Dopravní dostupnost je toho případ: šest procent naměřeného času a přitom algoritmicky nejtěžší kus webu.
8.Kolik to stálo doopravdy
Žádný tým na tom nedělal. Web jsem postavil sám ve spolupráci s jazykovým modelem: určuju, co se má stát a proč, rozhoduju sporné otázky a dílo přebírám, model píše kód, rozbory a dokumentaci.
Rozdíl je řádový a stojí za to říct nahlas, čím to je. Nejdražší položkou klasické dodávky bývá rozbor dat. Někdo musí otevřít tabulku o devadesáti jedna sloupcích a zjistit, co v nich vlastně je. Pro tým jsou to týdny, tady odpoledne. Druhá věc: oponentura vlastního návrhu tu nestojí nic. Když se ukáže, že jsem ukazatel postavil špatně, přepíšu ho. Nehledám argument, proč to tak stačí.
Co nezlevnilo ani o korunu: rozhodnout, co se smí rodičům tvrdit. Právě proto mám v repozitáři 112 dokumentů. Většina z nich popisuje, proč se něco počítá tak a ne jinak, a co jsem zamítl. Jak kód funguje, v nich nenajdete.
Vedle sebe to tedy stojí takhle: zhruba 200 hodin proti 3 408 hodinám, které by na týž rozsah potřeboval dodavatelský tým. Dělit jedno druhým a vydávat výsledek za míru úspory by bylo přehnané. Obě čísla jsou odhady a každé se může mýlit o desítky procent. Řádový rozdíl ta dvojice ukazuje spolehlivě, přesný násobek už ne.
Oba způsoby vedení se liší hlavně v tom, kdy se rozhoduje, co web bude umět. Cena je až důsledek. Samostatná stránka staví vedle sebe sedm fází veřejné zakázky a pětikrokovou smyčku, kterou vznikal tenhle web, a dokládá to pěti případy, kdy se rozhodnutí ukázalo jako špatné až po tom, co padlo.
9.Co stojí provoz
Provoz je oproti vývoji zanedbatelný, protože web je z velké části hotové soubory. Platí se čtyři věci:
| Položka | K čemu | Řádově měsíčně |
|---|---|---|
| Hosting webu | Sestavení a rozvoz stránek, měření návštěvnosti | 20 USD |
| Sklízeč novinek | Dvakrát denně obejde feedy škol; běží odděleně od webu | 5 USD |
| Databáze | Odběry e-mailem, novinky škol, účty portálu | 0 až 19 USD |
| Doména | prijimackynaskolu.cz | do 30 Kč |
Odhad z veřejných ceníků, ne z faktur; databáze je zatím v bezplatném pásmu. Dohromady řádově 600 až 1 100 Kč měsíčně při kurzu kolem 23 Kč za dolar. Odesílání e-mailů se v tomto objemu vejde do bezplatného pásma.
Podstatné je, jak se částka chová při růstu. Předgenerované stránky rostou s návštěvností pomalu; kdyby se únorová špička ztrojnásobila, hosting to nepocítí. Dražší by bylo spíš rozšíření odběru novinek, kde se platí za odeslané zprávy.
Otázky k tomuto shrnutí, k metodice výpočtů nebo k datům: eda@prijimackynaskolu.cz. Zdrojový kód a všechny rozbory jsou na GitHubu.