[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"case-pl-psylife":3,"cases-pl-all":82},{"id":4,"title":5,"architecture":6,"body":18,"category":43,"cover":44,"decisions":45,"description":38,"extension":55,"featured":56,"hash":57,"meta":58,"metrics":59,"navigation":56,"order":66,"path":67,"result":68,"role":69,"seo":70,"slug":71,"stack":72,"stem":71,"summary":78,"timeline":79,"url":80,"__hash__":81},"cases_pl\u002Fpsylife.md","PsyLife.me — platforma praktyki",{"top":7,"core":11,"bottom":14},[8,9,10],"psylife.me · Nuxt 4","blog \u002F CMS","PWA admin",{"title":12,"sub":13},"NestJS API","rezerwacje · CMS · powiadomienia",[15,16,17],"MariaDB","Redis · BullMQ","web push",{"type":19,"value":20,"toc":37},"minimark",[21,26,30,34],[22,23,25],"h2",{"id":24},"problem","Problem",[27,28,29],"p",{},"Praktyka psychologiczna potrzebowała jednego miejsca na treści, rezerwacje konsultacji i powiadomienia, w dwóch językach.",[22,31,33],{"id":32},"podejście","Podejście",[27,35,36],{},"Frontend Nuxt 4 na API NestJS z MariaDB, zadaniami w tle Redis\u002FBullMQ i web push — od architektury po wdrożenie.",{"title":38,"searchDepth":39,"depth":39,"links":40},"",2,[41,42],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"zdrowie \u002F platforma","\u002Fwork\u002Fpsylife.webp",[46,49,52],{"title":47,"text":48},"Zadania w tle w kolejce","Redis i BullMQ wykonują pracę w tle poza cyklem żądania.",{"title":50,"text":51},"Powiadomienia w czasie rzeczywistym","Web push informuje klientów o rezerwacjach.",{"title":53,"text":54},"Treści w tym samym produkcie","Zintegrowany blog\u002FCMS i rezerwacja konsultacji w jednej platformie.","md",true,"0d2f6b3",{},[60,63],{"value":61,"label":62},"UA\u002FRU","wielojęzyczna",{"value":64,"label":65},"10","klientów",3,"\u002Fpsylife","→ UA\u002FRU · 10 klientów · panel PWA","Właściciel · full-stack",{"title":5,"description":38},"psylife",[73,74,75,76,77],"nuxt 4","nestjs","mariadb","bullmq","pwa","Wielojęzyczna (UA\u002FRU) platforma z blogiem\u002FCMS, rezerwacją konsultacji i powiadomieniami w czasie rzeczywistym — od A do Z.","2026 · stałe wsparcie","psylife.me","pprTgREQVl14oKHRcAR1pJAmkMnhpiMLKnsi9higVI8",[83,146,205],{"id":84,"title":85,"architecture":86,"body":96,"category":112,"cover":113,"decisions":114,"description":38,"extension":55,"featured":56,"hash":124,"meta":125,"metrics":126,"navigation":56,"order":133,"path":134,"result":135,"role":136,"seo":137,"slug":138,"stack":139,"stem":138,"summary":143,"timeline":144,"url":88,"__hash__":145},"cases_pl\u002Fthailand-rental.md","Platforma wynajmu aut, Tajlandia",{"top":87,"core":91,"bottom":94},[88,89,90],"thailandrentalcars.com","phuketcarrentals.com","Quasar admin (PWA)",{"title":92,"sub":93},"Wspólny rdzeń rezerwacji","Node.js (Express) · silnik rezerwacji · API",[15,95],"Docker",{"type":19,"value":97,"toc":108},[98,100,103,105],[22,99,25],{"id":24},[27,101,102],{},"Dwie marki wynajmu (thailandrentalcars.com i phuketcarrentals.com) potrzebowały jednego niezawodnego systemu rezerwacji — bez kopiowania kodu dla każdego miasta.",[22,104,33],{"id":32},[27,106,107],{},"Architektura multi-site: jeden backend Node.js (Express), panel Quasar (PWA) i dwie witryny Nuxt 4, wszystko w Dockerze — z transakcyjnym procesem rezerwacji i płatności oraz SEO zaplanowanym od pierwszego dnia.",{"title":38,"searchDepth":39,"depth":39,"links":109},[110,111],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"podróże \u002F wynajem","\u002Fwork\u002Fthailand-rental.webp",[115,118,121],{"title":116,"text":117},"Jeden backend, wiele witryn","Wspólny backend i panel obsługują dwa niezależne frontendy Nuxt 4, więc nowe miasto nie wymaga kopiowania rdzenia.",{"title":119,"text":120},"Transakcyjna rezerwacja i płatność","Autoryzacja, potwierdzenie właściciela i pobranie płatności w jednym procesie, z idempotencją i ochroną przed podwójną rezerwacją.",{"title":122,"text":123},"SEO jako część inżynierii","Odpowiadam za SEO i strategię startu razem z produktem i prowadzę content managera.","a3f9c21",{},[127,130],{"value":128,"label":129},"2 → 1","frontendy na jednym backendzie",{"value":131,"label":132},"5","rezerwacji",1,"\u002Fthailand-rental","→ 2 strony · 1 backend · 5 rezerwacji","Architektura · full-stack · SEO",{"title":85,"description":38},"thailand-rental",[73,140,75,141,142],"express","quasar pwa","docker","Dwie marki na jednym silniku rezerwacji i panelu — nowe miasto to konfiguracja, a nie nowy projekt.","w trakcie","4KXUHT2Tv1lQgXf78_BcJ31ObZ3DpnMN7f2xWiIyX0Y",{"id":147,"title":148,"architecture":149,"body":158,"category":174,"cover":175,"decisions":176,"description":38,"extension":55,"featured":56,"hash":186,"meta":187,"metrics":188,"navigation":56,"order":39,"path":194,"result":195,"role":196,"seo":197,"slug":198,"stack":199,"stem":198,"summary":201,"timeline":202,"url":203,"__hash__":204},"cases_pl\u002Fdomodessa.md","Platforma nieruchomości — domodessa.com",{"top":150,"core":153,"bottom":156},[151,152],"domodessa.com · Nuxt 4 SSR","Quasar admin",{"title":154,"sub":155},"Express API","ogłoszenia · blog · panel",[15,95,157],"CI\u002FCD",{"type":19,"value":159,"toc":170},[160,162,165,167],[22,161,25],{"id":24},[27,163,164],{},"Firma z branży nieruchomości potrzebowała działającej platformy szybko, a nie długiego projektu.",[22,166,33],{"id":32},[27,168,169],{},"Nuxt 4 z SSR na froncie, API w Express, panel w Quasar, MariaDB i Docker z CI\u002FCD — dostarczone przez jednego developera.",{"title":38,"searchDepth":39,"depth":39,"links":171},[172,173],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"nieruchomości","\u002Fwork\u002Fdomodessa.webp",[177,180,183],{"title":178,"text":179},"Najpierw rdzeń","Odpowiadałem za całość i wdrożyłem produkt na produkcję w około dwa tygodnie.",{"title":181,"text":182},"Architektura bloga i stylów","Zbudowałem blog i architekturę stylów frontendu, żeby nowe strony były spójne.",{"title":184,"text":185},"Stabilnie w każdym środowisku","Rozwiązałem problemy z siecią Dockera, SSR i hydracją, by lokalnie i na produkcji działało tak samo.","c51e8aa",{},[189,192],{"value":190,"label":191},"~2 tyg.","od zera do produkcji",{"value":64,"label":193},"ofert","\u002Fdomodessa","→ od zera do produkcji w ~2 tygodnie · 10 ofert","Samodzielny full-stack developer",{"title":148,"description":38},"domodessa",[73,140,200,75,142],"quasar","Od zera do działającego produktu na produkcji w około dwa tygodnie — zbudowane od A do Z.","~2 tygodnie do produkcji","domodessa.com","lLWwuQJMqFEWwhDpr8CGKzWbDsH_tCloJZpyL5NUKYU",{"id":4,"title":5,"architecture":206,"body":210,"category":43,"cover":44,"decisions":224,"description":38,"extension":55,"featured":56,"hash":57,"meta":228,"metrics":229,"navigation":56,"order":66,"path":67,"result":68,"role":69,"seo":232,"slug":71,"stack":233,"stem":71,"summary":78,"timeline":79,"url":80,"__hash__":81},{"top":207,"core":208,"bottom":209},[8,9,10],{"title":12,"sub":13},[15,16,17],{"type":19,"value":211,"toc":220},[212,214,216,218],[22,213,25],{"id":24},[27,215,29],{},[22,217,33],{"id":32},[27,219,36],{},{"title":38,"searchDepth":39,"depth":39,"links":221},[222,223],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},[225,226,227],{"title":47,"text":48},{"title":50,"text":51},{"title":53,"text":54},{},[230,231],{"value":61,"label":62},{"value":64,"label":65},{"title":5,"description":38},[73,74,75,76,77],1792428737326]