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

https://github.com/khairul-islam98/discord-clone


https://github.com/khairul-islam98/discord-clone

axios clark discord emoji-picker-react livekit neondb nextjs prisma-orm query-string reacthookform shadcn-ui socket-io tailwindcss tenstack typescript uploadthing zustand

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Discord Clone

Live Link: discord-clone-giqf.onrender.com

This is a Discord clone built using Next.js.

## Table of Contents

- [Installation](#installation)
- [Environment Variables](#environment-variables)
- [Usage](#usage)
- [Features](#features)
- [Contributing](#contributing)
- [License](#license)
- [Technologies Used](#technologies-used)
- [Screenshots](#screenshots)
- [Contact](#contact)

## Technologies Used

- Nextjs
- Axios
- TanStack Query
- Clark
- Typescript
- Tailwind css
- Shadcn
- uploadthing
- socket-io
- query-string
- prisma
- livekit

## Installation

To install the project, follow these steps:

1. Clone the repository:
```bash
git clone https://github.com/Khairul-islam98/discord-clone.git
```
2. Navigate to the project directory:
```bash
cd discord-clone
```
3. Install the dependencies:
```bash
npm install
```

## Environment Variables
```bash
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up

DATABASE_URL=

UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
UPLOADTHING_TOKEN=

LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
NEXT_PUBLIC_LIVEKIT_URL=
```

To run this project, you will need to add the following environment variables to your .env file:

## Project Structure

```
└── πŸ“app
└── πŸ“(auth)
└── πŸ“(routes)
└── πŸ“sign-in
└── πŸ“[[...sign-in]]
└── page.tsx
└── πŸ“sign-up
└── πŸ“[[...sign-up]]
└── page.tsx
└── layout.tsx
└── πŸ“(invite)
└── πŸ“(routes)
└── πŸ“invite
└── πŸ“[inviteCode]
└── page.tsx
└── πŸ“(main)
└── πŸ“(routes)
└── πŸ“server
└── πŸ“[serverId]
└── πŸ“channels
└── πŸ“[channelId]
└── page.tsx
└── πŸ“conversations
└── πŸ“[memberId]
└── page.tsx
└── layout.tsx
└── page.tsx
└── layout.tsx
└── πŸ“(setup)
└── page.tsx
└── πŸ“api
└── πŸ“channels
└── πŸ“[channelId]
└── route.ts
└── route.ts
└── πŸ“direct-messages
└── route.ts
└── πŸ“livekit
└── route.ts
└── πŸ“members
└── πŸ“[memberId]
└── route.ts
└── πŸ“messages
└── route.ts
└── πŸ“servers
└── πŸ“[serverId]
└── πŸ“invite-code
└── route.ts
└── πŸ“leave
└── route.ts
└── route.ts
└── route.ts
└── πŸ“uploadthing
└── core.ts
└── route.ts
└── favicon.ico
└── globals.css
└── layout.tsx


```
```
└── πŸ“components
└── πŸ“chat
└── chat-header.tsx
└── chat-input.tsx
└── chat-item.tsx
└── chat-messages.tsx
└── chat-video-buttom.tsx
└── chat-welcome.tsx
└── πŸ“modals
└── create-channel-modal.tsx
└── create-server-modal.tsx
└── delete-channel-modal.tsx
└── delete-message-modal.tsx
└── delete-modal.tsx
└── edit-channel-modal.tsx
└── edit-server-modal.tsx
└── initial-modal.tsx
└── invite-modal.tsx
└── leave-modal.tsx
└── members-modal.tsx
└── message-file-modal.tsx
└── πŸ“navigation
└── navigation-action.tsx
└── navigation-item.tsx
└── navigation-sidebar.tsx
└── πŸ“providers
└── modal-provider.tsx
└── query-provider.tsx
└── socket-provider.tsx
└── theme-provider.tsx
└── πŸ“server
└── server-channel.tsx
└── server-hearder.tsx
└── server-member.tsx
└── server-search.tsx
└── server-section.tsx
└── server-sidebar.tsx
└── πŸ“ui
└── avatar.tsx
└── badge.tsx
└── button.tsx
└── command.tsx
└── dialog.tsx
└── dropdown-menu.tsx
└── form.tsx
└── input.tsx
└── label.tsx
└── popover.tsx
└── scroll-area.tsx
└── select.tsx
└── separator.tsx
└── sheet.tsx
└── tooltip.tsx
└── action-tooltip.tsx
└── emoji-popover.tsx
└── file-upload.tsx
└── media-room.tsx
└── mobile-toggle.tsx
└── mode-toggle.tsx
└── socket-indicator.tsx
└── user-avatar.tsx
└── user-button-wrapper.tsx
```
```
└── πŸ“hooks
└── use-chat-query.ts
└── use-chat-scroll.ts
└── use-chat-socket.ts
└── use-modal-store.ts
└── use-origin.ts
```

```
└── πŸ“pages
└── πŸ“api
└── πŸ“socket
└── πŸ“direct-messages
└── [directMessageId].ts
└── index.ts
└── πŸ“messages
└── [messageId].ts
└── index.ts
└── io.ts
```