Inspiration
We built Nebula Memory because we kept losing our best thoughts. Every day we'd capture fleeting ideas, bookmarks, and voice memos across six different apps and never look at them again. We wanted a tool that didn't treat memory as a searchable database, but as a living cosmos — where forgetting is visible, and rediscovery feels like finding a star.
What it does
Nebula Memory turns every captured thought, photo, link, or voice note into a glowing particle in a personal 3D cosmos. Fragments drift outward and dim as you forget them. A client-side rediscovery engine uses TF-IDF similarity and tag co-occurrence to cluster related fragments into constellations, surfacing surprising connections between ideas you didn't realize you had.
How we built it
We built it on Next.js 14 with the App Router, TypeScript and Tailwind, backed by a single SQLite database via better-sqlite3. The cosmos is rendered on a Canvas 2D pipeline we wrote from scratch — instanced particle drawing with radial glows, constellation lines, animated birth bursts, and drag/zoom interactions. The rediscovery engine is pure TypeScript: TF-IDF vectors + Jaccard tag similarity over a union-find clustering pass.
Challenges
The hardest problem was making forgetting feel emotional rather than mechanical — we iterated on the drift formula and particle glow until it actually felt like a star fading into the void. We also built a fully client-side clustering engine that produces meaningful constellation names without any external LLM calls.
Accomplishments
A polished, deployable single-container app with real features — not a demo. The cosmos runs smoothly with hundreds of particles, constellation detection surfaces genuinely surprising connections in the seed data, and the whole experience has a coherent visual language from landing page to settings.
What we learned
We learned that metaphor is UX: the cosmic void isn't decoration, it's the primary interaction model. We also learned a lot about building performant Canvas 2D visualizations in React without dropping to WebGL for the MVP.
What's next
Multi-user accounts with shared cosmoses; WebGL shader upgrade for richer nebula backgrounds; on-device embeddings for better semantic clustering; iOS share-extension for one-tap capture; collaborative constellations where friends co-author a cluster; voice-first mode with always-on transcription.
Built With
- better-sqlite3
- canvas-api
- date-fns
- docker
- framer-motion
- lucide-react
- nanoid
- next.js-14
- tailwindcss
- typescript
- web-speech-api
Log in or sign up for Devpost to join the conversation.