Skip to content

gaurav-singh7092/Exodus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exodus - Video Streaming Platform

Exodus is a modern video streaming platform built with a microservices architecture leveraging AWS, FastAPI, Flutter, and more. This application allows users to upload, store, and stream videos across various devices.

Project Structure

exodus/
├── backend/           # FastAPI-based backend service
├── consumer/          # Background processing service
├── exodus/            # Flutter-based mobile/web client
└── transcoder_segmentation/ # Video transcoding service

Technology Stack

Backend

  • FastAPI: High-performance web framework for building APIs
  • PostgreSQL: Primary database for storing user and video metadata
  • Redis: In-memory data store for caching and real-time features
  • Docker: Containerization for consistent development and deployment
  • AWS S3: Storage for video and thumbnail files

Frontend

  • Flutter: Cross-platform UI toolkit for mobile, web, and desktop
  • Bloc Pattern: State management solution
  • Dart: Programming language for Flutter applications

Features

  • User authentication and authorization
  • Video uploading with thumbnail generation
  • S3 storage integration for scalable content delivery
  • Video metadata management
  • Cross-platform client applications
  • Pre-processing of uploaded videos: All uploaded videos are pre-processed using the MPEG-DASH standard and FFmpeg. Videos are transcoded into multiple resolutions (360p, 720p, 1080p) and segmented into smaller chunks for adaptive streaming and faster loading. This enables smooth playback across different network conditions and devices.

Getting Started

Prerequisites

  • Docker and Docker Compose
  • Flutter SDK
  • AWS account with proper credentials
  • Python 3.8+
  • ngrok (for exposing local HTTP endpoints)

Setting up the Backend

  1. Navigate to the backend directory:

    cd backend
    
  2. Create a .env file with necessary environment variables:

    AWS_ACCESS_KEY_ID=your_access_key
    AWS_SECRET_ACCESS_KEY=your_secret_key
    AWS_REGION=your_region
    DATABASE_URL=postgresql://user:password@localhost:5432/exodus_db
    
  3. Start the backend services using Docker Compose:

    docker-compose up --build
    
  4. The API will be available at http://localhost:8000

  5. Expose your local backend to the internet using ngrok (for HTTP features, webhooks, or mobile testing):

    ngrok http 8000
    

    This will provide a public URL forwarding to your local FastAPI server.

Setting up the Flutter App

  1. Navigate to the Flutter app directory:

    cd exodus
    
  2. Install dependencies:

    flutter pub get
    
  3. Run the app in development mode:

    flutter run
    

API Endpoints

The backend provides the following API endpoints:

  • Auth: /auth/* - User registration, login, and authentication
  • Upload: /upload/video/* - Video upload functionality and presigned URLs
  • Video: /video/* - Video metadata and streaming endpoints

Development

Backend Development

The FastAPI application structure follows a modular approach with routes, database models, and services organized in separate directories.

Frontend Development

The Flutter application uses the BLoC pattern for state management, with a clear separation between UI components and business logic.

Deployment

The application is designed to be deployed on cloud infrastructure:

  • Backend services can be deployed using Docker containers on AWS ECS or similar services
  • The Flutter web app can be deployed to any static web hosting service
  • Mobile apps can be distributed through app stores after building release versions

License


Note: This project is a demonstration of modern application architecture and is not intended for production use without further security and performance considerations.

About

Exodus is a modern video streaming platform built with a microservices architecture leveraging AWS, FastAPI, Flutter, and more. This application allows users to upload, store, and stream videos across various devices

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors