Skip to content

NonymousMorlock/iTube-meta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

iTube Platform

iTube is a YouTube clone-ish platform built as a set of small services: a Flutter client app, a FastAPI backend, an SQS-to-ECS consumer, and a transcoder that turns uploaded videos into HLS/DASH outputs.

This repository is an umbrella/index repo. It does not contain source code. It documents how the system fits together and links to the component repositories.

demo-comp.mp4

Architecture at a glance

flowchart TB
  client["Client (Flutter/Web)"]
  api["iTube-api (FastAPI)"]
  s3raw["S3 (raw uploads)"]
  sqs["SQS queue"]
  consumer["iTube-consumer"]
  transcoder["iTube-transcoder"]
  s3processed["S3 (processed outputs)"]
  postgres["PostgreSQL"]
  redis["Redis"]

  client -->|"HTTP: auth/metadata/listing"| api
  api --> postgres
  api --> redis
  api -->|"Presigned S3 upload URLs"| client
  client -->|"Upload video/thumbnail"| s3raw
  s3raw -->|"S3 event"| sqs
  sqs --> consumer
  consumer -->|"ECS RunTask (Fargate)"| transcoder
  transcoder -->|"Upload HLS/DASH"| s3processed
  transcoder -->|"Status update (IAM)"| api
Loading

Components (repos)

Component Purpose Repo
iTube app Flutter client (iOS/Android/Web/Windows) https://github.com/NonymousMorlock/itube
iTube API FastAPI backend (auth, metadata, presigned URLs, internal APIs) https://github.com/NonymousMorlock/iTube-api
iTube consumer Polls SQS, launches ECS tasks for transcoding https://github.com/NonymousMorlock/iTube-consumer
iTube transcoder Downloads from S3, transcodes with FFmpeg, uploads outputs https://github.com/NonymousMorlock/iTube-transcoder

How the system works

  1. The client authenticates with the API (AWS Cognito) and requests presigned S3 upload URLs.
  2. The client uploads raw video and thumbnail to S3.
  3. S3 emits an object-created event to SQS.
  4. iTube-consumer polls the SQS queue and starts an ECS Fargate task for iTube-transcoder, injecting the S3 bucket/key.
  5. iTube-transcoder downloads the raw video, transcodes to HLS/DASH, and uploads processed outputs to the processed S3 bucket.
  6. The transcoder calls back into the API to update processing status and metadata.
  7. Clients query the API for video listings and playback metadata.

Key infrastructure

  • AWS Cognito for user authentication.
  • S3 buckets for raw uploads, processed outputs, and thumbnails.
  • SQS queue for upload event fanout.
  • ECS Fargate for running transcoder tasks.
  • PostgreSQL for persistent metadata.
  • Redis for caching.

Getting started

Each component repo has its own README with local development and deployment details. Start with the component you want to run and follow its setup instructions.

About

An umbrella/index repo for iTube

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published