diff --git a/DOCKERHUB_OVERVIEW.md b/DOCKERHUB_OVERVIEW.md new file mode 100644 index 0000000..b7aaaa1 --- /dev/null +++ b/DOCKERHUB_OVERVIEW.md @@ -0,0 +1,48 @@ +# Songs2VID + +Payment-free, self-hosted software that turns cover art and audio into YouTube videos (FFmpeg + BullMQ). Full entitlements in every deployment — no plans, credits, Stripe, or paywall. + +**Image:** `atakanozban/songs2vid:latest` + +**Docs:** https://docs.songs2vid.com +**Source:** https://git.atakanozban.com/Songs2VID/songs2vid +**Hosted SaaS (separate):** https://songs2vid.com + +## Quick start + +1. Clone the repo (Compose + `.env.example`) from Gitea, or reuse the sample `docker-compose.yml`. +2. Copy `.env.example` → `.env` and set: + - `NEXTAUTH_SECRET` + - `GOOGLE_CLIENT_ID` + - `GOOGLE_CLIENT_SECRET` +3. Enable **YouTube Data API v3** in Google Cloud and add OAuth redirect: + - `http://localhost:3000/api/auth/callback/google` (or your public HTTPS origin) +4. Run: + +```bash +docker pull atakanozban/songs2vid:latest +docker compose up -d --build +``` + +Open http://localhost:3000 → sign in with Google → dashboard. + +No Stripe or billing environment variables are required. + +## What you get + +- Batch encode: cover art + audio → YouTube upload +- Classic and art-track layouts, blur, typography, watermarks +- Playlists, privacy, tags, resolutions +- REST API (Dashboard → Settings → API key) +- Always-on self-hosted entitlements + +## Stack + +Next.js 15 · PostgreSQL/Prisma · Redis/BullMQ · NextAuth (Google + YouTube) · FFmpeg + +## Links + +- Full documentation: https://docs.songs2vid.com +- Getting started: https://docs.songs2vid.com/docs/getting-started +- Environment variables: https://docs.songs2vid.com/docs/environment +- REST API: https://docs.songs2vid.com/docs/api/overview diff --git a/README.md b/README.md index 6a76c64..0173570 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,72 @@ # Songs2VID OSS -Payment-free, self-hosted software for creating videos from cover art and audio, then uploading them -to YouTube. All features are available in every deployment; there are no plans, credits, purchases, -subscriptions, or Stripe integration. +Payment-free, self-hosted software that turns cover art and audio into YouTube videos +(FFmpeg encoding + BullMQ jobs). Every deployment has full entitlements — there are no +plans, credits, purchases, subscriptions, paywalls, or Stripe. -## Quick start with Docker +Sign in with Google, open the dashboard, and create videos. Settings cover account, +YouTube connection, and API keys only. -1. Copy `.env.example` to `.env` and set `NEXTAUTH_SECRET`, `GOOGLE_CLIENT_ID`, and - `GOOGLE_CLIENT_SECRET`. -2. In Google Cloud Console, enable YouTube Data API v3 and add - `http://localhost:3000/api/auth/callback/google` as an OAuth redirect URI. -3. Start the stack: +## Quick start (Docker) + +Published image: [`atakanozban/songs2vid:latest`](https://hub.docker.com/r/atakanozban/songs2vid) + +1. Clone this repo (or copy `docker-compose.yml` + `.env.example`). +2. Copy `.env.example` to `.env` and set at least: + - `NEXTAUTH_SECRET` + - `GOOGLE_CLIENT_ID` + - `GOOGLE_CLIENT_SECRET` +3. In [Google Cloud Console](https://console.cloud.google.com/), enable **YouTube Data API v3** + and add an OAuth redirect URI: + - Local: `http://localhost:3000/api/auth/callback/google` + - Production: `https://YOUR_DOMAIN/api/auth/callback/google` +4. Start the stack (web + worker + Postgres + Redis): ```bash docker compose up -d --build ``` -Open http://localhost:3000. +Or pull the published image and run Compose after pointing services at +`atakanozban/songs2vid:latest` (same env and volumes). + +Open http://localhost:3000 → sign in → dashboard. + +No Stripe keys or billing env vars are required. + +## Features + +- Batch: one cover (or per-track covers) + many audio files → YouTube uploads +- Classic letterbox and art-track layouts (blur backgrounds, typography, fine-tuning) +- Custom watermarks (badge, text, or logo) and curated or uploaded fonts +- YouTube playlists, privacy, tags, resolution, categories +- REST API for automation (keys under **Dashboard → Settings → API key**) +- Always-on self-hosted entitlements (no quota paywall) ## Local development ```bash docker compose -f docker-compose.dev.yml up -d +cp .env.example .env # then edit secrets / Google OAuth npm install npm run db:migrate npm run dev:all ``` -The web app runs on http://localhost:3000. `dev:all` starts both the Next.js app and BullMQ worker. +- App: http://localhost:3000 +- `dev:all` runs Next.js and the BullMQ worker ## Stack - Next.js 15, TypeScript, Tailwind - PostgreSQL and Prisma - Redis and BullMQ -- NextAuth with Google OAuth +- NextAuth with Google OAuth (YouTube scopes) - FFmpeg - YouTube Data API v3 -Documentation, including the REST API reference, is at -[docs.songs2vid.com](https://docs.songs2vid.com). +## Links + +- Docs: [docs.songs2vid.com](https://docs.songs2vid.com) +- Docker Hub: [atakanozban/songs2vid](https://hub.docker.com/r/atakanozban/songs2vid) +- Source: [git.atakanozban.com/Songs2VID](https://git.atakanozban.com/Songs2VID) +- Hosted SaaS (separate product): [songs2vid.com](https://songs2vid.com)