Skip to content

Stream Tide is a distributed video streaming API for seamless video upload, management, and sharing, built with Node.js, TypeScript, PostgreSQL, Redis and FFmpeg for scalable and efficient content delivery.

Notifications You must be signed in to change notification settings

shohann/stream-tide

Repository files navigation

Stream Tide

A robust video streaming API that empowers users to upload, manage, and share videos.

Key Features

  • 🎥 Video Uploading: Easily upload videos to the platform
  • 🗑️ Video Management: Authenticated users can delete and update their uploaded videos
  • 📂 Playlist Creation: Organize videos into custom playlists for easy access
  • 💬 Social Interaction: Like, comment, and engage with other users' content

Technical Highlights

  • 🔄 Video Transcoding: Utilizes FFmpeg for efficient video transcoding, ensuring compatibility across devices
  • 📡 Video Streaming: Employs HLS (HTTP Live Streaming) for smooth and reliable video delivery

Architecture Diagram

API Documentation

Explore the Stream Tide API using Swagger UI.

Installation and Setup

Prerequisites

Ensure you have the following installed:

Installation Steps

  1. Clone the Repository

    git clone https://github.com/your-username/stream-tide.git
    cd stream-tide
  2. Install Dependencies

    npm install
  3. Configuration Create a .env file in the project root with the following content:

    DB_URL=your_database_url
    REDIS_URL=your_redis_url
    JWT_SECRET=your_jwt_secret
    ACCESS_TOKEN_SECRET=your_access_token_secret
    REFRESH_TOKEN_SECRET=your_refresh_token_secret
    CLOUDINARY_NAME=your_cloudinary_name
    API_KEY=your_api_key
    API_SECRET=your_api_secret
    ENCRYPTION_KEY=your_encryption_key
    EMAIL_API_KEY=your_email_api_key
    PORT=4000
  4. Running the Server

    npm start

Technologies and Tools

  • 🖥️ Backend: Node.js, Express.js
  • 📘 Language: TypeScript
  • 🗄️ Database: PostgreSQL
  • 🚀 Caching: Redis
  • 🔐 Authentication: JSON Web Tokens (JWT)
  • 🎬 Video Processing: FFmpeg
  • ☁️ Cloud Storage: Cloudinary
  • 📚 API Documentation: Swagger
  • 🧪 Testing: Vitest
  • 🐳 Containerization: Docker
  • 📊 Job Queue: BullMQ
  • 🔗 ORM: Drizzle ORM
  • 🔔 Real-time Notifications: Socket.io

About

Stream Tide is a distributed video streaming API for seamless video upload, management, and sharing, built with Node.js, TypeScript, PostgreSQL, Redis and FFmpeg for scalable and efficient content delivery.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published