Michal Nešťák
Bratislava, Slovenskomichal@nestak.eu

Som Michal, backend developer z Bratislavy.

Vyvíjam API a integrácie v PHP a Symfony a k tomu vlastné aplikácie pre Mac, ktoré chránia súkromie.

Č. 01

Backend

Navrhujem a vyvíjam backendy v PHP a Symfony: API, integrácie so systémami iných firiem a platobné systémy. Pripravím aj Docker prostredie a CI, cez ktoré sa nasadzujú.

Pracujem formou agentického vývoja s AI a každú zmenu, ktorá ide von, kontrolujem sám.

POST /webhooks/payments200 OK
  1. prijaté payment.captured
  2. podpis overený
  3. prvé doručenie, kľúč idempotencie uložený
  4. objednávka 24117 označená ako zaplatená
  5. odpoveď 200 OK
Opakované doručeniaignorované
Obr. 1 - Príklad: webhook o platbe, overený, zapísaný raz a zodpovedaný za 41 ms.

Presun platieb rezervačnej platformy zo Stripe na Revolut

Problém
Rezervačná platforma zájazdov na podujatia, s balíkmi hotela a letu, musela presunúť platby kartou zo Stripe na Revolut bez prerušenia objednávok. Platobná relácia v Stripe platí najviac 24 hodín, takže zákazník nikdy nemohol dostať na zaplatenie zálohy viac času.
Čo som postavil
Platobné rozhranie nezávislé od jedného poskytovateľa a za ním klient pre Revolut. Webhooky sa overujú cez HMAC s časovým oknom proti opakovanému odoslaniu, dajú sa bezpečne prijať dvakrát aj v ľubovoľnom poradí a ignorujú sa, ak nenesú náš tag objednávky, pretože účet obchodníka zdieľajú aj iné aplikácie. Keď objednávka vyprší nezaplatená, zablokované hotelové izby sa uvoľnia.
Výsledok
Od návrhu po zlúčenie do hlavnej vetvy za dva dni. Objednávka na frontende sa nezmenila, k Stripe sa dá vrátiť zmenou jedného riadku konfigurácie a lehota na zaplatenie už nie je obmedzená na 24 hodín (Revolut dovoľuje až 30 dní).

AI parser cenníkov od dodávateľov

Problém
Cestovná kancelária dostáva od dodávateľov hotelové a golfové cenníky ako PDF a tabuľkové súbory, každý v inom formáte. Niekto ich musel čítať a ceny ručne prepisovať do rezervačných systémov.
Čo som postavil
Asynchrónne spracovanie v Symfony, ktoré každú hodinu stiahne súbory dodávateľov z Google Drive a zistí, čo ktorý obsahuje. Tabuľky z nich vytiahne pomocná služba v Pythone, LLM z nich urobí štruktúrované ceny a druhý prechod AI ich skontroluje a opraví. Hotely sa prepoja so zdieľanou databázou hotelov firmy, len keď je zhoda istá, a náklady na AI sa sledujú pre každú úlohu aj projekt.
Výsledok
Ceny dodávateľov sa dajú vyhľadávať v administrácii aj cez partnerské REST API. Určujú ceny balíkov na predajných weboch firmy a výhodnejšie ponuky posielajú do jej nástroja na sledovanie cien. Spracovanie má približne 725 automatických testov.

Presun rezervačnej platformy z CRM do vlastnej databázy

Problém
Tá istá platforma zájazdov na podujatia používala ako jedinú databázu headless CRM: každá stránka partnera potrebovala 3 až 4 volania za sebou do API s limitom požiadaviek a nemala transakcie. Potvrdili sa dve chyby zo súbežného prístupu: poslednú izbu si mohli rezervovať dvaja zákazníci naraz a zákazníci dostávali potvrdenie platby dvakrát.
Čo som postavil
Dátová vrstva na MariaDB a Doctrine s jednorazovým importom z CRM. Počty izieb a stavy platieb sa menia atomicky, výplaty partnerom bežia v transakciách a rozhranie CRM nahradila pre zamestnancov administrácia v EasyAdmin.
Výsledok
Prechod trval dva dni a verejné API zostalo rovnaké do posledného bajtu. Obe chyby zo súbežného prístupu sú opravené a CRM sa už vôbec nepoužíva.

Č. 02

Aplikácie

SealedVoice

Už čoskoro

SealedVoice prepisuje dôverné stretnutia a diktáty priamo na vašom Macu, bez pripojenia na internet.

Viac o aplikácii SealedVoicesealedvoice.nestak.eu

Č. 03

O mne

Som backend developer z Bratislavy. Pre klientov vyvíjam API a integrácie v PHP a Symfony. Popri tom robím vlastné aplikácie pre Mac, pre ľudí, ktorí nemôžu nahrať spis klienta do cloudovej služby. V oboch prípadoch platí rovnaké pravidlo: údaje nechávam tam, kam patria, a nezbieram nič, čo netreba.

Č. 04

Kontakt

Backend

Ak ide o backend, napíšte mi. Každý e-mail čítam sám a odpovedám po slovensky aj po anglicky.

SealedVoice

Všetko o aplikácii aj zoznam záujemcov nájdete na jej stránke:

sealedvoice.nestak.eu

Mesto
Bratislava, Slovensko (SEČ)