/livestreaming

Expand livestreaming with AR/AI, voice and video filter

Primary LanguageTypeScript

NextJS Template BoilerPlate: Antonio Erdeljac

Key Features:

  • πŸ“‘ Streaming using RTMP / WHIP protocols
  • 🌐 Generating ingress
  • πŸ”— Connecting Next.js app to OBS
  • πŸ” Authentication
  • πŸ“Έ Thumbnail upload with Uploadthing
  • πŸ“‘ Face detection and filter with Banuba
  • 🎀 Voice control
  • πŸ‘€ Live viewer count
  • 🚦 Live statuses
  • πŸ’¬ Real-time chat using sockets
  • 🎨 Unique color for each viewer in chat
  • πŸ‘₯ Following system
  • 🚫 Blocking system
  • πŸ‘’ Kicking participants from a stream in real-time
  • πŸŽ›οΈ Streamer / Creator Dashboard
  • 🐒 Slow chat mode
  • πŸ”’ Followers only chat mode
  • πŸ“΄ Enable / Disable chat
  • πŸ”½ Collapsible layout (hide sidebars, chat etc, theatre mode etc.)
  • πŸ“š Sidebar following & recommendations tab
  • 🏠 Home page recommending streams, sorted by live first
  • πŸ” Search results page with a different layout
  • πŸ”„ Syncing user information to our DB using Webhooks
  • πŸ“‘ Syncing live status information to our DB using Webhooks
  • 🀝 Community tab
  • 🎨 Beautiful design
  • ⚑ Blazing fast application
  • πŸ“„ SSR (Server-Side Rendering)
  • πŸ—ΊοΈ Grouped routes & layouts

Prerequisites

Node version 18.17 or later

Cloning the Repository

git clone https://github.com/nhavanntd31/livestreaming

Install Packages

npm i

Setup .env File

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY={clerk-api-key}
CLERK_SECRET_KEY={clerk-secret-key}
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/
CLERK_WEBHOOK_SECRET={clerk-webhook-secret}

DATABASE_URL={database-url}

LIVEKIT_API_URL={livekit-api-url}
LIVEKIT_API_KEY={livekit-api-key}
LIVEKIT_API_SECRET={livekit-api-secret}
NEXT_PUBLIC_LIVEKIT_WS_URL={livekit-ws-url}
NEXT_PUBLIC_BANUBA_CLIENT_TOKEN={banuba-client-token}

Setup Prisma

Add Database URL (PlanetScale/MySQL)

npx prisma generate
npx prisma db push

Start the App

npm run dev

Available Commands

Running commands with npm npm run [command]

command description
dev Starts a development instance of the app
lint Run typescript lint check with eslint
build Start building app for deployment
start Run build version of app