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

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: about 2 months ago
JSON representation

Discord clone built using: React, Next.js, TailwindCSS, Clerk, Zustand, LiveKit, WebSocket, UploadThing, Typescript and Prisma.

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.


10pic-light
10pic
13mobile



contributors


last update


forks


stars


open issues




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


10pic-light
10pic
13mobile


11pic-light
11pic
1mobile


12pic-light
12pic
2mobile


13pic-light
13pic
3mobile


1pic-light
1pic
4mobile


2pic-light
2pic
5mobile


3pic-light
3pic
6mobile


4pic-light
4pic
7mobile


5pic-light
5pic
8mobile


6pic-light
6pic
9mobile


7pic-light
7pic



8pic-light
8pic



8pic-light
8pic


## 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.