Soundless Beatbox

A playful rhythm-builder where users create “silent beats” by placing drum hits on a step sequencer grid and watching animated visual cues instead of hearing audio. Includes multiple instrument rows, tempo control, pattern save/load via localStorage, and a performance mode that plays the loop full-screen with reactive color pulses. The UI is split cleanly into SequencerGrid, TransportControls, PatternLibrary, and VisualizerPanel components for parallel implementation.

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

by system

Add Tailwind styles

Configure src/index.css with Tailwind directives and set a minimal app background/text style.

by system

Create app layout

Implement src/App.tsx with a responsive split layout for SequencerGrid, TransportControls, PatternLibrary, and VisualizerPanel.

by system

Define sequencer types

Create src/types/sequencer.ts with types for instruments, steps, patterns, and transport state.

by system

Add shadcn Button

Install and export the shadcn/ui Button component for use across controls.

by system

Add shadcn Slider

Install the shadcn/ui Slider component for tempo control.

by system

Add shadcn Dialog

Install the shadcn/ui Dialog component for save/load and confirmations.

by system

Add shadcn Input

Install the shadcn/ui Input component for pattern naming.

by system

Add shadcn Tabs

Install the shadcn/ui Tabs component to switch between Library and Performance settings.

by system

Create sequencer state hook

Implement src/state/useSequencer.ts to hold pattern grid, tempo, playhead, and play/pause actions.

by system

Add interval tick hook

Implement src/hooks/useInterval.ts for stable timer-based stepping in React.

by system

Compute step timing

Implement src/utils/timing.ts to convert BPM and steps-per-bar into tick interval milliseconds.

by system

Create default instruments

Add src/data/instruments.ts exporting a small set of instrument rows (e.g., Kick/Snare/Hat/Clap).

by system

Build SequencerGrid shell

Create src/components/SequencerGrid.tsx rendering a grid container with instrument labels and step columns.

by system

Add StepCell component

Create src/components/StepCell.tsx as a clickable cell with active/hover/playhead visual states.

by system

Wire step toggling

Connect StepCell to useSequencer to toggle hits on click/keyboard.

by system

Add playhead highlight

Update SequencerGrid to visually indicate the current step column while playing.

by system

Add row mute toggles

Add per-instrument mute buttons in SequencerGrid that affect visual triggering only.

by system

Add clear pattern action

Implement a clear/reset function in useSequencer and expose it to the UI.

by system

Build TransportControls

Create src/components/TransportControls.tsx with Play/Pause, Stop, Clear, and BPM slider.

by system

Add BPM input display

Add a numeric BPM display/edit field tied to the Slider value with clamping.

by system

Add steps length selector

Add a small control in TransportControls to switch pattern length (e.g., 8/16/32 steps).

by system

Create pattern storage utils

Implement src/utils/patternStorage.ts to save/load/list/delete patterns in localStorage.

by system

Build PatternLibrary shell

Create src/components/PatternLibrary.tsx with a list area and actions toolbar.

by system

Add save pattern dialog

Implement a Dialog in PatternLibrary to name and save the current pattern to localStorage.

by system

Add load pattern action

Wire PatternLibrary list items to load a selected pattern into useSequencer.

by system

Add delete pattern action

Add delete controls per saved pattern with a confirmation Dialog.

by system

Build VisualizerPanel

Create src/components/VisualizerPanel.tsx that renders reactive color pulses based on current step hits.

by system

Add performance mode view

Create src/pages/PerformanceMode.tsx as a full-screen visualizer route with minimal controls.

by system

Add SPA routing

Add src/router.tsx using react-router-dom and wire App to navigate between Sequencer and Performance mode.

by system

In Progress0
In Review0
Done0