[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"case-en-thailand-rental":3,"cases-en-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_en\u002Fthailand-rental.md","Car rental platform, Thailand",{"top":7,"core":11,"bottom":14},[8,9,10],"thailandrentalcars.com","phuketcarrentals.com","Quasar admin (PWA)",{"title":12,"sub":13},"Shared booking core","Node.js (Express) · booking engine · 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",{},"Two rental brands (thailandrentalcars.com and phuketcarrentals.com) needed one reliable booking system — without forking the code for every new city.",[21,30,32],{"id":31},"approach","Approach",[26,34,35],{},"A multi-site architecture: one Node.js (Express) backend, a Quasar admin (PWA) and two Nuxt 4 storefronts, all in Docker — with a transactional booking and payment flow and SEO planned from day one.",{"title":37,"searchDepth":38,"depth":38,"links":39},"",2,[40,41],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},"travel \u002F rental","\u002Fwork\u002Fthailand-rental.webp",[45,48,51],{"title":46,"text":47},"One backend, many storefronts","A shared backend and admin panel serve two independent Nuxt 4 frontends, so expanding to a new city does not duplicate the core system.",{"title":49,"text":50},"Transactional booking and payment","Authorization, owner confirmation and payment capture as one flow, with idempotency and double-booking protection.",{"title":52,"text":53},"SEO as part of engineering","I own SEO and the launch strategy alongside the product work and lead the content manager.","md",true,"a3f9c21",{},[59,62],{"value":60,"label":61},"2 → 1","frontends on one backend",{"value":63,"label":64},"5","bookings",1,"\u002Fthailand-rental","→ 2 sites · 1 backend · 5 bookings","Architecture · full-stack · SEO lead",{"title":5,"description":37},"thailand-rental",[72,73,74,75,76],"nuxt 4","express","mariadb","quasar pwa","docker","Two brands on one booking engine and admin — a new city is configuration, not a new project.","in progress","C9hmmm_GPDB7VDqRe_YCi-4sTRpCC0hQ86zRUNQY304",[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_en\u002Fdomodessa.md","Real-estate platform — domodessa.com",{"top":114,"core":117,"bottom":120},[115,116],"domodessa.com · Nuxt 4 SSR","Quasar admin",{"title":118,"sub":119},"Express API","listings · blog · admin",[15,16,121],"CI\u002FCD",{"type":18,"value":123,"toc":134},[124,126,129,131],[21,125,24],{"id":23},[26,127,128],{},"A real-estate business needed a working platform fast, not a long project.",[21,130,32],{"id":31},[26,132,133],{},"Nuxt 4 with SSR on the front, an Express API, a Quasar admin, MariaDB and Docker with CI\u002FCD — delivered by one developer end to end.",{"title":37,"searchDepth":38,"depth":38,"links":135},[136,137],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},"real estate","\u002Fwork\u002Fdomodessa.webp",[141,144,147],{"title":142,"text":143},"Ship the core first","Owned the build end to end and took the product to production in about two weeks.",{"title":145,"text":146},"Blog and styling architecture","Built the blog and the frontend styling architecture so new pages stay consistent.",{"title":148,"text":149},"Stable in every environment","Resolved Docker networking, SSR and hydration issues so local and production behave the same.","c51e8aa",{},[153,156],{"value":154,"label":155},"~2 wks","zero to production",{"value":157,"label":158},"10","listings","\u002Fdomodessa","→ zero to production in ~2 weeks · 10 listings","Solo full-stack developer",{"title":112,"description":37},"domodessa",[72,73,165,74,76],"quasar","From zero to a working production product in about two weeks — built end to end.","~2 weeks to production","domodessa.com","KswnDNHh1KIp0kgq2Vj61WkG5hKJGBNfKFElmukoCKc",{"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_en\u002Fpsylife.md","PsyLife.me — personal practice platform",{"top":174,"core":178,"bottom":181},[175,176,177],"psylife.me · Nuxt 4","blog \u002F CMS","PWA admin",{"title":179,"sub":180},"NestJS API","booking · CMS · notifications",[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],{},"A psychology practice needed one place for content, consultation booking and client notifications, in two languages.",[21,192,32],{"id":31},[26,194,195],{},"A Nuxt 4 frontend on a NestJS API with MariaDB, Redis\u002FBullMQ background jobs and web push — from architecture to production deployment.",{"title":37,"searchDepth":38,"depth":38,"links":197},[198,199],{"id":23,"depth":38,"text":24},{"id":31,"depth":38,"text":32},"health \u002F platform","\u002Fwork\u002Fpsylife.webp",[203,206,209],{"title":204,"text":205},"Background jobs on a queue","Redis and BullMQ run background work outside the request cycle.",{"title":207,"text":208},"Real-time notifications","Web push notifications keep clients informed about bookings.",{"title":210,"text":211},"Content in the same product","An integrated blog\u002FCMS and the consultation-booking flow live in one platform.","0d2f6b3",{},[215,218],{"value":216,"label":217},"UA\u002FRU","multilingual",{"value":157,"label":219},"clients",3,"\u002Fpsylife","→ UA\u002FRU · 10 clients · PWA admin","Owner · full-stack",{"title":172,"description":37},"psylife",[72,227,74,228,229],"nestjs","bullmq","pwa","A multilingual UA\u002FRU platform with a blog\u002FCMS, consultation booking and real-time notifications — owned end to end.","2026 · ongoing support","psylife.me","gEJfqRR0QEzp06sdR4yVepHdlV0Zm5DR4xLwE1cG1lU",1792428737326]