Skip to main content

Welcome to Beat App

Beat App is a modern, responsive web-based music player that delivers a premium streaming experience. Built with React 18 and Vite, it allows users to search for tracks, artists, and albums, manage playback queues, and stream audio seamlessly with native-feeling controls.

Quick Start

Get up and running with Beat App in under 5 minutes

Installation

Detailed installation instructions for all package managers

API Reference

Explore the API services and store architecture

Deployment

Deploy Beat App with Docker and NGINX

Key Features

Music Playback & Streaming

Stream audio tracks fetched via a custom API with seamless playback controls

Advanced Search

Dedicated search interfaces for tracks, albums, artists, and playlists

Queue Management

Add songs to queue, play next, play previous, and manage persistent queue drawer

Media Session API

Control playback from your OS or browser’s built-in media controls

Premium UI Design

Beautiful, responsive interface built with Material-UI and Emotion

Dark Mode Support

Full light/dark theme support with custom color schemes

Technology Stack

Beat App is built with modern web technologies for optimal performance and developer experience:
  • Frontend Framework: React 18 with Vite for lightning-fast development
  • Routing: React Router DOM for seamless navigation
  • UI Library: Material-UI (MUI) with custom theming and Emotion for styling
  • State Management: Nanostores for efficient, reactive state management
  • API Integration: Axios and Fetch API for YouTube music streaming
  • Deployment: Docker, Docker Compose, and NGINX for production
Beat App integrates with a YouTube Music API backend to provide access to millions of tracks, albums, and artists.

Architecture Overview

The application follows a modular architecture:
beat-app/
├── src/
│   ├── components/     # Reusable UI components (Player, TrackList, Search)
│   ├── pages/          # Route pages (Home, Album, Artist, Search)
│   ├── services/       # API communication layer (youtube-api.js)
│   ├── stores/         # Global state management (playerStore, searchStore)
│   ├── layouts/        # Page layout wrappers
│   └── App.jsx         # Root application component
├── public/             # Static assets
└── Dockerfile          # Production deployment config

What Makes Beat App Special

1

Native Media Controls

Integrates with the browser’s Media Session API, allowing users to control playback from OS-level media controls, keyboard shortcuts, and lock screens.
2

Reactive State Management

Uses Nanostores for lightweight, atomic state management that keeps the UI in sync with player state across all components.
3

Premium Design System

Custom Material-UI theme with gradient effects, rounded corners, and a carefully crafted dark mode for a premium music streaming experience.
4

Efficient Audio Streaming

Streams audio through a proxy server with automatic URL extraction and playback queue management.

Quick Example

Here’s how the player store manages audio playback:
import { playerStore, playerActions } from './stores/playerStore';
import { useStore } from '@nanostores/react';

function MusicPlayer() {
  const { currentTrack, isPlaying, queue } = useStore(playerStore);

  const handlePlayTrack = async (track) => {
    await playerActions.playTrack(track, [track]);
  };

  return (
    <div>
      <h2>{currentTrack?.title}</h2>
      <button onClick={playerActions.togglePause}>
        {isPlaying ? 'Pause' : 'Play'}
      </button>
      <p>Queue: {queue.length} tracks</p>
    </div>
  );
}
The player store automatically handles Media Session metadata, audio element events, and queue management.

Next Steps

Get Started

Follow our quickstart guide to start streaming music in minutes

Learn the Architecture

Understand how Beat App’s components and stores work together

Build docs developers (and LLMs) love