Dream Map

A playful mood-and-memory journaling SPA where users drop short “dream notes” onto a draggable, zoomable map canvas as floating islands, then tag them with emotions, symbols, and colors. The app generates lightweight connections between notes based on shared tags, offering a toggleable “constellation view” that highlights recurring themes over time. Everything runs client-side with localStorage: create/edit notes, filter by tag/date/emotion, and export or import the journal as a JSON file.

To Do30
Scaffold app stack

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i @tailwindcss/vite && npm i lucide-react && npx shadcn@latest init

by system

Add Tailwind wiring

Configure Tailwind + @tailwindcss/vite and add Tailwind directives to src/index.css.

by system

Create app layout

Build a basic shell in src/App.tsx with header, left sidebar, and main canvas area.

by system

Define data types

Create src/lib/types.ts defining DreamNote, Tag, Emotion, and import/export schema types.

by system

LocalStorage helpers

Add src/lib/storage.ts with load/save utilities and schema versioning.

by system

Notes state store

Implement src/lib/useNotesStore.ts as a React hook managing notes CRUD + persistence.

by system

Seed demo notes

Add a small optional demo dataset in src/lib/demoData.ts and a toggle to load it.

by system

Map viewport state

Create src/lib/useViewport.ts to manage pan/zoom state and coordinate transforms.

by system

Canvas container

Implement src/components/MapCanvas.tsx rendering a pan/zoomable container for islands.

by system

Pan and zoom controls

Add pointer/trackpad interactions + UI buttons for zoom in/out/reset in MapCanvas.tsx.

by system

Island note card

Create src/components/NoteIsland.tsx to display a note as a floating “island” card.

by system

Drag island positioning

Add draggable behavior to NoteIsland.tsx that updates the note’s x/y coordinates.

by system

Island color styling

Map note color/emotion to Tailwind styles in NoteIsland.tsx with a small palette.

by system

Create note dialog

Build src/components/CreateNoteDialog.tsx for adding a new dream note with title/body.

by system

Edit note dialog

Build src/components/EditNoteDialog.tsx for editing an existing note’s fields.

by system

Delete note action

Add a delete confirmation action to EditNoteDialog.tsx that removes the note.

by system

Emotion picker

Create src/components/EmotionPicker.tsx for selecting one emotion from a fixed list.

by system

Tag input control

Create src/components/TagInput.tsx to add/remove string tags with chips.

by system

Symbol picker

Create src/components/SymbolPicker.tsx to select common dream symbols (strings/icons).

by system

Sidebar filters UI

Implement src/components/FiltersPanel.tsx with controls for tag, emotion, and date range.

by system

Filter logic selector

Add src/lib/filtering.ts to filter notes by active filters and return visible notes.

by system

Notes list panel

Create src/components/NotesList.tsx showing filtered notes with click-to-focus.

by system

Focus note behavior

Implement centering/zoom-to-note in MapCanvas.tsx when a note is selected.

by system

Connections graph builder

Add src/lib/connections.ts to compute lightweight edges based on shared tags/symbols/emotions.

by system

Constellation toggle

Add a UI toggle in src/App.tsx to enable/disable constellation view.

by system

Render constellation lines

Implement src/components/ConstellationOverlay.tsx drawing SVG lines between connected notes.

by system

Theme recurrence panel

Create src/components/InsightsPanel.tsx summarizing top recurring tags/emotions over time.

by system

Export JSON feature

Add src/lib/exportImport.ts to export the full journal state as a downloadable JSON file.

by system

Import JSON feature

Add src/components/ImportDialog.tsx to load a JSON file and replace/merge local data.

by system

Empty states and toasts

Add minimal empty-state UI and shadcn/ui toast notifications for save/import/export actions.

by system

In Progress0
In Review0
Done0