Hledám částečný úvazek při studiu, v Praze nebo hybridně

Ahoj, jsem Tobiáš Stavím spolehlivý software, datové pipeline a užitečnou automatizaci.

Studuji na VŠE v Praze a s Pythonem, SQL a aplikačním kódem měním surová data a praktické problémy v systémy, které fungují: pipeline pro načítání dat, aplikace nad databází a skripty, které je propojují.

Cesta, kterou prochází většina mých projektů, a nástroje, které na ní používám.
  1. sběr
    • Excel a CSV
    • REST API
    • E-mail a PDF
  2. úprava
    • Python
    • Pandas
    • Validace
  3. uložení
    • PostgreSQL
    • MySQL
    • SQLite
  4. výstup
    • Flask
    • API
    • Webová rozhraní

Vybrané projekty

Každý pokrývá celou cestu: odkud data přicházejí, jak se kontrolují a ukládají a jak je nakonec lidé používají.

TS Financial Intelligence

Datová platforma pro trhy, makro a bydlení

V aktivním vývoji

  • Python
  • FastAPI
  • SQLAlchemy
  • Alembic
  • PostgreSQL
  • SQLite
  • NumPy
  • React
  • TypeScript
  • pytest
  • Playwright

Analytický terminál, který sbírá tržní ceny, oficiální statistiky, zprávy centrálních bank a data o českém bydlení z více než patnácti zdrojů do jedné databáze a zpřístupňuje je přes backend ve FastAPI a rozhraní v Reactu. Každé číslo si nese svůj zdroj, datum a aktuálnost.

Přehled trhů: roční graf výkonnosti S&P 500, Nasdaq 100, Euro Stoxx 50, bitcoinu a ropy Brent přepočtený na 100, watchlist a souhrn indexů, akcií, kryptoměn, komodit, měn a výnosů dluhopisů v korunách.
  1. zdroje
    • Veřejná API
    • CSV a SDMX
    • RSS kanály
  2. adaptéry
    • Normalizované záznamy
    • Omezení počtu dotazů
  3. validace
    • Duplicity
    • Budoucí data
    • Neplatné hodnoty
  4. úložiště
    • SQLAlchemy
    • Alembic
    • SQLite nebo PostgreSQL
  5. výstup
    • Služby ve FastAPI
    • React + TypeScript
Každý zdroj běží ve vlastní transakci. Neúspěšný běh se vrátí zpět, ponechá poslední platná data a zaznamená chybu, takže jeden rozbitý zdroj nikdy nevyprázdní graf.

Co jsem postavil

Tržní ceny, makroekonomické statistiky a data o bydlení leží na mnoha místech s různými formáty, termíny aktualizací a licencemi. Porovnat je znamená ručně sladit jednotky, data a měny a snadno se ztratí přehled o tom, odkud číslo pochází a jestli ještě platí.

  • Adaptéry pro veřejné zdroje včetně ČNB, ECB, US Treasury, Bundesbanky, FRED, Eurostatu, ČSÚ, SEC EDGAR, Burzy cenných papírů Praha a CoinGecko a pro zdroje s API klíčem, jako jsou Twelve Data a ČNB ARAD.
  • Pipeline pro načítání dat, která každou dávku před uložením zvaliduje a každý běh zaloguje.
  • Analytiku pro porovnání až osmi instrumentů: přepočtenou výkonnost, rizikové statistiky, klouzavou korelaci a převod měn kurzem ze stejného dne.
  • Pohledy na český realitní trh: regionální cenové statistiky, data o hypotékách z ARAD, vyhledávání inzerátů přes Realitní pes a investiční kalkulačku.
  • Účty přes Google OAuth s vlastními watchlisty, uloženými srovnáními a poznámkami pro každého uživatele.

Technická rozhodnutí

Původ u každého čísla
Každá řada nese svůj zdroj, datum pozorování, čas stažení a příznak zastaralosti vypočtený z frekvence aktualizací. Rozhraní je zobrazuje přímo u čísla.
Validace před uložením
Duplicity, budoucí data, nekonečné hodnoty, nekladné ceny a svíčky s maximem pod minimem se odmítnou a spočítají podle důvodu dřív, než cokoli dorazí do databáze.
Dotazy na vyžádání s ohledem na kvótu
Inzeráty nemovitostí pocházejí z API s malou měsíční kvótou, proto se stahují jen na vyžádání, ukládají do cache, souběžné dotazy se slučují zámkem a opakují se s omezeným odstupem.
Testy bez přístupu k síti
Parsery zdrojů se testují proti nahraným odpovědím. CI spouští backendové testy nad SQLite i PostgreSQL a pak typově kontroluje, lintuje, testuje a sestavuje frontend.

