A revolutionary DJ platform with terminal aesthetics and gesture control via webcam hand tracking.
โ ๏ธ Pre-MVP Status: OX Board is currently in active development (v0.9.0-pre-mvp). Some features are functional prototypes, while others use mock implementations. See Feature Status below.
# Install dependencies
npm install
# Run development server
npm run dev
# Open http://localhost:3000OX Board uses a retro terminal UI as its primary interface, featuring:
- ๐ฅ๏ธ CRT Aesthetic: Green-on-black display with scanlines and flicker effects
- ๐น Full DJ Functionality: Dual decks, mixer, effects, stem separation
- ๐ Gesture Control: Control everything with hand gestures via webcam
- ๐ต Professional Audio: Powered by Tone.js and Web Audio API
ox-board/
โโโ app/
โ โโโ components/
โ โ โโโ terminal/ # ๐ฎ ACTIVE UI - Terminal interface
โ โ โโโ offline/ # PWA & offline support
โ โ โโโ Camera/ # Gesture recognition
โ โโโ lib/
โ โ โโโ audio/ # Audio processing libraries
โ โ โโโ gestures/ # Gesture detection & mapping
โ โ โโโ optimization/ # Performance utilities
โ โโโ services/ # Core services
โ โ โโโ audioService.ts # Audio context management
โ โ โโโ deckManager.ts # Deck control system
โ โ โโโ aiStemService.ts # AI-powered features
โ โโโ stores/ # State management (Zustand)
โ โโโ hooks/ # React hooks
โโโ backend/ # Python FastAPI backend (planned - see specs/003)
โ โโโ api/ # API endpoints
โ โโโ core/ # Core backend logic
โ โโโ Dockerfile # Container configuration
โโโ docs/ # ๐ Comprehensive documentation
โ โโโ OPTIMAL-VISION.md # Product roadmap & feature plan
โ โโโ ANALYSIS-SUMMARY.md # Codebase analysis
โ โโโ domain/ # Business domain documentation
โ โโโ architecture/ # System architecture
โ โโโ patterns/ # Design patterns catalog
โ โโโ interfaces/ # API reference
โโโ specs/ # Feature specifications (001-004)
โโโ tests/ # Test suites (113 tests, 85.8% passing)
- Dashboard: System overview and quick stats
- Studio: Main DJ interface with decks and mixer
- Music Library: Track browser and management
- Settings: Configuration and preferences
- ๐๏ธ Dual Deck System: A/B deck architecture
- ๐๏ธ Professional Mixer: EQ, filters, crossfader
- ๐ต Stem Separation: Isolate drums, bass, vocals, other
- ๐น Effects Rack: Reverb, delay, filters, and more
- ๐ BPM Detection: Automatic tempo analysis
- ๐ Recording: Capture your mixes
- โ Hand Tracking: MediaPipe-powered detection
- ๐๏ธ Volume Control: Vertical hand movement
โ๏ธ Crossfader: Horizontal hand position- ๐๏ธ EQ Control: Pinch gestures for bands
- โฏ๏ธ Playback: Open/closed hand for play/pause
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- UI: Custom Terminal UI with CSS
- State: Zustand
- Audio: Tone.js, Web Audio API
- Gestures: MediaPipe, TensorFlow.js
- Framework: FastAPI (Python)
- Deployment: Railway
- Audio Processing: Demucs (stem separation)
- API: RESTful + WebSocket
- Hosting: Vercel (frontend) + Railway (backend)
- CDN: Cloudflare
- Database: PostgreSQL (planned)
- Monitoring: Sentry
Space - Play/Pause
โ โ - Navigate tabs
โ โ - Adjust values
Enter - Select/Confirm
Esc - Cancel/Back
Tab - Next field
Shift+Tab - Previous field
/play deck:a # Play deck A
/stop deck:b # Stop deck B
/crossfade 50 # Set crossfader to center
/effect reverb amount:30 # Apply reverb effect
/bpm sync # Sync BPM between decksnpm run dev # Start development server
npm run build # Build for production
npm run start # Run production server
npm test # Run test suite
npm run lint # Lint code
npm run type-check # Check TypeScript typesCreate a .env.local file:
# Backend API
NEXT_PUBLIC_API_URL=https://your-railway-backend.railway.app
NEXT_PUBLIC_WEBSOCKET_URL=wss://your-railway-backend.railway.app
# Optional Services
SENTRY_DSN=your-sentry-dsn
GOOGLE_ANALYTICS_ID=your-ga-id- โ Terminal UI with CRT aesthetic
- โ Gesture recognition via MediaPipe
- โ Audio playback with Tone.js
- โ Dual deck system
- โ Basic mixer controls
- โ PWA support (offline capability)
- โ Feature flag system (Terminal/Classic UI toggle)
- ๐ก BPM detection (client-side only)
- ๐ก Key detection (basic implementation)
- ๐ก Effects rack (limited effects)
- ๐ก Recording (browser-based)
- ๐ด Stem separation (requires Demucs backend - see
specs/003-self-hosted-demucs/) - ๐ด AI mixing suggestions (placeholder logic)
- ๐ด Harmonic compatibility (basic algorithm)
- ๐ด Music library management (local only)
- ๐ Self-hosted Demucs backend (specs/003)
- ๐ Real-time collaboration
- ๐ Cloud sync for mixes
- ๐ Mobile app (React Native)
๐ For complete roadmap, see docs/OPTIMAL-VISION.md
- Unique Identity: Stand out with retro aesthetics
- Performance: Lightweight, fast rendering
- Accessibility: Keyboard-first navigation
- Focus: Minimal distractions, maximum functionality
Previous UI implementations are preserved in ui-archive/ for:
- Reference and learning
- Future feature extraction
- Design inspiration
- Component reuse
User Input โ Gesture/Keyboard โ Store โ Services โ Audio Output
โ โ
State โโโโโโโโโโโโโโโโโโโโ
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run specific test file
npm test -- path/to/test.spec.ts
# Run in watch mode
npm run test:watch# Automatic deployment on push to main
git push origin main# Deploy backend
cd backend/
railway up- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Tone.js - Web Audio framework
- MediaPipe - Hand tracking technology
- Demucs - Stem separation engine
- Next.js - React framework
- Railway - Backend hosting
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@ox-board.app
Built with ๐ by the OX Board Team
Making DJing accessible through gesture control and terminal aesthetics