--- sidebar_position: 1 slug: /intro --- # Introduction **Songs2VID** turns a cover image and one or more audio files into YouTube-ready videos, then uploads them to your channel. This documentation is for **self-hosted / open-source** deployments (`S2VID_EDITION=selfhosted`). ## What you can do - Combine one image with multiple tracks in a batch - Set per-video metadata (title, artist, description, tags, privacy, resolution) - Art-track layouts with blur backgrounds and fine-tuning (padding, title/artist gap, text offsets) - Custom watermarks: text or logo, positions/offsets, curated or uploaded fonts - Unique cover image per track - Add uploads to YouTube playlists - Use the REST API for automation See [Video editing](./video-editing.md) for composition controls in the dashboard and API. ## Self-host Follow [Getting started](./getting-started.md). Set `S2VID_EDITION=selfhosted` for unlimited video allowance, API access, and all layout features (the optional root Compose example sets this for you). For local development, `npm run dev:all` starts the app (port 3000), worker, and this docs site (port 3001). Going to a public URL? See [Production notes](./deploy.md) (OAuth redirect, worker, HTTPS). Docker/Caddy samples in the repo are optional. ## REST API Programmatic uploads and job creation. Generate an API key under **Dashboard → Settings → API access**. Start with [API overview](./api/overview.md). ## Stack - Next.js 15 (App Router, TypeScript, Tailwind) - PostgreSQL + Prisma - Redis + BullMQ - NextAuth (Google OAuth with YouTube scopes) - FFmpeg for encoding - YouTube Data API v3