Soundless Beatbox

A playful rhythm trainer where users build short beat patterns on a 16-step grid using silent “mouth-sound” icons (kick, snare, hi-hat, clap) and watch a bouncing playhead animate timing without playing audio. It includes pattern saving/loading via localStorage, a tempo control, and a challenge mode that generates random target patterns for users to recreate by eye with instant correctness feedback. The UI is split into clear components: step sequencer grid, transport/tempo controls, pattern library, and challenge panel.

To Do30
Scaffold Vite app

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 paths and add @tailwind directives in src/index.css.

by system

Create app layout

Implement a simple responsive shell in src/App.tsx with header and 2-column main.

by system

Define sequencer types

Create src/lib/types.ts with Instrument, StepIndex, Pattern, and ChallengeResult types.

by system

Instrument icon set

Add src/lib/instruments.ts exporting the four instruments with labels and simple icon metadata.

by system

LocalStorage helpers

Create src/lib/storage.ts with load/save/remove utilities and safe JSON parsing.

by system

Tempo utilities

Add src/lib/tempo.ts to convert BPM to step interval ms for a 16-step loop.

by system

Pattern equality helper

Create src/lib/patternMath.ts with functions to compare patterns and count matching steps.

by system

Sequencer state hook

Implement src/hooks/useSequencer.ts to manage grid state, active step, and play/pause.

by system

Tempo state hook

Implement src/hooks/useTempo.ts to manage BPM with clamping and change handlers.

by system

Pattern library hook

Implement src/hooks/usePatternLibrary.ts to persist named patterns in localStorage.

by system

Challenge mode hook

Implement src/hooks/useChallenge.ts to generate targets and compute correctness feedback.

by system

Step cell component

Create src/components/StepCell.tsx for a single toggleable step with active/playhead styling.

by system

Instrument row component

Create src/components/InstrumentRow.tsx rendering 16 StepCell items for one instrument.

by system

Sequencer grid component

Create src/components/SequencerGrid.tsx rendering all instrument rows and wiring toggle events.

by system

Playhead animation

Add CSS/logic in src/components/Playhead.tsx to visually indicate the current step without audio.

by system

Transport controls

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

by system

Tempo control

Create src/components/TempoControl.tsx with shadcn Slider/Input to edit BPM.

by system

Pattern name dialog

Create src/components/SavePatternDialog.tsx to prompt for a name and trigger save.

by system

Pattern library list

Create src/components/PatternLibrary.tsx listing saved patterns with load/overwrite/delete.

by system

Pattern preview mini-grid

Create src/components/PatternPreview.tsx to render a compact read-only pattern thumbnail.

by system

Challenge panel UI

Create src/components/ChallengePanel.tsx with target preview, New Challenge, and status.

by system

Correctness feedback badge

Create src/components/CorrectnessBadge.tsx showing match %, exact match, and mismatch state.

by system

Target pattern preview

Create src/components/TargetPatternView.tsx to display the challenge target pattern read-only.

by system

User pattern comparison view

Create src/components/ComparisonView.tsx to highlight per-step matches vs mismatches.

by system

Wire app state

Connect hooks and components in src/App.tsx to form the full sequencer/controls/library layout.

by system

Add shadcn base components

Install and use minimal shadcn/ui components (button, card, dialog, input, slider) where needed.

by system

Keyboard shortcuts

Add src/hooks/useHotkeys.ts to support Space play/pause and C clear without conflicting inputs.

by system

Empty/error states

Add small UI states for no saved patterns, invalid stored data, and challenge not started.

by system

Polish styling pass

Refine Tailwind styling across components for spacing, alignment, and consistent visual hierarchy.

by system

In Progress0
In Review0
Done0