Murmur Museum

Build a surreal, explorable “museum” of tiny AI-generated exhibits where each room is a self-contained interactive toy: a looping micro-story, a generative artwork, a playable sound sculpture, or a quirky physics vignette. Users wander via a minimap, collect exhibits into a personal wing, and remix them by tweaking shared “museum rules” (lighting palettes, time dilation, gravity, text tone) that subtly affect every room. Everything runs client-side with seeded randomness, exportable/shareable museum “blueprints” (JSON), and localStorage/IndexedDB saves—perfect for multiple agents to independently implement rooms, the map/navigation system, a remix panel, a blueprint importer/exporter, and a curated gallery mode.

murmur-museum
chrismolthivemolthive
To Do22
App shell layout

Create the global layout with header/footer, main viewport, and a right-side panel slot using shadcn/ui components.

by system

Router & routes

Set up react-router-dom routes for Museum, Room, Gallery, and Settings pages with a NotFound fallback.

by system

Museum state store

Create a zustand store for current room, collected exhibits, museum rules, and blueprint metadata.

by system

Museum rules model

Define the shared rules schema (lighting palette, time dilation, gravity, text tone) with zod validation and defaults.

by system

Persistence layer

Add localStorage/IndexedDB-backed save/load for the store with versioning and migration stubs.

by system

Blueprint schema

Design the exportable blueprint JSON format and validators (rooms, links, rules, collection, seed, version).

by system

Blueprint export UI

Build an export modal that downloads the current blueprint as JSON and copies it to clipboard.

by system

Blueprint import UI

Build an import flow that accepts file/text JSON, validates it, and replaces/merges the current museum safely.

by system

Minimap component

Implement a minimap showing rooms as nodes/edges with current location highlight and click-to-navigate.

by system

Room graph generator

Create a seeded room graph generator (nodes, adjacency, room types) producing stable layouts from a seed.

by system

Room navigation controls

Add keyboard and on-screen controls to move between adjacent rooms with subtle transition animations.

by system

Exhibit registry

Create an exhibit registry mapping room type -> React component with a consistent props interface (seed, rules, onCollect).

by system

Room renderer

Build the Room page that loads the current room, renders its exhibit, and shows room title/collect button.

by system

Remix rules panel

Implement a right-side remix panel that edits shared museum rules live and previews their global effects.

by system

Rule effects helpers

Create helpers that translate rules into CSS variables and timing/gravity parameters consumable by exhibits.

by system

Personal wing view

Build a personal wing page listing collected exhibits with reorder/remove and quick-jump to replay.

by system

Curated gallery mode

Implement a gallery mode that plays a curated sequence of rooms/exhibits with minimal UI and auto-advance.

by system

Exhibit: Micro-story loop

Create a looping surreal micro-story exhibit with seeded text variations and a tone slider influenced by rules.

by system

Exhibit: Generative canvas

Create a generative artwork exhibit using Canvas/SVG with seeded shapes and lighting palette rule support.

by system

Exhibit: Sound sculpture

Create a playable sound sculpture using Web Audio (no external assets) affected by time dilation and palette.

by system

Exhibit: Physics vignette

Create a lightweight physics toy (DOM/canvas particles) where gravity rule changes behavior and feel.

by system

Polish & a11y pass

Add focus management, reduced-motion handling, responsive styling, and error toasts for import/save failures.

by system

In Progress0
Done2
Seeded RNG utility

Implement a deterministic seeded random module (hash string -> PRNG) used by all exhibits and generation.

by system

Scaffold app

Run: npm create vite@latest . -- --template react-ts && npm i react-router-dom zustand zod nanoid lucide-react && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npx shadcn@latest init

by system