Open-source video transcoding platform powered by FFmpeg.
Upload, transcode, and deliver media at scale.
License · Documentation · Issues · Contributing
This project was inspired by something like Cloudflare Stream, Bunny Stream, Mux, and AWS MediaConvert. The goal is to create a self-hosted alternative that gives users full control over their media processing and delivery without relying on third-party services.
GoMPP is a self-hosted video transcoding and media management platform. It provides a modern web interface for uploading, transcoding, and organizing video content with support for multiple output formats and adaptive streaming.
- Video Transcoding — FFmpeg-based worker pool with configurable presets (H.264, H.265, VP9, AV1)
- Adaptive Streaming — HLS and DASH output with multi-bitrate ladder support
- Media Library — Upload, organize, search, and manage video assets
- Subtitle Management — Upload and attach subtitle tracks to videos
- Storage Backends — Local filesystem or S3-compatible object storage
- Authentication — Email/password, Google OAuth, and WebAuthn passkey support
- Role-Based Access — Admin and user roles with RBAC middleware
- System Settings — Configurable branding (logo, favicon, theme color) from the admin panel
- Analytics Dashboard — Video, storage, and job statistics at a glance
- Observability — Prometheus metrics and Grafana dashboards included
- Docker Ready — Full Docker Compose stack with Nginx, PostgreSQL, Prometheus, and Grafana
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Browser │◄─────►│ Nginx │◄─────►│ Next.js │
│ (Client) │ │ (Proxy) │ │ (Frontend) │
└─────────────┘ └──────┬──────┘ └──────────────┘
│
┌──────▼──────┐ ┌──────────────┐
│ Go API │◄─────►│ PostgreSQL │
│ (Chi v5) │ │ (Database) │
└──────┬──────┘ └──────────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ FFmpeg │ │ FFmpeg │ │ FFmpeg │
│ Worker 1 │ │ Worker 2 │ │ Worker N │
└──────────┘ └──────────┘ └──────────┘
│
┌──────▼──────┐
│ Storage │
│ (Local / S3)│
└─────────────┘
- Frontend — Next.js with React, Tailwind CSS, and shadcn/ui components
- Backend — Go with Chi router, structured as handler → service → repository layers
- Transcoding — Concurrent FFmpeg worker pool with real-time progress tracking
- Storage — Pluggable backends: local filesystem or any S3-compatible service
| Layer | Technology |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind |
| Backend | Go 1.25, Chi v5, pgx |
| Database | PostgreSQL 16 |
| Transcoding | FFmpeg |
| Auth | JWT, Google OAuth2, WebAuthn |
| Storage | Local filesystem, S3 |
| Observability | Prometheus, Grafana |
| Deployment | Docker, Nginx |
| Package Mgr | Bun (frontend) |
Go 1.25+, Node.js 22+, Bun, PostgreSQL 16+, FFmpeg
git clone https://github.com/ardeanx/gompp.git
cd gompp
cp .env.example .env
# Edit .env — set GOMPP_JWT_SECRET at minimum
# API
go run ./server
# Frontend (separate terminal)
cd web
bun install
bun run devcd deployments
cp ../.env.example ../.env
# Edit ../.env with your configuration
docker compose up --buildServices will be available at:
| Service | URL |
|---|---|
| App | http://localhost |
| API | http://localhost:8080 |
| Frontend | http://localhost:3000 |
| Grafana | http://localhost:3001 |
| Prometheus | http://localhost:9090 |
GoMPP is under active development. APIs and database schemas may change between versions. Back up your data before upgrading.
For full documentation, visit docs.gompp.net.
- Email: ardeanbimasaputra@gmail.com
- Telegram: @ardeanbimasaputra
- GitHub Issues: gompp/gompp/issues
GoMPP is licensed under the MIT License. See LICENSE for details. Copyright (c) 2026 Ardean Bima Saputra. All rights reserved.
2026 From Ardeanx Made with ❤️

