From 105b608cd26d4446bd9d933865c0f0e64bcd6fe7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Atakan=20Do=C4=9Fan=20=C3=96zban?=
<1+atakan@noreply.git.atakanozban.com>
Date: Fri, 17 Jul 2026 00:46:55 +0000
Subject: [PATCH] Update README.md
---
README.md | 84 ++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 65 insertions(+), 19 deletions(-)
diff --git a/README.md b/README.md
index 6c91998..e40768e 100644
--- a/README.md
+++ b/README.md
@@ -1,42 +1,88 @@
-๏ปฟ# Songs2YT
+# ๐ต Songs2YT
-Self-hosted tool that turns a cover image + audio files into YouTube videos and uploads them to your channel.
+
+
+
+
+
+
-This is the **open-source edition**: no video quotas, no API rate limits, playlists and REST API unlocked (`S2YT_EDITION=selfhosted`).
+
+ Turn your cover art + audio files into YouTube videos automatically. No manual rendering BS.
+ The ultimate life-saver for creators who waste hours opening Premiere/Vegas just to upload a single track.
+
-Hosted product: [songs2yt.com](https://songs2yt.com)
+---
-## Requirements
+## ๐ฅ What's the deal?
-- Docker (recommended), or Node 20+, Postgres, Redis, FFmpeg
-- Google Cloud OAuth client with YouTube Data API v3 enabled
+**Songs2YT** is a self-hosted automation beast that takes your audio files (MP3/WAV) and cover images, smashes them together with FFmpeg in a background queue, and uploads them straight to your YouTube channel.
-## Quick start (Docker)
+This is the **open-source (self-hosted) edition**:
+* ๐ซ **Zero limits:** No video upload quotas, no API rate limit bullshit.
+* ๐ **Fully Unlocked:** Playlists and REST API are completely unlocked (`S2YT_EDITION=selfhosted`).
+* โ๏ธ **Full Control:** Run it on your own server. Your data, your rules.
+
+> Check out the hosted version: [songs2yt.com](https://songs2yt.com)
+
+---
+
+## ๐ ๏ธ Requirements
+
+* **Docker & Docker Compose** (highly recommended, saves your mental health)
+* *Or:* Node 20+, Postgres, Redis, FFmpeg
+* Google Cloud OAuth client with **YouTube Data API v3** enabled
+
+---
+
+## ๐ Quick Start (Docker)
+
+Skip the setup headache. Copy the env, spin it up, and go touch grass:
```bash
+# Copy env template
cp .env.example .env
-# set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET, NEXTAUTH_URL
+
+# Fill in GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET, and NEXTAUTH_URL
+nano .env
+
+# Fire up the engine
docker compose up -d --build
```
+* Open `http://localhost:3000`
+* OAuth Redirect URL on Google Console: `{NEXTAUTH_URL}/api/auth/callback/google`
-Open http://localhost:3000
-OAuth redirect: `{NEXTAUTH_URL}/api/auth/callback/google`
+## ๐ป Local Development
-## Local development
+Want to hack on the codebase? Follow this:
```bash
+# 1. Prepare env
cp .env.example .env
-docker compose -f docker-compose.dev.yml up -d # Postgres + Redis
+
+# 2. Spin up Postgres & Redis
+docker compose -f docker-compose.dev.yml up -d
+
+# 3. Get dependencies
npm install
+
+# 4. Push database schema
npm run db:push
-npm run dev # terminal 1
-npm run worker # terminal 2
+
+# 5. Run it (open two terminals)
+npm run dev # Terminal 1 (Next.js)
+npm run worker # Terminal 2 (BullMQ/FFmpeg Worker)
```
-## Stack
+## ๐๏ธ Stack
-Next.js ยท Postgres ยท Redis/BullMQ ยท NextAuth (Google) ยท FFmpeg ยท YouTube Data API
+* Next.js (Frontend & API)
+* Postgres (Database)
+* Redis / BullMQ (Background render queue)
+* NextAuth (Google OAuth)
+* FFmpeg (The engine merging audio + image)
+* YouTube Data API (The rocket launcher pushing to YT)
-## License
+## ๐ License
-MIT
+This project is licensed under the MIT License.
\ No newline at end of file