Dashboard monitoring & manajemen multi-akun YouTube channel — pantau subscriber, jam tayang, status monetisasi, dan sinkronisasi data langsung dari YouTube Studio.
- Multi-channel monitoring — tambah dan pantau banyak channel YouTube sekaligus
- Sinkronisasi otomatis — scrape data langsung dari YouTube Studio (subscriber, view, jam tayang)
- Status monetisasi — deteksi otomatis channel yang sudah lolos YPP (1000 sub + 4000 jam)
- Filter & pencarian — filter berdasarkan status (Connected, Auth Pending, Lolos Monet, Kejar Target)
- Tampilan tabel & grid — switch antara tabel rapi dan kartu grid
- Session browser — buka YouTube Studio lewat browser Chromium yang bisa dikontrol
- Dark / Light mode — tema gelap dan terang
- Snapshot history — simpan snapshot data channel setiap saat
- Multi-login Google — kelola banyak akun Google/YouTube dalam satu dashboard
- Stack modern — Express + TypeScript backend, React + Vite + Tailwind CSS frontend
FarmYouTube/
├── backend/ # Express API, Prisma, MySQL, browser automation
├── frontend/ # Vite React app (dashboard UI)
├── docker-compose.yml
├── setup.ps1 # Script setup otomatis (Windows)
├── run-app.bat # Jalankan app sekaligus
└── update.sh # Auto-update script
- Node.js 20+
- npm
- MySQL 8+
- Google Chrome / Chromium (untuk browser automation)
git clone https://github.com/effands/FarmYouTube.git
cd FarmYouTubepowershell -ExecutionPolicy Bypass -File .\setup.ps1Setup script akan:
- Generate
.envdengan secret key yang aman - Install semua dependencies
- Jalankan Prisma migration
- Buat database MySQL
.\run-app.batAtau jalankan manual:
# Terminal 1 — Backend
cd backend
npm run dev
# Terminal 2 — Frontend
cd frontend
npm run dev- Frontend:
http://localhost:5173 - Backend API:
http://localhost:4000
Buat file backend/.env:
DATABASE_URL="mysql://root@localhost:3306/farmyoutube"
APP_PORT=4000
FRONTEND_URL="http://localhost:5173"
JWT_ACCESS_SECRET="ganti-dengan-secret-panjang-minimal-32-karakter"
TOKEN_ENCRYPTION_KEY="ganti-dengan-key-32-karakter-tepat"
ACCESS_TOKEN_TTL_SECONDS=900
REFRESH_TOKEN_TTL_DAYS=30
MAX_UPLOAD_BYTES=5368709120Buat file frontend/.env:
VITE_API_URL=http://localhost:4000Buat database MySQL:
CREATE DATABASE farmyoutube;cd backend
npm run prisma:migrate
npm run prisma:generate# Build dan jalankan semua service
docker compose up -d --build
# Lihat log backend
docker compose logs -f backend
# Stop
docker compose downServices:
| Service | Port |
|---|---|
| Frontend | 5173 |
| Backend | 4000 |
| MySQL | 3306 |
POST /auth/register
POST /auth/login
POST /auth/refresh
POST /auth/logout
GET /auth/me
GET /youtube-monitor/channels # List semua channel
POST /youtube-monitor/channels # Tambah channel manual
PATCH /youtube-monitor/channels/:id # Update channel
DELETE /youtube-monitor/channels/:id # Hapus channel
POST /youtube-monitor/channels/:id/snapshot # Simpan snapshot
GET /youtube-monitor/session/status # Status session browser
POST /youtube-monitor/session/start # Buka session baru
POST /youtube-monitor/refresh-metrics # Sync data dari YouTube Studio
# Backend
cd backend
npm run dev # Dev server
npm run build # Build production
npm run start # Jalankan production build
npm run prisma:migrate # Jalankan migration
npm run prisma:generate # Generate Prisma client
# Frontend
cd frontend
npm run dev # Dev server
npm run build # Build production
npm run preview # Preview production build- Jangan commit file
.env - Gunakan
JWT_ACCESS_SECRETdanTOKEN_ENCRYPTION_KEYyang panjang dan acak TOKEN_ENCRYPTION_KEYharus tepat 32 karakter
| Layer | Stack |
|---|---|
| Backend | Express 5, TypeScript, Prisma 6, MySQL, Zod, JWT, Argon2 |
| Frontend | React 19, Vite 8, TypeScript, Tailwind CSS 4, React Router 7 |
| Browser | Playwright / Chromium (YouTube Studio automation) |
| Database | MySQL 8 |
Private — All rights reserved.