A high-performance video streaming platform built for the modern web
bideo.tech is a YouTube-like video streaming platform that combines Spring Boot, AWS S3, RabbitMQ, Redis, PostgreSQL, and Firebase to deliver a seamless streaming experience.
It supports:
- Video upload and processing (HLS format)
- Secure user authentication with Firebase
- Metadata caching for lightning-fast loading
- Scalable architecture with async processing
- 🔐 Firebase Authentication — Secure login and user management
- 📦 Chunked Video Streaming — HLS format stored on AWS S3
- 📬 Asynchronous Processing — RabbitMQ job queue for uploads
- ⚡ Metadata Caching — Redis for reduced database hits
- 🗄 Reliable Database — PostgreSQL for user & video records
- 📱 Responsive Playback — Adaptive streaming for any device
User
│
▼
[Frontend] ──▶ [Spring Boot Backend] ──▶ [PostgreSQL]
│ │
│ ├──▶ [AWS S3: Stores .m3u8 + TS chunks]
│ ├──▶ [Redis: Cache metadata]
│ └──▶ [RabbitMQ: Video processing jobs]
- User uploads video from the frontend.
- Backend stores metadata in PostgreSQL and pushes a job to RabbitMQ.
- A background worker processes the video into HLS format (
.m3u8+.tschunks). - Processed files are uploaded to AWS S3.
- Video record is updated with the S3 URL.
- User requests video → Metadata is fetched from Redis (or PostgreSQL if not cached).
- Video is streamed directly from AWS S3 using HLS adaptive streaming.
- Redis caches the metadata for future requests.
Make sure you have the following installed:
- Java 17+
- PostgreSQL (for user & video metadata)
- Redis (for caching)
- RabbitMQ (for job queues)
- AWS S3 bucket (or MinIO for local testing)
# Clone Backend repository
git clone https://github.com/Mist-AA/bideo_api
1. Uncomment line 16 in SupportVariables
2. Uncomment line 30 in logback-spring.xml
3 In edit configurations, Modify Options > Add vm options. Then within VM options field, add this -Dspring.profiles.active=dev
4. Use application-dev.properties with secret keys/values
5. Use service-account.json in resource folder
# Clone Frontend Rerpository
https://github.com/rajitk13/bideo_ui
In global.ts change https://bideo.tech path to http://localhost:8080Redis
docker run -d --name my-redis -p 6379:6379 redis
Rabbitmq
docker run -d -p 5672:5672 -p 15672:15672 --name my-rabbit rabbitmq:3-management
Create a .env file in the root directory:
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_CLIENT_EMAIL=your_client_email
FIREBASE_PRIVATE_KEY=your_private_key
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret
AWS_S3_BUCKET_NAME=your_bucket_name
POSTGRES_URL=jdbc:postgresql://localhost:5432/
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password
RABBITMQ_HOST=localhost
REDIS_HOST=localhost| Home Page | Video Player |
|---|---|
![]() |
![]() |
- Add recommendation engine based on viewing history
- Enable real-time comments & chat
- Build a creator analytics dashboard
- Launch mobile app support
Distributed under the MIT License. See LICENSE for details.


