Create Home wiki page with project overview, glossary, and navigation

xpltd_admin 2026-04-03 22:38:06 -06:00
commit c8a6d90499

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