Soundtrack Moodboard

A playful client-side app where you build “moodboards” made of colors, adjectives, and short notes, then pair each board with a generated mini playlist of embedded audio previews (user-provided links or local files) and a simple animated visualizer. Create, edit, and reorder boards, tag them (e.g., “focus”, “rainy”, “hype”), and search/filter your library; everything is saved to localStorage. Includes a “Shuffle a Vibe” mode that randomly combines a color palette + prompt words + animation style to spark new boards, with clear modular components for boards, tags, audio slots, and the visualizer.

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

by system

Add Tailwind styles

Configure tailwind.config + src/index.css with Tailwind directives and a minimal app background.

by system

Setup shadcn utils

Add src/lib/utils.ts with cn() and ensure path alias resolves for imports.

by system

Create base layout

Implement src/App.tsx with a header, main container, and placeholder content.

by system

Add app shell routes

Add client-side routing (react-router) with Library and Shuffle pages.

by system

Define data models

Create src/types.ts defining Moodboard, Tag, AudioSlot, and VisualizerStyle types.

by system

LocalStorage persistence

Implement src/lib/storage.ts for load/save with schema versioning and safe parsing.

by system

Boards state hook

Create src/hooks/useMoodboards.ts to manage CRUD, reorder, and persistence.

by system

Tag utilities

Create src/lib/tags.ts for normalize, color assignment, and tag matching helpers.

by system

Palette utilities

Create src/lib/palette.ts for generating/validating 3–6 color palettes.

by system

Shuffle vibe generator

Create src/lib/shuffle.ts that returns random palette + prompt words + visualizer style.

by system

UI: Button component

Generate shadcn/ui Button and ensure Tailwind styling works.

by system

UI: Input components

Generate shadcn/ui Input, Textarea, and Label for forms.

by system

UI: Dialog component

Generate shadcn/ui Dialog for create/edit moodboard modal.

by system

UI: Badge component

Generate shadcn/ui Badge to display tags and prompt words.

by system

UI: Tabs component

Generate shadcn/ui Tabs for switching between board details sections.

by system

Board card component

Create src/components/BoardCard.tsx to display palette, title, tags, and quick actions.

by system

Palette strip component

Create src/components/PaletteStrip.tsx to render clickable color swatches.

by system

Tag list component

Create src/components/TagList.tsx for rendering tags with optional remove buttons.

by system

Tag input component

Create src/components/TagInput.tsx to add tags with enter/comma and suggestions.

by system

Notes editor component

Create src/components/NotesEditor.tsx as a controlled Textarea with char count.

by system

Audio slot component

Create src/components/AudioSlot.tsx supporting URL input or local file selection with preview.

by system

Audio slots list

Create src/components/AudioSlotsList.tsx to add/remove/reorder up to N slots.

by system

Visualizer canvas

Create src/components/VisualizerCanvas.tsx rendering a simple animated visualization for the current audio.

by system

Visualizer style picker

Create src/components/VisualizerStylePicker.tsx to select among a few animation styles.

by system

Create/edit board dialog

Create src/components/BoardEditorDialog.tsx combining title, palette, adjectives, tags, notes, audio, and visualizer fields.

by system

Library page UI

Implement src/pages/LibraryPage.tsx showing board grid and a create button.

by system

Search and filter bar

Create src/components/SearchFilterBar.tsx for text search and tag filtering.

by system

Reorder boards controls

Add src/components/BoardReorderControls.tsx with move up/down actions wired to reorder logic.

by system

Shuffle a Vibe page

Implement src/pages/ShufflePage.tsx to generate a vibe, preview it, and create a new board from it.

by system

In Progress0
In Review0
Done0