Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nayak-nirmalya/twitch-clone

FullStack Twitch Clone: Next.js 14, Livestreaming, React, Prisma, Stripe, Tailwind, MySQL & TypeScript.
https://github.com/nayak-nirmalya/twitch-clone

mysql nextjs14 planetscale prisma-orm reactjs server-action ssr tailwindcss typescript uploadthing

Last synced: about 1 month ago
JSON representation

FullStack Twitch Clone: Next.js 14, Livestreaming, React, Prisma, Stripe, Tailwind, MySQL & TypeScript.

Awesome Lists containing this project

README

        

# FullStack Twitch Clone: Next.js 14, Livestreaming, React, Prisma, Stripe, Tailwind, MySQL & TypeScript

Credits: [Antonio Erdeljac](https://github.com/AntonioErdeljac)

Key Features:

- πŸ“‘ Streaming using RTMP / WHIP protocols
- 🌐 Generating ingress
- πŸ”— Connecting Next.js app to OBS
- πŸ” Authentication
- πŸ“Έ Thumbnail upload with Uploadthing
- πŸ‘€ 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
- πŸ—ƒοΈ MySQL DB with PlanetScale

### Prerequisites

**Node version 18.17 or later**

### Cloning the Repository

```shell
git clone https://github.com/nayak-nirmalya/twitch-clone.git
```

### Install Packages

```shell
npm i
```

### Setup .env File

```js
NEXT_PUBLIC_CLERK_PUBLISHABLE_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=

DATABASE_URL=

LIVEKIT_API_URL=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
NEXT_PUBLIC_LIVEKIT_WS_URL=

UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
```

### Setup Prisma

Add Database URL (PlanetScale/MySQL)

```shell
npx prisma generate
npx prisma db push
```

### Start the App

```shell
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 |