Constellation Journal

A mood-and-moment journal that turns each entry into a “star” plotted on a nightly sky canvas, where mood controls star color and intensity, and tags form connecting “constellations.” Users can add/edit entries, browse by date or tag, and toggle views between a list and the interactive sky map with hover tooltips and simple filters. Everything runs client-side with localStorage persistence, using shadcn/ui for forms, dialogs, tabs, and filter controls, and Tailwind for layout and theming.

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 @radix-ui/react-dialog @radix-ui/react-tabs @radix-ui/react-popover @radix-ui/react-tooltip @radix-ui/react-label @radix-ui/react-slot class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init -d

by system

Add Tailwind globals

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

by system

Set up shadcn utils

Add src/lib/utils.ts with cn() helper for tailwind-merge.

by system

Add UI primitives

Install shadcn/ui components Button, Input, Textarea, Dialog, Tabs, Badge, Popover, Tooltip, Select, Separator into src/components/ui.

by system

Define entry types

Create src/types/journal.ts defining JournalEntry, Mood, Tag, and filter types.

by system

LocalStorage persistence

Create src/lib/storage.ts with loadEntries/saveEntries and safe JSON parsing.

by system

Seed sample entries

Create src/lib/seed.ts to generate a few demo entries when storage is empty.

by system

Entries state hook

Create src/hooks/useEntries.ts managing CRUD entries with localStorage sync.

by system

Filters state hook

Create src/hooks/useFilters.ts for date range, tag, mood, and search filters.

by system

App shell layout

Implement src/App.tsx with header, main container, and view tabs (List/Sky).

by system

Top navigation header

Create src/components/Header.tsx with app title and “New Entry” button.

by system

New entry dialog

Create src/components/EntryDialog.tsx using shadcn Dialog to add/edit an entry.

by system

Mood selector control

Create src/components/MoodSelect.tsx using shadcn Select for mood choice.

by system

Tag input control

Create src/components/TagInput.tsx to add/remove tags as Badges with an input.

by system

Entry form fields

Create src/components/EntryForm.tsx for title, moment text, mood, date, and tags.

by system

Entry validation helpers

Create src/lib/validate.ts for simple client-side validation and normalization.

by system

Entry list page

Create src/pages/ListView.tsx rendering filtered entries in a vertical list.

by system

Entry list item

Create src/components/EntryListItem.tsx showing mood indicator, title, date, tags, and actions.

by system

Edit entry handler

Wire edit action from EntryListItem to open EntryDialog with existing data.

by system

Delete entry confirm

Add delete action with confirmation dialog logic in EntryListItem.

by system

Filter bar UI

Create src/components/FilterBar.tsx with search, mood, tag, and date filter controls.

by system

Tag filter popover

Create src/components/TagFilterPopover.tsx listing tags with counts and selection.

by system

Date filter control

Create src/components/DateFilter.tsx for quick date presets and a simple range.

by system

Compute derived tags

Create src/lib/derive.ts to compute unique tags, counts, and filtered subsets.

by system

Sky view page

Create src/pages/SkyView.tsx hosting the canvas and filter summary.

by system

Canvas sky renderer

Create src/components/SkyCanvas.tsx drawing stars by entry date/time and mood color/intensity.

by system

Star layout algorithm

Create src/lib/layout.ts to map entries to stable x/y positions and sizes.

by system

Tooltip on hover

Add hover hit-testing in SkyCanvas and show a shadcn Tooltip with entry preview.

by system

Constellation connections

Draw connecting lines between stars sharing tags (toggleable) in SkyCanvas.

by system

Theme and styling

Add Tailwind-based dark sky theme styles and ensure consistent shadcn theming in src/index.css and App layout.

by system

In Progress0
In Review0
Done0