An open-source, self-hostable video processing system built with Node.js, Hono, Zod, and BullMQ. Upload a video, get transcription, subtitles, AI, chapter markers, and thumbnails.
- Video transcription (OpenAI Whisper, Deepgram)
- AI-powered video analysis and summarization (OpenAI, Claude)
- Automatic chapter generation
- Background job processing with BullMQ
- REST API + Nuxt 3 web interface
- Docker-based deployment with automatic HTTPS
cp .env.example .env
# Add your OPENAI_API_KEY to .env
docker compose up- API:
http://localhost:3000 - Web:
http://localhost:3001
npm install
npx turbo dev.
βββ apps/
β βββ api/ # Hono REST API (port 3000)
β βββ worker/ # BullMQ video processor
β βββ web/ # Nuxt 3 frontend (port 3000)
βββ packages/
β βββ shared/ # Types, schemas, constants
β βββ providers/ # AI provider implementations
βββ deploy/ # Deployment scripts
| Service | Port | Description |
|---|---|---|
apps/api |
3000 | Hono REST API |
apps/worker |
β | BullMQ video processor |
apps/web |
3000 | Nuxt 3 frontend |
| PostgreSQL | 5432 | Primary database |
| Redis | 6379 | Job queue + caching |
- API: Hono, Drizzle ORM, BullMQ
- Web: Nuxt 3, Tailwind CSS
- AI: OpenAI (Whisper + GPT), Anthropic Claude, Deepgram
- Infra: Docker, Caddy, PostgreSQL, Redis
Any Ubuntu/Debian VPS with 2 vCPU and 4 GB RAM or larger.
ssh root@your-server-ip
curl -fsSL <raw-setup-url> | bash
# Or clone the repo first, then:
bash deploy/setup.shThis installs Docker, creates the vpt user, sets up data directories, and configures the firewall.
su - vpt
git clone <repo-url> ~/app && cd ~/app
cp .env.example .env
nano .env # Set DOMAIN, POSTGRES_PASSWORD, REDIS_PASSWORD, OPENAI_API_KEY, SESSION_SECRET
bash deploy/update.shCaddy automatically provisions TLS certificates for your domain.
cd ~/app
bash deploy/update.shbash deploy/backup.sh
# Automate with cron (daily at 3 AM):
# 0 3 * * * /home/vpt/app/deploy/backup.sh >> /var/log/vpt-backup.log 2>&1See .env.example for all available configuration options.
MIT