← All work

2020 · Full-stack Developer

Dygoo

A realtime chat experiment — a static Nuxt frontend paired with a separate Express/Socket.IO server for room-based messaging and presence.

Stack
Nuxt · Vue · Node.js · Express · Socket.IO
Category
Realtime · Experiment
Visit project

What shipped

  • A static Nuxt 2 frontend (SSR disabled) with cookie-based username and room state driving the chat interface.
  • A companion Express/Socket.IO server handling room joins, user presence, join/leave lifecycle, and message broadcasts.
  • Deployed as a live demo on Netlify.
Dygoo

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.

What it does

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.

Engineering notes

  • Frontend and server split by contract. The client is static; the server is a separate deployment. Rooms and broadcasts cross the boundary over WebSockets.
  • Presence is realtime state. Joins, leaves, and disconnects are explicitly handled by the server, not assumed.
  • Cookie-based client state. The UI keeps enough state client-side to stay static-friendly.

Place in the story

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.