Files
youtube-studio-flow/documentation/YouTube Studio Flow/05 - Development/01 - Local Setup.md
T

95 lines
2.5 KiB
Markdown

# Local Setup
Step-by-step guide to running YouTube Studio Flow on a local machine for development.
---
## Prerequisites
- **Node.js 18+** — required by both backend and frontend
- **Docker** — used to run Postgres and Redis locally
- **Git** — for cloning the repository
---
## Step 1 — Start Infrastructure
Start Postgres and Redis using Docker Compose:
```bash
cd infrastructure
docker compose up -d postgres redis
```
> **Important:** Redis must run with `--maxmemory-policy noeviction`. BullMQ silently drops jobs if Redis uses `allkeys-lru` eviction. This policy is already pre-configured in `infrastructure/docker-compose.yml`. Do not change it. See [[04 - Gotchas]] for more detail.
---
## Step 2 — Backend Setup
In a terminal, set up and start the NestJS API:
```bash
cd backend
npm install
cp .env.example .env
# Fill in all required values in .env — see [[02 - Environment Variables]]
npx prisma generate
npx prisma migrate deploy
npm run start:dev
```
The API is now running on **http://localhost:3001**.
---
## Step 3 — Queue Worker
Open a **second terminal** and start the BullMQ queue processor:
```bash
cd backend
npx ts-node src/worker.ts
```
The worker runs from the same codebase as the API but through a separate entry point (`src/worker.ts``WorkerModule`). It handles all background jobs: YouTube sync, description rendering, linting, bulk operations, and CSV imports.
---
## Step 4 — Frontend Setup
Open a **third terminal** and start the Next.js frontend:
```bash
cd frontend
npm install
# Create frontend/.env.local with the following content:
# NEXT_PUBLIC_API_URL=http://localhost:3001/api/v1
npm run dev
```
The app is now running on **http://localhost:3000**.
---
## Verify the Setup
1. Navigate to **http://localhost:3000**
2. Click **"Sign in with Google"**
3. Complete the Google OAuth flow
4. You should be redirected to the **Overview** page
If the redirect fails, check that `GOOGLE_CALLBACK_URL` and `FRONTEND_URL` are set correctly in `backend/.env`. See [[02 - Environment Variables]].
---
## Notes
- All three processes must run simultaneously for full functionality:
- `npm run start:dev` — HTTP API on :3001
- `npx ts-node src/worker.ts` — BullMQ job processor
- `npm run dev` — Next.js frontend on :3000
- Database migrations run automatically with `npx prisma migrate deploy`
- After any schema change: stop the backend → `npx prisma generate``npx prisma migrate deploy` → restart both the API and worker
- For non-obvious behaviors and known traps, see [[04 - Gotchas]]