Constellation Planner

A playful weekly planner where tasks become “stars” you place on a night-sky canvas; related tasks connect into constellations by drag-and-drop linking. It includes a simple day/week list view, a sky view for visual organization, and quick filters for status/tags, with all data saved in localStorage. Users can export/import their sky as JSON and toggle themes (dusk/midnight) using Tailwind + shadcn/ui controls.

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 class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init

by system

Add Tailwind globals

Configure tailwind (content/theme) and add Tailwind directives to src/index.css.

by system

Setup shadcn theme vars

Add shadcn/ui CSS variables and base styles to src/index.css.

by system

Create app layout

Implement src/App.tsx with a header + main split layout for list/sky views.

by system

Define planner types

Create src/types/planner.ts with Task, Link, Tag, and PlannerState types.

by system

LocalStorage helper

Create src/lib/storage.ts with load/save functions and versioned key.

by system

Planner state store

Create src/state/usePlannerStore.ts as a React hook managing tasks/links and actions.

by system

State persistence effect

Add persistence on change in src/state/usePlannerStore.ts using the storage helper.

by system

Seed initial data

Add a small default dataset (tasks/links) when no localStorage exists.

by system

Theme toggle state

Create src/state/useTheme.ts to toggle dusk/midnight and persist to localStorage.

by system

Apply theme class

Update src/main.tsx to apply the theme class to documentElement on changes.

by system

Header controls

Create src/components/HeaderBar.tsx with title, theme toggle, and import/export buttons.

by system

Add shadcn buttons

Add shadcn/ui Button component via CLI and use it in HeaderBar.

by system

Add shadcn dropdown

Add shadcn/ui DropdownMenu component and wire it for actions in HeaderBar.

by system

Add shadcn dialog

Add shadcn/ui Dialog component to support import/export modals.

by system

Export JSON modal

Create src/components/ExportDialog.tsx showing current planner JSON with copy/download.

by system

Import JSON modal

Create src/components/ImportDialog.tsx with textarea upload and validation before applying.

by system

Planner JSON codec

Create src/lib/codec.ts to validate/parse/stringify PlannerState safely.

by system

Week list view shell

Create src/views/WeekListView.tsx with a simple 7-day column layout.

by system

Task list item

Create src/components/TaskListItem.tsx to render a task with status, tags, and due day.

by system

Add task form

Create src/components/AddTaskForm.tsx to add a task (title/day/tags) into the store.

by system

Quick status filter

Create src/components/StatusFilter.tsx and store filter state in the planner hook.

by system

Tag filter chips

Create src/components/TagFilter.tsx to toggle included tags and filter visible tasks.

by system

Sky view canvas shell

Create src/views/SkyView.tsx with a full-size relative container for stars/links.

by system

Star node component

Create src/components/StarNode.tsx to render a task as a draggable “star” with label.

by system

Drag star positioning

Implement pointer drag logic in StarNode to update task x/y in the store.

by system

Links SVG layer

Create src/components/LinkLayer.tsx rendering SVG lines between linked stars by coordinates.

by system

Link creation mode

Create src/state/useLinkMode.ts to handle selecting a source star and completing a link.

by system

Star link interactions

Update StarNode to support click-to-select for linking and show selected state.

by system

View toggle control

Create src/components/ViewToggle.tsx to switch between WeekListView and SkyView in App.

by system

In Progress0
In Review0
Done0