V repozitáři 150 backendových testů, 7 migrací v Alembicu a workflow v GitHub Actions s ruff, pytestem nad SQLite i PostgreSQL, TypeScriptem, ESLintem, Vitestem a produkčním buildem.

Nástroj pro výzkum a učení. Neposkytuje investiční doporučení.

ITG Lunch App

Systém pro školní jídelnu se skenováním RFID karet

Maturitní projekt, 2026

  • Vue 3
  • Vite
  • Vue Router
  • Socket.IO
  • Firebase Auth
  • Node.js
  • Express
  • Python
  • pyscard
  • Flask
  • SQLite

Webová aplikace pro výdej obědů na 1. IT Gymnáziu, která vznikla pod pracovním názvem Luncheroo. Studenti vidí svůj dnešní oběd, mohou ho darovat spolužákovi nebo věnovat do společného fondu. Personál jídelny vydává obědy přiložením ISIC karty k RFID čtečce. Vznikla se spolužákem: moje maturitní práce pokrývá frontend ve Vue 3 a integraci čtečky karet.

Studentský přehled aplikace na obědy: uvítání, dnešní stav oběda bez objednávky a rychlé akce pro darování oběda a veřejnou burzu obědů.
  1. karta
    • ISIC karta
    • ACR122U
    • Raspberry Pi
  2. most
    • Klient čtečky v Pythonu
    • Node.js + Socket.IO
  3. rozhraní
    • Vue 3
    • Obrazovka skeneru
  4. backend
    • Flask REST API
    • JWT
  5. úložiště
    • Flask-SQLAlchemy
    • SQLite
Backend ověří, že karta patří studentovi, který má na dnešek oběd a ještě ho nedostal, výdej zaznamená a změnu pošle přes Socket.IO na všechny otevřené obrazovky. Denní objednávky přicházejí jako PDF, které backend zpracuje.

Co jsem postavil

Obědy se vydávaly podle vytištěného seznamu: každý student musel najít své jméno, odškrtnout ho a nahlásit kuchařce jídlo. Ve špičce to bylo pomalé, jména se pletla a zaplacený oběd nepřítomného studenta propadl.

  • Frontend ve Vue 3: studentský přehled, darování oběda jinému studentovi a veřejný fond pro darování a získání obědů.
  • Administraci pro jídelnu: živou obrazovku skeneru, přiřazování ISIC karet studentům, správu uživatelů a denní statistiky.
  • Most ke čtečce karet: klient v Pythonu přečte UID karty ze čtečky ACR122U a malý server v Node.js ho přes Socket.IO pošle do aplikace.
  • Přihlášení přes Google pomocí Firebase, vyměněné za vlastní JWT aplikace, a hlídání rout, které pustí do administrace jen správce.

Technická rozhodnutí

REST pro akce, Socket.IO pro živý stav
Přihlášení, darování a přiřazení karty jdou přes REST endpointy. Skeny, počty obědů a veřejný fond se aktualizují přes WebSockety, takže každá obrazovka v jídelně je aktuální.
Most ke čtečce jen přeposílá
Server čtečky jen rozešle načtené UID. Všechny kontroly probíhají na backendu, takže hardwarová část nedrží žádná pravidla, která by se mohla rozejít.
Zpětná vazba pro frontu
Skener vždy ukazuje právě jeden ze čtyř stavů s vlastní barvou a ikonou: čekání, vydáno, varování (neznámá karta nebo žádný oběd) a chyba. Po úspěšném skenu se sám vrátí do výchozího stavu, připravený na další kartu.

V repozitáři Odevzdáno jako moje maturitní práce na 1. IT Gymnáziu v roce 2026 a otestováno se skutečnou čtečkou ACR122U.

Campusello

Aplikace na studentský rozpočet

V aktivním vývoji

  • Python
  • FastAPI
  • SQLAlchemy
  • SQLite
  • Vue 3
  • TypeScript
  • Pinia
  • Tailwind CSS
  • Web Push

Česká aplikace na rozpočet pro studenty. Sleduje útratu kartou i v hotovosti, rozpočty podle kategorií, cíle spoření a pravidelné platby a spočítá, kolik můžete dnes utratit. Klient ve Vue 3, API ve FastAPI, instalovatelná do telefonu jako PWA. Existující řešení mi nevyhovovaly. Tak sem si vytvořil vlastní.

