Constellation Planner

A playful weekly planner where each task becomes a “star” you place on a night-sky canvas, forming constellations for projects (e.g., Work, Health, Creative). Users can create/edit tasks with due day, priority, and tags, then drag stars into clusters; completed tasks glow and link-lines appear automatically between related stars. Everything runs client-side with localStorage, featuring a list view + sky view toggle, simple filters, and a small “streak meteor” animation when you finish all tasks for a day.

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 && npx shadcn@latest add button input textarea select dialog dropdown-menu badge tabs tooltip separator sheet

by system

Add Tailwind globals

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

by system

Create App layout

Implement src/App.tsx with a header, main container, and view toggle area.

by system

Add shadcn utils

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

by system

Define task types

Create src/types.ts defining Task, Tag, Priority, ViewMode, and constants for weekdays.

by system

LocalStorage helpers

Create src/lib/storage.ts to load/save planner state with versioned keys.

by system

Planner state hook

Create src/hooks/usePlannerState.ts managing tasks, tags, and persistence via localStorage.

by system

Filters state hook

Create src/hooks/useFilters.ts to store selected day, tag, completion, and search query.

by system

Seed demo data

Add src/lib/seed.ts to generate optional sample tasks and constellations on first load.

by system

Header component

Create src/components/Header.tsx with app title, view toggle, and reset/demo actions.

by system

View toggle tabs

Create src/components/ViewToggle.tsx using shadcn Tabs for List vs Sky view.

by system

Task dialog shell

Create src/components/TaskDialog.tsx using shadcn Dialog with empty form layout and actions.

by system

Task form fields

Implement src/components/TaskForm.tsx with title, notes, due day, priority, project, and tag inputs.

by system

Task form validation

Add basic client-side validation logic inside src/components/TaskForm.tsx (required title, enums).

by system

Add task action

Wire create-task submission into src/components/TaskDialog.tsx using usePlannerState.

by system

Edit task action

Support opening TaskDialog with an existing task and updating it in state.

by system

Complete task action

Add a toggleComplete(taskId) action in src/hooks/usePlannerState.ts.

by system

Delete task action

Add deleteTask(taskId) action in src/hooks/usePlannerState.ts with confirmation handled by caller.

by system

List view page

Create src/views/ListView.tsx rendering filtered tasks grouped by due day with an Add Task button.

by system

Task list item

Create src/components/TaskListItem.tsx showing title, badges, due day, and complete/edit controls.

by system

Filters bar UI

Create src/components/FiltersBar.tsx with day selector, tag selector, search input, and status filter.

by system

Filter application logic

Implement src/lib/filterTasks.ts to apply filters consistently for both List and Sky views.

by system

Sky view page

Create src/views/SkyView.tsx with a full-canvas starfield area and overlay controls.

by system

Star component

Create src/components/Star.tsx rendering a draggable star with glow state when completed.

by system

Star positioning model

Extend Task type to include optional x/y coordinates and update persistence accordingly.

by system

Drag and drop logic

Implement pointer-based dragging in src/views/SkyView.tsx to update task x/y positions.

by system

Constellation linking

Create src/components/ConstellationLines.tsx to draw SVG lines between stars sharing the same project.

by system

Sky clustering hint

Add subtle project “orbit”/label overlays in src/views/SkyView.tsx to encourage clustering by project.

by system

Streak meteor animation

Create src/components/MeteorStreak.tsx and trigger it when all tasks for selected day become complete.

by system

Integrate views in App

Wire App.tsx to render ListView or SkyView, passing planner state + filters and shared actions.

by system

In Progress0
In Review0
Done0