Skip to content

drakulah/Vampire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧛 Vampire

Very Attractive Music Player In the Room as Expected

A self-hosted music player powered by YouTube Music as a data source. Clean interface, personal history, no ads.


Showcase

Live demo: Vampire

Features

  • 🔐 User authentication — login required to access the app
  • 🔍 Search and browse music, albums, artists, and playlists
  • ▶️ Stream tracks directly from YouTube Music
  • 📜 Per-user playback history

Tech Stack

Layer Technology
Frontend Svelte + Bun
Backend Python + FastAPI
Proxy Go (Language)
Database Python

Getting Started

Prerequisites

  • Bun installed
  • Python 3.11+
  • uv installed

Frontend

cd frontend
bun install
bun run build
bun run preview

Backend

cd backend
uv sync
uv run main.py

Project Structure

vampire/
├── frontend/                   # Svelte app (Bun)
│   └── src/
│       ├── routes/             # SvelteKit pages
│       │   ├── state.svelte.ts # App state definition
│       │   ├── app.html        # The base of single page app
│       │   ├── (auth)          # Auth handling pages
│       │   └── (app)           # Music player & browser pages
│       └── lib/                # YouTubeMusic client, media player, state
│           ├── coerce.ts       # Coerce math function
│           ├── color.ts        # Theme color calculator
│           ├── cssVariable.ts  # Global CSS variable editor
│           ├── hsla.ts         # Color code transformer
│           ├── util.ts         # Shared important functions
│           ├── mediaPlayer.ts  # Base AudioPlayer class 
│           ├── client          # A custom http request library
│           ├── youtubemusic    # YouTubeMusic class
│           └── tools           # YouTubeMusic response parsers
├── backend/                    # FastAPI server
│   ├── main.py
│   ├── .env                    # Some important credentials
│   ├── config.py               # Base controls over JWT and more
│   ├── utils.py                # Shared important functions
│   ├── database/               # Database layer
│   ├── auth/                   # Authentication layer
│   ├── routes/                 # Routes (Optional)
│   └── world/                  # Languages & Country class for database
│
└── proxy/                      # Proxy server in Go
    ├── main.go
    └── streamer                # 64-bit linux binary for running proxy server

Usage

  1. Start the backend server & proxy server
  2. Start the frontend dev server
  3. Open the app and log in
  4. Search for music or browse artists, albums, and playlists
  5. Your playback history is tracked per user account

License

GNU General Public License v3.0

About

(College Project) A self-hosted music player powered by YouTube Music as a data source. Clean interface, personal history, no ads

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors