Tomáš Mičulka

PHP / Nette / webové aplikace / backend

Webové aplikace, které dávají smysl i po letech.

Vyvíjím webové aplikace v PHP a Nette. Zaměřuji se na čistý a udržitelný kód, databáze, API, Docker, hosting a reálný provoz aplikací. Baví mě tvořit systémy, které jsou rychlé, přehledné a dobře se s nimi pracuje — jak pro vývojáře, tak pro klienta.

O mně

Jsem Tomáš Mičulka a věnuji se vývoji webových aplikací. Nejblíž mám k backendu, návrhu aplikací, API a spolehlivému provozu projektů v praxi.

Baví mě stavět systémy, které nejsou jen funkční na první spuštění, ale dají se dobře rozvíjet i za několik let. Přemýšlím nad strukturou projektu, čistotou kódu i tím, aby aplikace dávala smysl z pohledu vývojáře i klienta.

Mám blízko k praktickému přístupu. Nepoužívám technologie jen proto, že jsou zrovna populární — raději volím řešení, která jsou spolehlivá, přehledná a dobře udržitelná. Zajímá mě kvalita architektury, doménový návrh, automatizace vývoje i dlouhodobá stabilita projektu.

Vedle programování mě baví tvořit i mimo monitor — práce kolem domu, zahrada, dřevo nebo různé vlastní projekty v dílně. Možná i proto mám rád věci, které jsou postavené poctivě a fungují bez zbytečné složitosti.

Dev stack

PHP / Nette / Latte

Backend

Backend vyvíjím převážně v PHP. Pro webové aplikace a administrace nejčastěji používám Nette a Latte, protože mi dávají stabilní základ, dobrou strukturu a praktické nástroje pro každodenní vývoj.

Důležitá je pro mě čitelnost kódu, jasně oddělená logika a projekt, ve kterém se dá dobře orientovat i po delší době. Snažím se držet PSR standardů, rozumně pracovat se službami, dependency injection a navrhovat backend tak, aby se dal bezpečně rozvíjet.

Součástí backendu je pro mě i provozní stránka aplikace — například smysluplné logování přes Monolog, práce s konfigurací a příprava aplikace na reálné prostředí, ve kterém bude běžet.

PHP, Nette, Latte, Composer, Monolog, PSR

Mezzio / REST / JSON

API

U API preferuji Mezzio. Líbí se mi jeho přímočarý přístup, práce s middleware a dobrá návaznost na PSR standardy. Pro API-first aplikace mi dává větší smysl než používat jeden framework na všechno za každou cenu.

Při návrhu API řeším hlavně přehlednou strukturu endpointů, srozumitelné rozhraní, oddělení aplikační logiky a stabilní základ pro další rozvoj. API by mělo být čitelné nejen pro klientskou aplikaci, ale i pro vývojáře, který s ním bude dál pracovat.

Důraz kladu na konzistentní chování, rozumnou práci s chybami, logování a jednoduchou orientaci v tom, co se v aplikaci děje.

Mezzio, API, REST, JSON, PSR, Middleware

DDD / CQRS / návrh aplikací

Architektura

U složitějších projektů se věnuji také návrhu architektury. Zajímá mě, aby aplikace nebyla jen soubor funkčních tříd, ale měla jasně rozdělené odpovědnosti a strukturu, která dává smysl dlouhodobě.

Pracuji s principy DDD a CQRS tam, kde projektu skutečně pomáhají. Neberu je jako dogma, ale jako způsob, jak lépe oddělit doménovou logiku, aplikační vrstvu a technické detaily.

Důležité je pro mě najít rovnováhu mezi čistým návrhem a praktičností. Architektura má vývoj zjednodušovat, ne zbytečně komplikovat.

DDD, CQRS, Domain, Application Layer, Services

Doctrine ORM / Redis / MongoDB / Elasticsearch

Databáze a data

Datovou vrstvu nejčastěji řeším přes Doctrine ORM. Preferuji práci s modelem a jasně popsanými vztahy před tím, aby byla databáze rozesetá napříč celou aplikací bez jednotného přístupu.

Pro cachování používám Redis, typicky tam, kde dává smysl zrychlit opakované operace nebo odlehčit aplikaci při častém čtení dat. Cache beru jako součást návrhu, ne jako náhodnou optimalizaci na poslední chvíli.

Zkušenosti mám také s MongoDB a Elasticsearch. Používám je ve chvíli, kdy se hodí pro konkrétní typ dat, vyhledávání nebo práci s větším množstvím informací.

Doctrine ORM, Redis, MongoDB, Elasticsearch, Cache, SQL

Docker / Docker Swarm / deployment

Provoz a nasazení

Aplikace nejčastěji provozuji v kontejnerech, typicky nad Docker Swarmem. Díky tomu mám lepší kontrolu nad prostředím, konfigurací i tím, jak se aplikace chová po nasazení.

Při vývoji myslím na to, že aplikace nebude existovat jen lokálně na počítači, ale bude muset spolehlivě běžet v reálném prostředí. Řeším proto konfiguraci, logování, cachování, nasazování i návaznost na další služby.

Zároveň se snažím volit řešení podle velikosti a potřeb projektu. Ne každý projekt potřebuje složitou infrastrukturu — někdy je lepší jednoduché a dobře udržovatelné řešení.

Docker, Docker Swarm, Containers, Deployment, Runtime

PHPStan / Slevomat Coding Standard

Kvalita kódu

Kvalita kódu je pro mě důležitá hlavně kvůli dlouhodobé udržitelnosti. Kód má být čitelný, předvídatelný a měl by dávat smysl i ve chvíli, kdy se k němu člověk vrátí po několika měsících.

Používám PHPStan pro statickou analýzu a Slevomat Coding Standard pro držení jednotného stylu kódu. Pomáhá mi to zachytit chyby dřív, udržet konzistentní zápis a mít nad projektem větší kontrolu.

Nejde mi o formální čistotu za každou cenu, ale o praktický výsledek — méně skrytých problémů, jednodušší úpravy a kód, který se dá bezpečně rozvíjet.

PHPStan, Slevomat Coding Standard, Composer, PSR, Static Analysis

Kontakt

Chcete se ozvat, něco probrat nebo navázat spolupráci?

tomas@miculka.cz LinkedIn