[{"data":1,"prerenderedAt":92},["ShallowReactive",2],{"work-en-dygoo":3},{"id":4,"title":5,"body":6,"category":62,"date":63,"description":64,"extension":65,"externalUrl":66,"featured":67,"locale":68,"meta":69,"navigation":70,"outcome":71,"path":75,"rank":76,"release":77,"role":78,"screenshot":79,"seo":80,"stack":81,"stem":87,"summary":88,"tier":89,"year":90,"__hash__":91},"projects\u002Fen\u002Fprojects\u002Fdygoo.md","Dygoo",{"type":7,"value":8,"toc":55},"minimark",[9,13,18,21,25,48,52],[10,11,12],"p",{},"Dygoo is a realtime chat experiment built as two deliberately separated parts: a static Vue frontend and a standalone Node.js server. It was a playground for the parts of web engineering that don't live in a request-response cycle.",[14,15,17],"h2",{"id":16},"what-it-does","What it does",[10,19,20],{},"The frontend is a Nuxt 2 app built for static output with SSR disabled — the chat UI holds its username and room in cookies, with the chat and room components structured as Vue components. The companion server (Express + Socket.IO) tracks rooms and their users, broadcasts messages, and manages join and leave lifecycle, keeping users in an in-memory registry for presence.",[14,22,24],{"id":23},"engineering-notes","Engineering notes",[26,27,28,36,42],"ul",{},[29,30,31,35],"li",{},[32,33,34],"strong",{},"Frontend and server split by contract."," The client is static; the server is a separate deployment. Rooms and broadcasts cross the boundary over WebSockets.",[29,37,38,41],{},[32,39,40],{},"Presence is realtime state."," Joins, leaves, and disconnects are explicitly handled by the server, not assumed.",[29,43,44,47],{},[32,45,46],{},"Cookie-based client state."," The UI keeps enough state client-side to stay static-friendly.",[14,49,51],{"id":50},"place-in-the-story","Place in the story",[10,53,54],{},"A 2020 experiment that connected an interest in interactive web systems — event-driven thinking that sits under later production work on asynchronous and message-driven backends.",{"title":56,"searchDepth":57,"depth":57,"links":58},"",2,[59,60,61],{"id":16,"depth":57,"text":17},{"id":23,"depth":57,"text":24},{"id":50,"depth":57,"text":51},"Realtime · Experiment","2026-09-16","A realtime chat experiment — a static Nuxt frontend paired with a separate Express\u002FSocket.IO server for room-based messaging and presence.","md","https:\u002F\u002Fdygoo.netlify.app",false,"en",{},true,[72,73,74],"A static Nuxt 2 frontend (SSR disabled) with cookie-based username and room state driving the chat interface.","A companion Express\u002FSocket.IO server handling room joins, user presence, join\u002Fleave lifecycle, and message broadcasts.","Deployed as a live demo on Netlify.","\u002Fen\u002Fprojects\u002Fdygoo","14","2020","Full-stack Developer","\u002Fimg\u002Fprojects\u002Fdygoo.jpg",{"title":5,"description":64},[82,83,84,85,86],"Nuxt","Vue","Node.js","Express","Socket.IO","en\u002Fprojects\u002Fdygoo","A realtime experiment in two parts — a static Nuxt 2 frontend keeping room state in cookies, talking to a standalone Express\u002FSocket.IO server that manages rooms, presence, and message broadcasts.","standard",2020,"-QtzMcl18WFYDZJuUyfEk8KnwkrN-ZddbXJHwKWNzmo",1789641311734]