[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"case-pl-domodessa":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":38,"path":65,"result":66,"role":67,"seo":68,"slug":69,"stack":70,"stem":69,"summary":76,"timeline":77,"url":78,"__hash__":79},"cases_pl\u002Fdomodessa.md","Platforma nieruchomości — domodessa.com",{"top":7,"core":10,"bottom":13},[8,9],"domodessa.com · Nuxt 4 SSR","Quasar admin",{"title":11,"sub":12},"Express API","ogłoszenia · blog · panel",[14,15,16],"MariaDB","Docker","CI\u002FCD",{"type":18,"value":19,"toc":36},"minimark",[20,25,29,33],[21,22,24],"h2",{"id":23},"problem","Problem",[26,27,28],"p",{},"Firma z branży nieruchomości potrzebowała działającej platformy szybko, a nie długiego projektu.",[21,30,32],{"id":31},"podejście","Podejście",[26,34,35],{},"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":39},"",2,[40,41],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},"nieruchomości","\u002Fwork\u002Fdomodessa.webp",[45,48,51],{"title":46,"text":47},"Najpierw rdzeń","Odpowiadałem za całość i wdrożyłem produkt na produkcję w około dwa tygodnie.",{"title":49,"text":50},"Architektura bloga i stylów","Zbudowałem blog i architekturę stylów frontendu, żeby nowe strony były spójne.",{"title":52,"text":53},"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.","md",true,"c51e8aa",{},[59,62],{"value":60,"label":61},"~2 tyg.","od zera do produkcji",{"value":63,"label":64},"10","ofert","\u002Fdomodessa","→ od zera do produkcji w ~2 tygodnie · 10 ofert","Samodzielny full-stack developer",{"title":5,"description":37},"domodessa",[71,72,73,74,75],"nuxt 4","express","quasar","mariadb","docker","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",[81,141,170],{"id":82,"title":83,"architecture":84,"body":93,"category":109,"cover":110,"decisions":111,"description":37,"extension":54,"featured":55,"hash":121,"meta":122,"metrics":123,"navigation":55,"order":130,"path":131,"result":132,"role":133,"seo":134,"slug":135,"stack":136,"stem":135,"summary":138,"timeline":139,"url":86,"__hash__":140},"cases_pl\u002Fthailand-rental.md","Platforma wynajmu aut, Tajlandia",{"top":85,"core":89,"bottom":92},[86,87,88],"thailandrentalcars.com","phuketcarrentals.com","Quasar admin (PWA)",{"title":90,"sub":91},"Wspólny rdzeń rezerwacji","Node.js (Express) · silnik rezerwacji · API",[14,15],{"type":18,"value":94,"toc":105},[95,97,100,102],[21,96,24],{"id":23},[26,98,99],{},"Dwie marki wynajmu (thailandrentalcars.com i phuketcarrentals.com) potrzebowały jednego niezawodnego systemu rezerwacji — bez kopiowania kodu dla każdego miasta.",[21,101,32],{"id":31},[26,103,104],{},"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":106},[107,108],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},"podróże \u002F wynajem","\u002Fwork\u002Fthailand-rental.webp",[112,115,118],{"title":113,"text":114},"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":116,"text":117},"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":119,"text":120},"SEO jako część inżynierii","Odpowiadam za SEO i strategię startu razem z produktem i prowadzę content managera.","a3f9c21",{},[124,127],{"value":125,"label":126},"2 → 1","frontendy na jednym backendzie",{"value":128,"label":129},"5","rezerwacji",1,"\u002Fthailand-rental","→ 2 strony · 1 backend · 5 rezerwacji","Architektura · full-stack · SEO",{"title":83,"description":37},"thailand-rental",[71,72,74,137,75],"quasar pwa","Dwie marki na jednym silniku rezerwacji i panelu — nowe miasto to konfiguracja, a nie nowy projekt.","w trakcie","4KXUHT2Tv1lQgXf78_BcJ31ObZ3DpnMN7f2xWiIyX0Y",{"id":4,"title":5,"architecture":142,"body":146,"category":42,"cover":43,"decisions":160,"description":37,"extension":54,"featured":55,"hash":56,"meta":164,"metrics":165,"navigation":55,"order":38,"path":65,"result":66,"role":67,"seo":168,"slug":69,"stack":169,"stem":69,"summary":76,"timeline":77,"url":78,"__hash__":79},{"top":143,"core":144,"bottom":145},[8,9],{"title":11,"sub":12},[14,15,16],{"type":18,"value":147,"toc":156},[148,150,152,154],[21,149,24],{"id":23},[26,151,28],{},[21,153,32],{"id":31},[26,155,35],{},{"title":37,"searchDepth":38,"depth":38,"links":157},[158,159],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},[161,162,163],{"title":46,"text":47},{"title":49,"text":50},{"title":52,"text":53},{},[166,167],{"value":60,"label":61},{"value":63,"label":64},{"title":5,"description":37},[71,72,73,74,75],{"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",[14,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":63,"label":219},"klientów",3,"\u002Fpsylife","→ UA\u002FRU · 10 klientów · panel PWA","Właściciel · full-stack",{"title":172,"description":37},"psylife",[71,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]