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