Přehled Campusella: celkový zůstatek peněženek po účtech, denní limit na útratu i se vzorcem výpočtu, odhad, zda peníze vydrží do výplaty, a denní rozpočty podle kategorií.
  1. klient
    • Vue 3
    • Pinia
    • PWA
  2. api
    • FastAPI
    • Schémata v Pydanticu
  3. pravidla
    • Denní limit
    • Zůstatky peněženek
  4. úložiště
    • SQLAlchemy
    • SQLite
  5. notifikace
    • Web Push
Denní limit je zůstatek peněženky mínus pravidelné platby, které tento měsíc ještě nebyly zaplaceny, vydělený počtem zbývajících dní včetně dneška.

Co jsem postavil

Studentské peníze jsou malé a nepravidelné... věřte mi, já o tom něco vím. Měsíční součet vám neřekne, jestli si dnes něco můžete dovolit, když ještě musí odejít nájem a předplatná.

  • Transakce s kategoriemi napříč oddělenými peněženkami pro kartu a hotovost.
  • Rozpočty podle kategorií, cíle spoření a pravidelné platby.
  • Denní limit útraty podle toho, co zbude po nezaplacených platbách.
  • Přehledy a export všech transakcí do CSV a JSON.
  • Web push připomínky pravidelných plateb a kurz EUR z ČNB.
  • Přihlášení přes Google i e-mailem s hashováním hesel Argon2 a JWT.

Technická rozhodnutí

Zůstatky, které sedí
Úprava nebo smazání transakce posune odpovídající zůstatek karty nebo hotovosti o čistý rozdíl, místo aby se vše přepočítávalo od nuly.
Data oddělená pro každý účet
Transakce, rozpočty, peněženky, platby i profily patří přihlášenému uživateli. Registraci lze omezit na povolený seznam e-mailových adres.
Opatrné nahrávání souborů
Profilové fotky se před uložením dekódují v Pillow s kontrolou na dekompresní bomby.

V repozitáři Obsahuje blueprint pro Render, který nasadí API s trvalým úložištěm a statického klienta.

Portrét: Tobiáš Svášek

O mně

Studuji Finance na Fakultě financí a účetnictví Vysoké školy ekonomické v Praze (VŠE) a inženýrství se učím hlavně tím, že stavím. Moje projekty obvykle začínají praktickou otázkou a nakonec projdou všemi vrstvami: stažením dat z vnějšího zdroje, jejich vyčištěním, uložením do schématu, které vydrží, a rozhraním nebo exportem nad nimi.

  1. VŠE v Praze Finance na Fakultě financí a účetnictví
  2. Maturita 2026 školní aplikace na obědy se skenováním karet ISIC
  3. 15+ datových zdrojů od ČNB a ECB po Eurostat, v jedné databázi
  4. 150 backendových testů v TS Financial Intelligence

Právě to mě táhne k datovému inženýrství. Chci vědět, odkud číslo pochází, co se s ním cestou stalo a co má systém dělat, když zdroj selže. Rád bych tuhle práci dělal v týmu, který provozuje skutečné pipeline, a naučil se, jak se dělá ve větším měřítku.

S čím pracuji

Seskupené podle toho, k čemu je používám. První řádek v každé skupině je to, s čím pracuji nejvíc; druhý je to, co jsem použil v projektech a umím o tom mluvit.

Data a databáze

Schémata, dotazy a transformace za každým projektem tady, od prototypů nad SQLite po PostgreSQL v CI.

  • SQL
  • PostgreSQL
  • SQLAlchemy
  • Pandas
  • Zpracování a transformace dat

Dále MySQL, SQLite, Migrace v Alembicu

Programování

Python pro backendy, pipeline a skripty. JavaScript a TypeScript pro rozhraní.

  • Python
  • SQL
  • JavaScript

Dále TypeScript, C#, PHP, HTML a CSS

Backend a aplikace

Webové aplikace nad databází s přihlašováním a napojením na externí služby.

  • Flask
  • FastAPI
  • REST API a integrace
  • Autentizace (Google OAuth, JWT)

Dále .NET, React, Vue

Automatizace a nástroje

Skripty, které přesouvají data mezi systémy, aby to nikdo nemusel dělat ručně.

  • Skriptování v Pythonu
  • Zpracování e-mailů a PDF
  • Import a export dat

Dále Plánované úlohy, Linux a příkazová řádka, Git a CI

Hledáte stážistu na data, Python nebo backend, nebo někoho, kdo chce prostě něco tvořit? Rád se o tom dozvím víc.