This project is a Discord clone website created using Next.js 13 with a wide range of features and technologies to provide users with a robust chat and communication platform. It offers real-time messaging, multimedia support, voice and video calls, member management, server customization, and more.
- Utilizes Socket.io for real-time messaging, ensuring instant communication between users.
- Users can send attachments as messages, enhancing the user experience.
- Allows users to delete and edit messages in real time, ensuring a smooth and interactive chat experience.
- Supports text, audio, and video call channels, offering various communication options to users.
- Enables one-on-one conversations between members for private interactions.
- Supports one-on-one video calls between members for face-to-face communication.
- Admins can kick users and change their roles between guest and moderator for effective member management.
- Implements a unique invite link generation system for inviting new members to the platform.
- Uses tanstack/query to load messages in batches of 10, providing an efficient and seamless chat experience.
- Allows users to create and customize servers to tailor their experience to their preferences.
- Features a beautiful and responsive UI design using TailwindCSS and ShadcnUI, ensuring an aesthetically pleasing user experience.
- Offers both light and dark mode options to accommodate user preferences and reduce eye strain.
- Implements a fallback mechanism using polling with alerts in case WebSocket connectivity is unavailable.
- Utilizes Prisma as an Object-Relational Mapping (ORM) tool and a MySQL database hosted on Planetscale for efficient data management.
- Implements user authentication using Clerk for secure and personalized user experiences.
-
Clone this repository to your local machine.
git clone https://github.com/impruthvi/discord-clone-nextjs.git
-
Install the necessary dependencies.
cd discord-clone-nextjs npm install
-
Configure environment variables for database, authentication, and other settings.
cp .env.example .env
-
Start the development server.
npm run dev
-
Access the application in your web browser at http://localhost:3000.
The Discord clone website is built using the following technologies and tools:
-
Next.js 13: A popular JavaScript framework for building modern web applications, offering server-side rendering and a great developer experience.
-
Socket.io: A library for real-time, bidirectional communication between clients and the server, enabling instant messaging.
-
UploadThing: Used for sending attachments as messages within the chat application.
-
Prisma: An Object-Relational Mapping (ORM) tool for working with databases, simplifying database interactions.
-
MySQL (Planetscale): A relational database used for storing and managing data, hosted on Planetscale for scalability and reliability.
-
Clerk: Provides user authentication and user management features to enhance security and user experiences.
-
Tanstack/Query: Used for efficient message pagination, fetching data in batches for a smooth chat experience.
-
TailwindCSS: A utility-first CSS framework for creating beautiful and responsive user interfaces.
-
ShadcnUI: A UI component library or framework used to enhance the aesthetics and user experience of the website.
We welcome and appreciate contributions from the open-source community. If you'd like to contribute to this project, please follow these guidelines:
-
Fork the repository to your GitHub account.
-
Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature
-
Commit your changes with a descriptive commit message:
git commit -m "Add feature: your feature description"
-
Push your changes to your fork:
git push origin feature/your-feature
-
Create a pull request (PR) to the main repository, describing your changes and improvements.
-
Your PR will be reviewed, and once approved, your changes will be merged into the project.
- Thank you for contributing to our project!
Check out the live demo of Discord Clone here.
Created by @impruthvi if you have any questions or suggestions.
If you find this project helpful or interesting, please consider giving it a ⭐️ on GitHub!