Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/nayak-nirmalya/twitch-clone
- Owner: nayak-nirmalya
- Created: 2023-12-13T14:16:32.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-15T14:08:59.000Z (12 months ago)
- Last Synced: 2024-01-15T18:28:24.103Z (12 months ago)
- Topics: mysql, nextjs14, planetscale, prisma-orm, reactjs, server-action, ssr, tailwindcss, typescript, uploadthing
- Language: TypeScript
- Homepage: https://twitch-clone-orcin.vercel.app
- Size: 313 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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 |