┌─────────────────────────────────────────────────────────────────────────────────────┐
│ Internet / Users │
│ (Browser accessing app) │
└────────────────────────────────────┬────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
┌───────▼───────────┐ ┌───────▼───────────┐ ┌────────▼────────┐
│ Frontend │ │ Backend │ │ S3 Storage │
│ xxxx.com │ │ strapi.xxx.com │ │ cdn.xxx.com │
│ │ │ │ │ │
│ ┌───────────────┐ │ │ ┌───────────────┐ │ │ ┌─────────────┐ │
│ │ Next.js │◄├────┼─┤ Strapi │ │ │ │ Recordings │ │
│ └───────┬───────┘ │ │ └───────┬───────┘ │ │ │ Thumbnails │ │
└─────────┼─────────┘ └─────────┼─────────┘ │ └─────────────┘ │
│ │ └────────▲────────┘
│ │ │
└────────────┬───────────┘ │
│ │
┌────────▼────────┐ │
│ PostgreSQL │ │
│ Database │ │
└─────────────────┘ │
│
│ Upload recordings
┌────────────────┐ │
│ Workflow Queue │ │
│ (Automation) │ │
└───────┬────────┘ │
│ │
│ Dispatches │
┌─────────────────┼─────────────────┐ │
│ │ │ │
┌────────▼───────┐ ┌───────▼───────┐ ┌──────▼──────┴┐
│ Worker 1 │ │ Worker 2 │ │ Worker N │
│ ┌────────────┐ │ │ ┌───────────┐ │ │ ┌──────────┐ │
│ │ TikTok │ │ │ │ TikTok │ │ │ │ Twitch │ │
│ │ Recorder │ │ │ │ Recorder │ │ │ │ Recorder│ │
│ └─────┬──────┘ │ │ └─────┬─────┘ │ │ └────┬─────┘ │
└───────┼────────┘ └───────┼───────┘ └──────┼───────┘
│ │ │
└──────────────────┼────────────────┘
│
┌────────▼────────┐
│ Redis │
│ Job Queue │
└─────────────────┘- PostgreSQL Database - Data storage
- Strapi Backend - API server
- Next.js Frontend - Web server
# Connect to PostgreSQL
psql -U postgres
# Create database
CREATE DATABASE strapi;
\qCreate .env file in /backend:
# Database
# Server
HOST=0.0.0.0
PORT=1337
# Secrets
APP_KEYS=
API_TOKEN_SALT=
ADMIN_JWT_SECRET=
TRANSFER_TOKEN_SALT=
ENCRYPTION_KEY=
# Database
DATABASE_CLIENT=postgres
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_NAME=strapi
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=
DATABASE_SSL=false
DATABASE_FILENAME=
JWT_SECRET=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_BUCKET=
AWS_BUCKET_URL=
AWS_ENDPOINT=
GITHUB_WEBHOOK_SECRET=Deploy
Create .env.local file in /frontend:
NEXT_PUBLIC_STRAPI_URL=http://localhost:1337
NEXT_PUBLIC_S3_URL=https://domain.com/bucketNote: NEXT_PUBLIC_* variables are exposed to browser (safe for public URLs).
-
Generate a secret key and add it to your Strapi
.envfile:GITHUB_WEBHOOK_SECRET=your-secret-here
-
Go to your GitHub repo → Settings → Webhooks → Add webhook
-
Configure the webhook:
- Payload URL:
https://your-domain.com/api/change-log/github-webhook - Content type:
application/json - Secret: Same value as
GITHUB_WEBHOOK_SECRET - Events: Select "Let me select individual events" → check only Releases
- Payload URL:
-
Click "Add webhook"
Now when you publish a release on GitHub, the version and changelog body will automatically be saved to Strapi.
Deploy