Create Home wiki page with project overview, glossary, and navigation
commit
c8a6d90499
1 changed files with 83 additions and 0 deletions
83
Home.md
Normal file
83
Home.md
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
# Tubearr
|
||||||
|
|
||||||
|
| Meta | Value |
|
||||||
|
|------|-------|
|
||||||
|
| **Repo** | `xpltdco/tubearr` |
|
||||||
|
| **Page** | `Home` |
|
||||||
|
| **Audience** | developers, agents, newcomers |
|
||||||
|
| **Last Updated** | 2026-04-04 |
|
||||||
|
| **Status** | current |
|
||||||
|
|
||||||
|
## What is Tubearr?
|
||||||
|
|
||||||
|
Tubearr is a self-hosted content archival and monitoring application in the *arr family style (Sonarr, Radarr, Lidarr). It automatically monitors YouTube channels and SoundCloud artists for new content, downloads media using configurable quality profiles, and organizes files into a structured library. Think of it as an automated media librarian that watches your favorite creators and grabs their content before it disappears.
|
||||||
|
|
||||||
|
## Current Status
|
||||||
|
|
||||||
|
**Actively developed.** Version 0.1.0. Core monitoring, downloading, and queue management features are functional. The application runs in production on the xpltd infrastructure.
|
||||||
|
|
||||||
|
## Key URLs
|
||||||
|
|
||||||
|
| Resource | URL |
|
||||||
|
|----------|-----|
|
||||||
|
| **Application** | `https://tubearr.xpltd.co` |
|
||||||
|
| **Repository** | `https://git.xpltd.co/xpltdco/tubearr` |
|
||||||
|
| **Health Check** | `https://tubearr.xpltd.co/ping` |
|
||||||
|
|
||||||
|
## Core Features
|
||||||
|
|
||||||
|
- **Channel Monitoring** — Add YouTube channels or SoundCloud artists; Tubearr periodically scans for new content
|
||||||
|
- **Smart Queue** — Concurrent download queue with retry logic, priority ordering, and rate limiting
|
||||||
|
- **Format Profiles** — Configurable quality presets (resolution, codec, bitrate, subtitles, SponsorBlock)
|
||||||
|
- **Multi-Platform** — YouTube, SoundCloud, and any URL supported by yt-dlp
|
||||||
|
- **Real-Time Progress** — WebSocket-based live download progress in the browser UI
|
||||||
|
- **Notifications** — Discord, email, Pushover, and Telegram alerts on grab/download/failure events
|
||||||
|
- **Back-Catalog Import** — Bulk import existing media files into the library
|
||||||
|
- **REST API** — Full API with key-based authentication for external integrations
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
| Component | Technology |
|
||||||
|
|-----------|------------|
|
||||||
|
| Backend | Node.js 22, TypeScript, Fastify 5 |
|
||||||
|
| Frontend | React 19, React Router 7, TanStack Query |
|
||||||
|
| Database | SQLite (LibSQL) with Drizzle ORM |
|
||||||
|
| Downloader | yt-dlp + ffmpeg |
|
||||||
|
| Build Tool | Vite |
|
||||||
|
| Testing | Vitest |
|
||||||
|
| Deployment | Docker (multi-stage build) |
|
||||||
|
|
||||||
|
## Wiki Pages
|
||||||
|
|
||||||
|
| Page | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| [Architecture](Architecture) | System design, tech stack, directory structure, design decisions |
|
||||||
|
| [Getting Started](Getting-Started) | Local dev setup, prerequisites, first run |
|
||||||
|
| [Data Model](Data-Model) | Database schema, tables, relationships, migrations |
|
||||||
|
| [API Reference](API-Reference) | Complete HTTP endpoint inventory with examples |
|
||||||
|
| [Deployment](Deployment) | Docker setup, volumes, nginx config, health checks |
|
||||||
|
| [Configuration](Configuration) | All environment variables and config knobs |
|
||||||
|
| [Development Guide](Development-Guide) | Code patterns, testing, CI/CD, contribution workflow |
|
||||||
|
| [Agent Context](Agent-Context) | Structured metadata for LLM agents working on this codebase |
|
||||||
|
|
||||||
|
## Glossary
|
||||||
|
|
||||||
|
| Term | Definition |
|
||||||
|
|------|------------|
|
||||||
|
| **Channel** | A monitored content source — a YouTube channel, SoundCloud artist, or generic URL |
|
||||||
|
| **Content Item** | A single piece of downloadable media (video, audio, or livestream) |
|
||||||
|
| **Format Profile** | A reusable quality preset defining resolution, codec, subtitles, and post-processing options |
|
||||||
|
| **Queue Item** | A content item that has been enqueued for download, with status tracking and retry logic |
|
||||||
|
| **Monitoring Mode** | Controls what content Tubearr grabs: `all`, `future` (new only), `existing` (backlog only), or `none` |
|
||||||
|
| **Platform Source** | An adapter for a specific content platform (YouTube, SoundCloud, Generic) |
|
||||||
|
| **yt-dlp** | The command-line tool that handles actual media downloading from 1000+ platforms |
|
||||||
|
| **SponsorBlock** | Community-sourced sponsor segment data; Tubearr can auto-remove sponsor segments during download |
|
||||||
|
| ***arr family** | A category of self-hosted media management apps (Sonarr for TV, Radarr for movies, Lidarr for music) |
|
||||||
|
|
||||||
|
## Infrastructure Context
|
||||||
|
|
||||||
|
For newcomers to the xpltd infrastructure:
|
||||||
|
- **ub01** (10.0.0.10) — The primary server where all Docker services run
|
||||||
|
- **nginx01** (10.0.0.9) — Reverse proxy handling TLS termination for all `*.xpltd.co` subdomains
|
||||||
|
- **AdGuard Home** — Internal DNS with rewrite rules pointing `*.xpltd.co` to nginx01
|
||||||
|
- **Cloudflare** — External DNS with CNAME to dyndns.xpltd.co for public access
|
||||||
Loading…
Add table
Reference in a new issue