https://github.com/tsotnepharsenadze/discord-react-nextjs-typescript
Discord clone built using: React, Next.js, TailwindCSS, Clerk, Zustand, LiveKit, WebSocket, UploadThing, Typescript and Prisma.
https://github.com/tsotnepharsenadze/discord-react-nextjs-typescript
clerk livekit nextjs15 prisma react tailwindcss typescript uploadthing websocket zustand
Last synced: 10 months ago
JSON representation
Discord clone built using: React, Next.js, TailwindCSS, Clerk, Zustand, LiveKit, WebSocket, UploadThing, Typescript and Prisma.
- Host: GitHub
- URL: https://github.com/tsotnepharsenadze/discord-react-nextjs-typescript
- Owner: TsotnePharsenadze
- Created: 2024-09-30T16:05:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-23T13:49:13.000Z (over 1 year ago)
- Last Synced: 2025-04-06T15:47:06.032Z (about 1 year ago)
- Topics: clerk, livekit, nextjs15, prisma, react, tailwindcss, typescript, uploadthing, websocket, zustand
- Language: TypeScript
- Homepage:
- Size: 4.11 MB
- Stars: 13
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Responsive Nextjs Discord clone with Livekit 🚀
Create servers, manage roles, and chat in real-time with WebSocket and React-Query. Enjoy audio/video calls with LiveKit, and handle files with UploadThing. Powered by Clerk for auth, Neon.tech for the database, and Prisma ORM.
Demo currently not avaliable because of the cost of third-party tools
·
Documentation
·
Report Bug
·
Request Feature
## Features
1. **Server and Channel Creation:**
- Users can create and manage multiple servers and channels, providing a flexible structure for communication.
2. **Member Management:**
- Server admins and moderators can manage members, including changing roles, kicking users, and inviting others to join the server.
3. **Real-Time Text Chat:**
- Implemented a WebSocket-based real-time chat system with React-Query, allowing users to send, edit, and delete messages.
4. **File and Image Uploads:**
- Users can upload and share pictures and files within channels and direct messages.
5. **Audio and Video Chat:**
- Integrated audio and video communication within server channels and direct messages using LiveKit.
6. **Clerk Authentication:**
- Secure authentication using Clerk, supporting multiple authentication methods for users.
7. **File Management with UploadThing:**
- Efficient file management and storage using UploadThing, ensuring a seamless experience for handling user uploads.
8. **Database Powered by Neon.tech:**
- Utilizes Neon.tech for a scalable and performant database, with Prisma as the ORM for efficient data management.
## Installation
- Clone the repository:
```bash
git clone https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript
```
- Navigate to the project directory:
```bash
cd discord
```
- Install the dependencies:
```bash
npm install
```
- Create .env file and setup all the neccessary env variables (Project uses NeonDb, UploadThing, ClerkJs and LiveKit as a third party db and SaaS)
```
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_UP_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
DATABASE_URL=
UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
NEXT_PUBLIC_LIVEKIT_URL=
```
- Set up Neon.tech and generate/push Prisma models:
1. Open new terminal and exec `npx prisma generate`
2. then `npx prisma db push`
## Usage
- Start the development server:
```bash
npm run dev
```
- Open your browser and visit `http://localhost:3000` to access the application.
## :camera: Screenshots
## Contributing
Contributions are welcome! If you want to contribute to this project, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Commit your changes to the new branch.
- Open a pull request back to the main repository, including a description of your changes.