[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"case-en-psylife":3,"cases-en-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_en\u002Fpsylife.md","PsyLife.me — personal practice platform",{"top":7,"core":11,"bottom":14},[8,9,10],"psylife.me · Nuxt 4","blog \u002F CMS","PWA admin",{"title":12,"sub":13},"NestJS API","booking · CMS · notifications",[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",{},"A psychology practice needed one place for content, consultation booking and client notifications, in two languages.",[22,31,33],{"id":32},"approach","Approach",[27,35,36],{},"A Nuxt 4 frontend on a NestJS API with MariaDB, Redis\u002FBullMQ background jobs and web push — from architecture to production deployment.",{"title":38,"searchDepth":39,"depth":39,"links":40},"",2,[41,42],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"health \u002F platform","\u002Fwork\u002Fpsylife.webp",[46,49,52],{"title":47,"text":48},"Background jobs on a queue","Redis and BullMQ run background work outside the request cycle.",{"title":50,"text":51},"Real-time notifications","Web push notifications keep clients informed about bookings.",{"title":53,"text":54},"Content in the same product","An integrated blog\u002FCMS and the consultation-booking flow live in one platform.","md",true,"0d2f6b3",{},[60,63],{"value":61,"label":62},"UA\u002FRU","multilingual",{"value":64,"label":65},"10","clients",3,"\u002Fpsylife","→ UA\u002FRU · 10 clients · PWA admin","Owner · full-stack",{"title":5,"description":38},"psylife",[73,74,75,76,77],"nuxt 4","nestjs","mariadb","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",[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_en\u002Fthailand-rental.md","Car rental platform, Thailand",{"top":87,"core":91,"bottom":94},[88,89,90],"thailandrentalcars.com","phuketcarrentals.com","Quasar admin (PWA)",{"title":92,"sub":93},"Shared booking core","Node.js (Express) · booking engine · API",[15,95],"Docker",{"type":19,"value":97,"toc":108},[98,100,103,105],[22,99,25],{"id":24},[27,101,102],{},"Two rental brands (thailandrentalcars.com and phuketcarrentals.com) needed one reliable booking system — without forking the code for every new city.",[22,104,33],{"id":32},[27,106,107],{},"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":38,"searchDepth":39,"depth":39,"links":109},[110,111],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"travel \u002F rental","\u002Fwork\u002Fthailand-rental.webp",[115,118,121],{"title":116,"text":117},"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":119,"text":120},"Transactional booking and payment","Authorization, owner confirmation and payment capture as one flow, with idempotency and double-booking protection.",{"title":122,"text":123},"SEO as part of engineering","I own SEO and the launch strategy alongside the product work and lead the content manager.","a3f9c21",{},[127,130],{"value":128,"label":129},"2 → 1","frontends on one backend",{"value":131,"label":132},"5","bookings",1,"\u002Fthailand-rental","→ 2 sites · 1 backend · 5 bookings","Architecture · full-stack · SEO lead",{"title":85,"description":38},"thailand-rental",[73,140,75,141,142],"express","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",{"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_en\u002Fdomodessa.md","Real-estate platform — domodessa.com",{"top":150,"core":153,"bottom":156},[151,152],"domodessa.com · Nuxt 4 SSR","Quasar admin",{"title":154,"sub":155},"Express API","listings · blog · admin",[15,95,157],"CI\u002FCD",{"type":19,"value":159,"toc":170},[160,162,165,167],[22,161,25],{"id":24},[27,163,164],{},"A real-estate business needed a working platform fast, not a long project.",[22,166,33],{"id":32},[27,168,169],{},"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":38,"searchDepth":39,"depth":39,"links":171},[172,173],{"id":24,"depth":39,"text":25},{"id":32,"depth":39,"text":33},"real estate","\u002Fwork\u002Fdomodessa.webp",[177,180,183],{"title":178,"text":179},"Ship the core first","Owned the build end to end and took the product to production in about two weeks.",{"title":181,"text":182},"Blog and styling architecture","Built the blog and the frontend styling architecture so new pages stay consistent.",{"title":184,"text":185},"Stable in every environment","Resolved Docker networking, SSR and hydration issues so local and production behave the same.","c51e8aa",{},[189,192],{"value":190,"label":191},"~2 wks","zero to production",{"value":64,"label":193},"listings","\u002Fdomodessa","→ zero to production in ~2 weeks · 10 listings","Solo full-stack developer",{"title":148,"description":38},"domodessa",[73,140,200,75,142],"quasar","From zero to a working production product in about two weeks — built end to end.","~2 weeks to production","domodessa.com","KswnDNHh1KIp0kgq2Vj61WkG5hKJGBNfKFElmukoCKc",{"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]