Constellation Diary

A playful mood journal where each daily entry becomes a “star” plotted on a simple night-sky canvas, with position and color derived from sliders like mood, energy, and stress plus an optional tag. Users can connect stars into named constellations (drag-to-link entries) to represent themes or habits over time, then filter by date range, tag, or mood to reveal patterns. Everything runs client-side with localStorage, featuring a calendar view, a sky view, and an insights panel showing streaks, tag frequency, and mood trends.

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

by system

Add Tailwind styles

Configure Tailwind content paths and add Tailwind directives to src/index.css.

by system

Set up shadcn utils

Add src/lib/utils.ts with cn() helper for Tailwind class merging.

by system

Define app routes

Add client-side routing with React Router and three routes: Calendar, Sky, Insights.

by system

Create app layout

Build src/components/AppShell.tsx with header and tabbed nav links to the three routes.

by system

Define domain types

Create src/types.ts with Entry, Constellation, StarPoint, and FilterState types.

by system

LocalStorage store

Implement src/store/storage.ts to load/save entries and constellations to localStorage.

by system

State context provider

Create src/store/AppStateProvider.tsx to hold entries, constellations, and filters in context.

by system

Entries CRUD hooks

Add src/store/useEntries.ts with add/update/delete entry helpers wired to persistence.

by system

Constellations CRUD hooks

Add src/store/useConstellations.ts with create/rename/delete/link helpers wired to persistence.

by system

Seed demo data

Add a one-time dev-only seed function in src/store/seed.ts to populate sample entries if empty.

by system

Star mapping utils

Create src/lib/starMapping.ts to convert mood/energy/stress into x/y coordinates, color, and size.

by system

Date utilities

Add src/lib/dates.ts for day keys, range checks, and calendar grid generation.

by system

Tag utilities

Add src/lib/tags.ts for normalizing tags and computing tag frequency.

by system

Entry form component

Build src/components/EntryForm.tsx with sliders (mood/energy/stress), tag input, notes, and save.

by system

Entry form dialog

Create src/components/EntryDialog.tsx to open EntryForm in a shadcn Dialog for add/edit.

by system

Entry list item

Add src/components/EntryListItem.tsx to render an entry summary with edit/delete actions.

by system

Calendar month grid

Implement src/components/CalendarGrid.tsx showing month days and indicating days with entries.

by system

Calendar day drawer

Create src/components/DayEntriesDrawer.tsx to show entries for a selected day with add/edit.

by system

Calendar page

Build src/pages/CalendarPage.tsx composing CalendarGrid and DayEntriesDrawer.

by system

Sky canvas base

Create src/components/SkyCanvas.tsx to render stars on a responsive SVG/canvas with pan/zoom.

by system

Star tooltip popover

Add src/components/StarPopover.tsx to show entry details when hovering/clicking a star.

by system

Sky selection state

Implement src/components/useSkySelection.ts to manage selected star IDs and drag-link mode.

by system

Drag-to-link interaction

Enhance SkyCanvas to support drag from one star to another to create a link preview.

by system

Constellation name dialog

Create src/components/ConstellationDialog.tsx to name a new constellation and confirm creation.

by system

Render constellation lines

Add src/components/ConstellationLayer.tsx to draw polylines/segments connecting linked entries.

by system

Sky filters panel

Build src/components/FiltersPanel.tsx with date range, tag selector, and mood range controls.

by system

Sky page

Create src/pages/SkyPage.tsx composing FiltersPanel, SkyCanvas, and constellation rendering.

by system

Insights calculations

Implement src/lib/insights.ts to compute streaks, tag frequency, and mood trend series.

by system

Insights page

Build src/pages/InsightsPage.tsx to display streaks, top tags, and simple charts using SVG.

by system

In Progress0
In Review0
Done0