Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

100 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ›๏ธ OX Board - Gesture-Controlled DJ Terminal

A revolutionary DJ platform with terminal aesthetics and gesture control via webcam hand tracking.

Version Next.js TypeScript License

โš ๏ธ 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.

๐Ÿš€ Quick Start

# Install dependencies
npm install

# Run development server
npm run dev

# Open http://localhost:3000

๐ŸŽจ Terminal UI - The Primary Interface

OX 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

๐Ÿ“ Project Structure

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)

๐ŸŽฏ Key Features

Terminal UI Navigation

  • Dashboard: System overview and quick stats
  • Studio: Main DJ interface with decks and mixer
  • Music Library: Track browser and management
  • Settings: Configuration and preferences

Audio Capabilities

  • ๐ŸŽš๏ธ 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

Gesture Control

  • โœ‹ 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

๐Ÿ› ๏ธ Technology Stack

Frontend

  • 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

Backend

  • Framework: FastAPI (Python)
  • Deployment: Railway
  • Audio Processing: Demucs (stem separation)
  • API: RESTful + WebSocket

Infrastructure

  • Hosting: Vercel (frontend) + Railway (backend)
  • CDN: Cloudflare
  • Database: PostgreSQL (planned)
  • Monitoring: Sentry

๐ŸŽฎ Using the Terminal UI

Keyboard Shortcuts

Space       - Play/Pause
โ† โ†’        - Navigate tabs
โ†‘ โ†“        - Adjust values
Enter      - Select/Confirm
Esc        - Cancel/Back
Tab        - Next field
Shift+Tab  - Previous field

Terminal Commands (Coming Soon)

/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 decks

๐Ÿ”ง Development

Available Scripts

npm 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 types

Environment Variables

Create 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

โœ… Feature Status

Working Features (Production-Ready)

  • โœ… 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)

Prototype Features (Functional but Limited)

  • ๐ŸŸก BPM detection (client-side only)
  • ๐ŸŸก Key detection (basic implementation)
  • ๐ŸŸก Effects rack (limited effects)
  • ๐ŸŸก Recording (browser-based)

Mock Implementations (UI Only)

  • ๐Ÿ”ด 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)

Planned Features

  • ๐Ÿ“‹ 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

๐Ÿ—๏ธ Architecture Decisions

Why Terminal UI?

  1. Unique Identity: Stand out with retro aesthetics
  2. Performance: Lightweight, fast rendering
  3. Accessibility: Keyboard-first navigation
  4. Focus: Minimal distractions, maximum functionality

Archived UI Implementations

Previous UI implementations are preserved in ui-archive/ for:

  • Reference and learning
  • Future feature extraction
  • Design inspiration
  • Component reuse

Audio Architecture

User Input โ†’ Gesture/Keyboard โ†’ Store โ†’ Services โ†’ Audio Output
               โ†‘                    โ†“
            State โ†โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿงช Testing

# 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

๐Ÿ“ฆ Deployment

Frontend (Vercel)

# Automatic deployment on push to main
git push origin main

Backend (Railway)

# Deploy backend
cd backend/
railway up

๐Ÿค Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Tone.js - Web Audio framework
  • MediaPipe - Hand tracking technology
  • Demucs - Stem separation engine
  • Next.js - React framework
  • Railway - Backend hosting

๐Ÿ“ซ Support


Built with ๐Ÿ’š by the OX Board Team

Making DJing accessible through gesture control and terminal aesthetics

Releases

Packages

Contributors

Languages