Constellation Planner

A playful weekly planner where tasks become “stars” you place on a night-sky canvas; related tasks connect into constellations (projects) with auto-drawn lines and labels. Includes a side panel for creating/editing tasks (title, due day, priority color, tags), drag-and-drop positioning, and quick filters (by day, tag, constellation) with progress shown as stars “brightening” when completed. Everything runs client-side with localStorage saving layouts, plus an export/import JSON feature to share your sky with others.

To Do30
Scaffold Vite + shadcn

Run: npm create vite@latest . -- --template react-ts && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init && npx shadcn@latest add button input textarea label badge card dialog sheet tabs select separator scroll-area switch dropdown-menu tooltip

by system

Add Tailwind base styles

Configure Tailwind content paths and add globals.css with Tailwind directives and shadcn theme variables.

by system

Define core types

Create src/types.ts defining Task, Constellation, Tag, DayOfWeek, and AppState types.

by system

LocalStorage state API

Create src/lib/storage.ts to load/save AppState with versioning and safe fallback defaults.

by system

Export/import helpers

Create src/lib/serialize.ts to export AppState to JSON string and import/validate JSON.

by system

Seed default data

Create src/lib/defaultState.ts providing an initial demo sky and empty-state defaults.

by system

State reducer hook

Create src/state/usePlannerState.ts implementing a reducer for CRUD, dragging, completion, filters, and persistence.

by system

Planner context provider

Create src/state/PlannerContext.tsx to expose state and dispatch via React context.

by system

App shell layout

Update src/App.tsx to render a two-pane layout with SkyCanvas and SidePanel wrapped in PlannerProvider.

by system

Sky canvas container

Create src/components/SkyCanvas.tsx as the full-size canvas surface with background and coordinate system.

by system

Night sky background

Create src/components/SkyBackground.tsx rendering a subtle starfield/gradient backdrop for the canvas.

by system

Task star component

Create src/components/TaskStar.tsx to render a draggable star with color, label tooltip, and brightness by completion.

by system

Star drag interactions

Add pointer-based drag logic to TaskStar to update task position in state on drag end.

by system

Canvas coordinate helpers

Create src/lib/coords.ts to convert client pixels to normalized canvas coordinates and clamp within bounds.

by system

Constellation lines overlay

Create src/components/ConstellationLines.tsx to draw SVG lines between related task stars based on constellation membership.

by system

Constellation labels

Create src/components/ConstellationLabels.tsx to render constellation names near their centroid with subtle styling.

by system

Side panel shell

Create src/components/SidePanel.tsx with tabs/sections for Task, Filters, and Share (export/import).

by system

Task list panel

Create src/components/TaskList.tsx showing tasks with quick actions (select, complete toggle, delete).

by system

Task form component

Create src/components/TaskForm.tsx for creating/editing a task (title, due day, priority color, tags, constellation).

by system

Due day select

Create src/components/DaySelect.tsx as a reusable DayOfWeek select used by the task form and filters.

by system

Priority color picker

Create src/components/PriorityColorPicker.tsx to choose a color mapped to star hue.

by system

Tags input control

Create src/components/TagsInput.tsx to add/remove tags as badges with minimal keyboard support.

by system

Constellation select

Create src/components/ConstellationSelect.tsx to assign a task to an existing constellation or create a new one.

by system

Quick filters panel

Create src/components/FiltersPanel.tsx to filter by day, tag, and constellation and to clear filters.

by system

Filtered tasks selector

Create src/state/selectors.ts to compute visible tasks/constellations from state + active filters.

by system

Progress brightness mapping

Create src/lib/progress.ts to map completion state to star brightness/glow intensity.

by system

Completion toggle behavior

Wire TaskList and TaskStar interactions to toggle completed state and immediately update visuals.

by system

Export/import UI

Create src/components/SharePanel.tsx with export-to-textarea, copy button, and import-from-textarea actions.

by system

Import validation errors

Add user-friendly error reporting in SharePanel for invalid JSON or schema mismatch.

by system

Keyboard shortcuts

Create src/lib/shortcuts.ts and wire in App to support keys like N (new task), Delete (remove selected), and Esc (clear selection).

by system

In Progress0
In Review0
Done0