This project is a developer-friendly real-time messaging application that emulates the functionality of Discord. It is built using modern web technologies and offers various features for seamless communication and collaboration.
- Real-time Messaging: Instantly chat with other users using Socket.io.
- File Attachments: Send files and images as messages using UploadThing.
- Message Editing & Deletion: Edit and delete messages in real-time.
- Voice & Video Calls: Create text, audio, and video call channels.
- One-on-One Conversations: Private one-on-one conversations between members.
- Member Management: Kick members and change their roles.
- Invite System: Generate unique invite links and set up an invite system.
- Message Batching: Load messages in batches of 10 for seamless conversation.
- Server Customization: Create and customize your server.
- Stunning UI: Beautifully designed using TailwindCSS and ShadcnUI.
- Responsiveness: Works flawlessly on both desktop and mobile devices.
- Light & Dark Mode: Choose your preferred viewing mode.
- Websocket Fallback: Ensures uninterrupted communication.
- Database & ORM: Prisma for database operations.
- MySQL Database: Utilize Planetscale for your MySQL database.
- Authentication: Secure the app with Clerk.
To get started with this Discord Clone, follow these steps:
- Clone the repository to your local machine.
- Install the necessary dependencies using Bun, our lightweight and energetic package manager. Just run
bun install
and let the magic happen! - Configure your environment variables by creating a
.env
file based on the provided.env.example
. - Set up your database and authentication configurations.
- Run the application using
npm start
. - Explore the features and start developing or testing your own Discord-like application.
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=nclerk_publishable_key
CLERK_SECRET_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=/
# Database Configuration
DATABASE_URL=postgres://your_db_username:your_db_password@your_db_host/your_db_name?pgbouncer=true&connect_timeout=10
DIRECT_URL=postgres://your_db_username:your_db_password@your_db_host/your_db_name?connect_timeout=10
# UploadThing Configuration
UPLOADTHING_SECRET=uploadthing_secret
UPLOADTHING_APP_ID=uploadthing_app_id
# LiveKit Configuration
LIVEKIT_API_SECRET=livekit_api_secret
LIVEKIT_API_KEY=livekit_api_key
NEXT_PUBLIC_LIVEKIT_URL=wss://discord-clone.livekit.cloud
This Discord Clone repository is licensed under the MIT license. Please see the LICENSE file for more details.