https://github.com/jamalsoueidan/streamrecorder
Stream Recording for TikTok, Twitch, Kick, YouTube, AfreecaTV, and Pandalive. Just add your live streams, and they'll be automatically captured and saved for you to watch anytime.
https://github.com/jamalsoueidan/streamrecorder
anthropic casl coolify headless hetzner n8n nextjs openai pwa react-query s3 sentry strapi umami-analytics workers
Last synced: about 2 months ago
JSON representation
Stream Recording for TikTok, Twitch, Kick, YouTube, AfreecaTV, and Pandalive. Just add your live streams, and they'll be automatically captured and saved for you to watch anytime.
- Host: GitHub
- URL: https://github.com/jamalsoueidan/streamrecorder
- Owner: jamalsoueidan
- License: other
- Created: 2025-12-18T00:17:27.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-03-29T18:01:30.000Z (3 months ago)
- Last Synced: 2026-03-29T18:02:45.997Z (3 months ago)
- Topics: anthropic, casl, coolify, headless, hetzner, n8n, nextjs, openai, pwa, react-query, s3, sentry, strapi, umami-analytics, workers
- Language: TypeScript
- Homepage: https://www.livestreamrecorder.com
- Size: 4.35 MB
- Stars: 6
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# StreamRecorder
## Architecture
```bash
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────┘
```
## Deployment Environment (Coolify)
1. **PostgreSQL Database** - Data storage
2. **Strapi Backend** - API server
3. **Next.js Frontend** - Web server
## Strapi Backend - Setup & Deployment Guide
### 1. Database Setup (Local)
```bash
# Connect to PostgreSQL
psql -U postgres
# Create database
CREATE DATABASE strapi;
\q
```
### 2. Environment Variables (.env)
Create `.env` file in `/backend`:
```bash
# 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=
```
### 3. Start Strapi
Deploy
## Frontend (Next.js) - Setup & Deployment Guide
### 1. Environment Variables (.env.local)
Create `.env.local` file in `/frontend`:
```bash
NEXT_PUBLIC_STRAPI_URL=http://localhost:1337
NEXT_PUBLIC_S3_URL=https://domain.com/bucket
```
**Note:** `NEXT_PUBLIC_*` variables are exposed to browser (safe for public URLs).
## GitHub Changelog Setup
1. Generate a secret key and add it to your Strapi `.env` file:
```bash
GITHUB_WEBHOOK_SECRET=your-secret-here
```
2. Go to your GitHub repo → Settings → Webhooks → Add webhook
3. 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**
4. Click "Add webhook"
Now when you publish a release on GitHub, the version and changelog body will automatically be saved to Strapi.
Deploy