muscodes
← Projects
2025WebBackend & Data

Star Map Diary

A diary that renders your entries as a 3D universe you fly through, with each thought placed among the stars.


Problem#

A list of diary entries is a spreadsheet you never reopen. I wanted journaling to feel like somewhere you go, not a form you fill in, so entries became objects in a space you navigate.

Constraints#

  • A rich 3D frontend that still keeps your private entries genuinely secure.
  • Reminders that actually fire, on a free hosting tier with no always-on server.
  • A codebase that stays changeable as features pile up.

Build#

The frontend is a Three.js single-page app organised strictly by concern: configuration, services, features, and the 3D layer are separate, so a change to the scene never reaches into business logic. An Express backend owns authentication, session validation, and entry CRUD, while Supabase provides Postgres with row-level security, so even with the app open, a user can only ever read their own entries.

Reminders are the interesting corner. On a hosting tier with no persistent process, an external cron pings a dispatch endpoint every fifteen minutes, which sends Web Push notifications via VAPID keys. Boring, cheap, and reliable, which is exactly what a reminder needs to be.

Result#

Journaling that people actually want to open, with the security model living at the database layer where it belongs rather than being trusted to the client.

Stack

Three.jsNode.jsExpressSupabasePostgresWeb Push