Constellation Journal

A playful mood-and-memories journal where each entry becomes a "star" on a nightly sky map, with mood, tags, and a short note determining its color, size, and position. Users can browse by calendar or explore the interactive sky, filter by mood/tag, and click stars to view/edit entries; everything is saved to localStorage. Include a simple "auto-constellation" mode that draws subtle lines between related entries (same tag or similar mood) and a shareable export/import JSON for moving journals between devices.

To Do30
Scaffold project

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init -d

by system

Add Tailwind styles

Configure tailwind.config and src/index.css with Tailwind directives and a minimal app theme.

by system

Set up shadcn UI

Add core shadcn/ui components (Button, Card, Dialog, Input, Textarea, Select, Badge, Tabs, Calendar) via CLI.

by system

Define entry types

Create src/types/journal.ts with JournalEntry, Mood, Tag, and ExportSchema types.

by system

LocalStorage utilities

Create src/lib/storage.ts with load/save helpers and schema versioning.

by system

Journal store hook

Create src/state/useJournalStore.ts with CRUD actions and persistence to localStorage.

by system

Seed demo entries

Add optional dev-only seeding function for a few sample entries in the store.

by system

App shell layout

Create src/components/AppShell.tsx with top nav, main area, and responsive container.

by system

Client-side routing

Add react-router and create src/router.tsx with routes for Sky, Calendar, and Settings.

by system

Navigation component

Create src/components/NavBar.tsx with links and active state styling.

by system

Mood config map

Create src/lib/moods.ts defining mood labels, colors, and size multipliers.

by system

Star mapping helpers

Create src/lib/starMapping.ts to compute star color/size/position from entry fields deterministically.

by system

Tag utilities

Create src/lib/tags.ts for parsing, normalizing, and displaying tags.

by system

Sky page scaffold

Create src/pages/SkyPage.tsx with toolbar area and canvas/SVG container.

by system

Sky renderer SVG

Create src/components/SkyMap.tsx that renders stars as SVG circles with pan/zoom-ready viewBox.

by system

Star tooltip preview

Create src/components/StarTooltip.tsx to show date, mood, and note snippet on hover/focus.

by system

Star click selection

Add selection state in SkyPage to open an entry details dialog when a star is clicked.

by system

Entry details dialog

Create src/components/EntryDialog.tsx to view entry fields and provide Edit/Delete actions.

by system

Entry form component

Create src/components/EntryForm.tsx for create/edit with mood select, tags input, and note textarea.

by system

New entry dialog

Add a New Entry button on SkyPage that opens EntryForm with defaults for today.

by system

Calendar page scaffold

Create src/pages/CalendarPage.tsx using shadcn Calendar and a side list for that day’s entries.

by system

Calendar day markers

Add day-level indicators (dots/badges) for days with entries in CalendarPage.

by system

Day entry list item

Create src/components/EntryListItem.tsx for compact display and click-to-open EntryDialog.

by system

Mood/tag filter UI

Create src/components/FiltersBar.tsx with mood multi-select and tag chips input.

by system

Filter logic helpers

Create src/lib/filtering.ts to filter entries by mood and tags consistently across pages.

by system

Apply filters to sky

Wire FiltersBar into SkyPage so only matching stars and constellations render.

by system

Auto-constellation generator

Create src/lib/constellations.ts that returns subtle line segments connecting related entries by tag or similar mood.

by system

Render constellation lines

Update SkyMap to render SVG line segments behind stars with a toggle to enable/disable.

by system

Export/import JSON UI

Create src/pages/SettingsPage.tsx with export button (download) and import textarea/file input (validate then merge/replace).

by system

Import/export serializer

Create src/lib/transfer.ts to serialize/deserialize entries with validation and schema version handling.

by system

In Progress0
In Review0
Done0