{"id":26507422,"url":"https://github.com/tsotnepharsenadze/discord-react-nextjs-typescript","last_synced_at":"2025-08-20T00:20:18.084Z","repository":{"id":264335990,"uuid":"865490697","full_name":"TsotnePharsenadze/Discord-react-nextjs-typescript","owner":"TsotnePharsenadze","description":"Discord clone built using: React, Next.js, TailwindCSS, Clerk, Zustand, LiveKit, WebSocket, UploadThing, Typescript and Prisma.","archived":false,"fork":false,"pushed_at":"2024-11-23T13:49:13.000Z","size":4308,"stargazers_count":13,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T15:47:06.032Z","etag":null,"topics":["clerk","livekit","nextjs15","prisma","react","tailwindcss","typescript","uploadthing","websocket","zustand"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TsotnePharsenadze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-30T16:05:32.000Z","updated_at":"2025-03-23T17:01:47.000Z","dependencies_parsed_at":"2024-11-23T14:42:28.195Z","dependency_job_id":null,"html_url":"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript","commit_stats":null,"previous_names":["tsotnepharsenadze/discord-react-nextjs-typescript"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TsotnePharsenadze/Discord-react-nextjs-typescript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TsotnePharsenadze%2FDiscord-react-nextjs-typescript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TsotnePharsenadze%2FDiscord-react-nextjs-typescript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TsotnePharsenadze%2FDiscord-react-nextjs-typescript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TsotnePharsenadze%2FDiscord-react-nextjs-typescript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TsotnePharsenadze","download_url":"https://codeload.github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TsotnePharsenadze%2FDiscord-react-nextjs-typescript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271242770,"owners_count":24725114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clerk","livekit","nextjs15","prisma","react","tailwindcss","typescript","uploadthing","websocket","zustand"],"created_at":"2025-03-20T23:19:27.075Z","updated_at":"2025-08-20T00:20:17.857Z","avatar_url":"https://github.com/TsotnePharsenadze.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr/\u003e\n\u003cdiv class=\"display: flex; align-items:center; justify-content:center;\"\u003e\n              \u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/discord-logo-discord-icon-transparent-free-png.webp\" style=\"height: 100px; width: 100px;\" /\u003e \u003ch1 style=\"font-size: 70px;\"\u003e Responsive Nextjs Discord clone with Livekit 🚀\u003c/h1\u003e\n\u003c/div\u003e\n  \u003cbr/\u003e\n  \u003cp\u003e\nCreate 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.\n  \u003c/p\u003e\n\u003ctable\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1pic-light.PNG\" alt=\"10pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1pic.PNG\" alt=\"10pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1mobile.PNG\" alt=\"13mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n\u003c/table\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/graphs/contributors\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/contributors/TsotnePharsenadze/Discord-react-nextjs-typescript\" alt=\"contributors\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/last-commit/TsotnePharsenadze/Discord-react-nextjs-typescript\" alt=\"last update\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/network/members\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/forks/TsotnePharsenadze/Discord-react-nextjs-typescript\" alt=\"forks\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/stargazers\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/stars/TsotnePharsenadze/Discord-react-nextjs-typescript\" alt=\"stars\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/issues/\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/issues/TsotnePharsenadze/Discord-react-nextjs-typescript\" alt=\"open issues\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n   \n  \u003ch4\u003e\n    \u003ca href=\"#\"\u003eDemo currently not avaliable because of the cost of third-party tools\u003c/a\u003e\n    \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/readme.md\"\u003eDocumentation\u003c/a\u003e\n    \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/issues/\"\u003eReport Bug\u003c/a\u003e\n    \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/issues/\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\n## Features\n\n1. **Server and Channel Creation:**\n\n   - Users can create and manage multiple servers and channels, providing a flexible structure for communication.\n\n2. **Member Management:**\n\n   - Server admins and moderators can manage members, including changing roles, kicking users, and inviting others to join the server.\n\n3. **Real-Time Text Chat:**\n\n   - Implemented a WebSocket-based real-time chat system with React-Query, allowing users to send, edit, and delete messages.\n\n4. **File and Image Uploads:**\n\n   - Users can upload and share pictures and files within channels and direct messages.\n\n5. **Audio and Video Chat:**\n\n   - Integrated audio and video communication within server channels and direct messages using LiveKit.\n\n6. **Clerk Authentication:**\n\n   - Secure authentication using Clerk, supporting multiple authentication methods for users.\n\n7. **File Management with UploadThing:**\n\n   - Efficient file management and storage using UploadThing, ensuring a seamless experience for handling user uploads.\n\n8. **Database Powered by Neon.tech:**\n   - Utilizes Neon.tech for a scalable and performant database, with Prisma as the ORM for efficient data management.\n\n\u003cbr/\u003e\n\n## Installation\n\n- Clone the repository:\n\n  ```bash\n  git clone https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript\n  ```\n\n- Navigate to the project directory:\n\n  ```bash\n  cd discord\n  ```\n\n- Install the dependencies:\n\n  ```bash\n  npm install\n  ```\n\n- Create .env file and setup all the neccessary env variables (Project uses NeonDb, UploadThing, ClerkJs and LiveKit as a third party db and SaaS)\n\n```\n\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\nCLERK_SECRET_KEY=\n\nNEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in\nNEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up\nNEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/\nNEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/\n\nDATABASE_URL=\n\nUPLOADTHING_SECRET=\nUPLOADTHING_APP_ID=\n\nLIVEKIT_API_KEY=\nLIVEKIT_API_SECRET=\nNEXT_PUBLIC_LIVEKIT_URL=\n```\n\n- Set up Neon.tech and generate/push Prisma models:\n\n  1. Open new terminal and exec `npx prisma generate`\n  2. then `npx prisma db push`\n\n\u003cbr/\u003e\n\n## Usage\n\n- Start the development server:\n\n  ```bash\n  npm run dev\n  ```\n\n- Open your browser and visit `http://localhost:3000` to access the application.\n\n\u003cbr/\u003e\n\n## :camera: Screenshots\n\u003ctable\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1pic-light.PNG\" alt=\"10pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1pic.PNG\" alt=\"10pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/1mobile.PNG\" alt=\"13mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/2pic-light.PNG\" alt=\"11pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/2pic.PNG\" alt=\"11pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/2mobile.PNG\" alt=\"1mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/3pic-light.PNG\" alt=\"12pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/3pic.PNG\" alt=\"12pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/3mobile.PNG\" alt=\"2mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/4pic-light.PNG\" alt=\"13pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/4pic.PNG\" alt=\"13pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/4mobile.PNG\" alt=\"3mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/13pic-light.PNG\" alt=\"1pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/13pic.PNG\" alt=\"1pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/13mobile.PNG\" alt=\"4mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/5pic-light.PNG\" alt=\"2pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/5pic.PNG\" alt=\"2pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/5mobile.PNG\" alt=\"5mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/6pic-light.PNG\" alt=\"3pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/6pic.PNG\" alt=\"3pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/6mobile.PNG\" alt=\"6mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/7pic-light.PNG\" alt=\"4pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/7pic.PNG\" alt=\"4pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/7mobile.PNG\" alt=\"7mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/8pic-light.PNG\" alt=\"5pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/8pic.PNG\" alt=\"5pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/8mobile.PNG\" alt=\"8mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/9pic-light.PNG\" alt=\"6pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/9pic.PNG\" alt=\"6pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/9mobile.PNG\" alt=\"9mobile\" width=\"100\"\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/10pic-light.PNG\" alt=\"7pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/10pic.PNG\" alt=\"7pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/11pic-light.PNG\" alt=\"8pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/11oic.PNG\" alt=\"8pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/12pic-light.PNG\" alt=\"8pic-light\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003cimg src=\"https://github.com/TsotnePharsenadze/Discord-react-nextjs-typescript/blob/main/github_assets/12pic.PNG\" alt=\"8pic\" width=\"300\"\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr/\u003e\n\n## Contributing\n\nContributions are welcome! If you want to contribute to this project, please follow these steps:\n\n- Fork the repository.\n- Create a new branch for your feature or bug fix.\n- Commit your changes to the new branch.\n- Open a pull request back to the main repository, including a description of your changes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsotnepharsenadze%2Fdiscord-react-nextjs-typescript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsotnepharsenadze%2Fdiscord-react-nextjs-typescript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsotnepharsenadze%2Fdiscord-react-nextjs-typescript/lists"}