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

https://github.com/sanketp1/slack-colaboration-tool-clone

A modern, full-stack Slack-like collaboration platform built with cutting-edge technologies, featuring real-time messaging, video calls, file sharing, and more.
https://github.com/sanketp1/slack-colaboration-tool-clone

docker fastapi livekit-sdk minio mongodb pnpm pnpm-monorepo python react redis security typescript

Last synced: 3 months ago
JSON representation

A modern, full-stack Slack-like collaboration platform built with cutting-edge technologies, featuring real-time messaging, video calls, file sharing, and more.

Awesome Lists containing this project

README

          

# ๐Ÿš€ Slack Collaboration Tool Clone

A modern, full-stack Slack-like collaboration platform built with cutting-edge technologies, featuring real-time messaging, video calls, file sharing, and more.

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/)
[![React](https://img.shields.io/badge/React-18.2.0-blue.svg)](https://reactjs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0.2-blue.svg)](https://www.typescriptlang.org/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-green.svg)](https://fastapi.tiangolo.com/)
[![MongoDB](https://img.shields.io/badge/MongoDB-7.0-green.svg)](https://www.mongodb.com/)
[![Redis](https://img.shields.io/badge/Redis-7.2-red?logo=redis&logoColor=white)](https://redis.io/)
[![MinIO](https://img.shields.io/badge/MinIO-Object%20Storage-orange?logo=minio&logoColor=white)](https://min.io/)
[![LiveKit](https://img.shields.io/badge/LiveKit-WebRTC-blueviolet?logo=livekit&logoColor=white)](https://livekit.io/)

[![Docker](https://img.shields.io/badge/Docker-Compose-blue.svg)](https://www.docker.com/)

---

## ๐Ÿ“‹ Table of Contents

* [โœจ Features](#-features)
* [๐Ÿ—ผ๏ธ App Preview](#๏ธ-app-preview)
* [๐Ÿ› ๏ธ Tech Stack](#๏ธ-tech-stack)
* [๐Ÿ—๏ธ Architecture](#๏ธ-architecture)
* [๐Ÿ’„๏ธ Database Schema](#๏ธ-database-schema)
* [๐Ÿ“š Documentation](#-documentation)
* [๐Ÿ”Œ API Reference](#-api-reference)
* [๐Ÿš€ Quick Start](#-quick-start)
* [๐Ÿณ Docker Installation](#-docker-installation)
* [๐Ÿ”ง Development Setup](#-development-setup)
* [๐Ÿงช Testing](#-testing)
* [๐Ÿ“ฆ Deployment](#-deployment)
* [๐Ÿค Contributing](#-contributing)
* [๐Ÿ“„ License](#-license)
* [โค๏ธ Acknowledgements](#-acknowledgements)

---

## โœจ Features

> ๐Ÿงฉ Built to emulate the core experiences of modern collaboration tools like Slack, Zoom, and Notion โ€” all in one workspace.

### โš™๏ธ Core Functionality Overview

| ๐Ÿ”ง Feature | ๐Ÿ“ Description |
| -------------------------- | -------------------------------------------------------------------------- |
| ๐Ÿ’ฌ **Live Chat** | Real-time messaging using WebSockets with channel-based threads. |
| ๐Ÿ“ž **Video Calls** | Seamless group video and audio calling using **LiveKit** integration. |
| ๐Ÿ“‚ **File Sharing** | Upload and share files securely via **MinIO**, with drag-and-drop support. |
| ๐Ÿงต **Message Threads** | Keep discussions focused using threaded replies and reactions. |
| ๐Ÿ˜Š **Emoji Reactions** | React with emojis to lighten up conversations. |
| ๐Ÿ”” **Notifications** | Real-time desktop and in-app notifications for mentions, messages, etc. |
| ๐Ÿ›ก๏ธ **JWT Authentication** | Secure login/signup flows using access tokens and refresh tokens. |
| ๐Ÿ” **Permissions** | Fine-grained role-based access and private/public channel toggles. |

---

### ๐Ÿง  Visual Feature Map

```mermaid
graph TD
A[User] -->|Login/Register| B[Auth Service]
A -->|Join Channel| C[Channel Service]
A -->|Send Message| D[Message Service]
A -->|Start Video Call| E[Video Service]
A -->|Upload File| F[File Service]
B --> G[MongoDB]
C --> G
D --> G
F --> H[MinIO]
E --> I[LiveKit]
```

---

## ๐Ÿ—ผ๏ธ App Preview

### Login
![Dashboard](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/1.png)

### Registration
![Channel Chat](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/2.png)

### Dashboard Overview
![Video Call](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/3.png)

### Messaging & Threading
![Message Threading](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/6.png)

### Call Preview
![Call Preview](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/4.png)

### Video Call
![Video Call](https://fmzqhgyfpkifsbymzdoy.supabase.co/storage/v1/object/public/portfolio/collaboration-tool-slack-clone/5.png)

---

## ๐Ÿ› ๏ธ Tech Stack

### ๐Ÿงน Frontend

* React 18, TypeScript, Vite
* Tailwind CSS
* Zustand, React Query
* React Router DOM, Lucide Icons
* Socket.IO client, React Dropzone
* Markdown, Emoji Picker

### ๐Ÿš€ Backend

* FastAPI, Uvicorn, Pydantic
* Motor (MongoDB), Redis
* WebSockets, JWT (Python-Jose)
* MinIO SDK, Passlib

### ๐Ÿงฑ Infrastructure

* Docker & Docker Compose
* Helm Charts for Kubernetes
* GitHub Actions CI/CD
* LiveKit Server for video
* PNPM + TurboRepo

---

## ๐Ÿ—๏ธ Architecture

### System Architecture

```mermaid
graph TB
subgraph Client
A[React UI] --> B[WebSocket]
end
subgraph Gateway
C[FastAPI Gateway] --> D[Auth, Channels, Messages, Files]
end
subgraph Services
D --> E[MongoDB]
D --> F[Redis]
D --> G[MinIO]
D --> H[LiveKit]
end
```

### Microservices View

```mermaid
graph LR
A[Web/Mobile Client] --> B[API Gateway]
B --> C[Auth Service]
B --> D[Message Service]
B --> E[File Service]
B --> F[Video Service]
C --> G[MongoDB]
D --> G
D --> H[Redis]
E --> I[MinIO]
F --> J[LiveKit]
```

---

## ๐Ÿ’„๏ธ Database Schema

### User

```mermaid
erDiagram
USER {
ObjectId id PK
string email
string username
string hashed_password
string avatar
datetime created_at
}
```

### Channel

```mermaid
erDiagram
CHANNEL {
ObjectId id PK
string name
ObjectId created_by FK
}
```

### Message

```mermaid
erDiagram
MESSAGE {
ObjectId id PK
string content
ObjectId channel_id FK
ObjectId user_id FK
ObjectId thread_id FK
array reactions
datetime created_at
}
```

---

## ๐Ÿ“š Documentation

### Project Structure

```
slack-clone/
โ”œโ”€โ”€ apps/
โ”‚ โ”œโ”€โ”€ api/ # FastAPI backend
โ”‚ โ””โ”€โ”€ web/ # React frontend
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ helm/ # Helm charts
โ””โ”€โ”€ livekit.yaml # LiveKit config
```

### Concepts

* JWT-based Auth flow
* Live WebSocket chat engine
* Secure file uploads to MinIO
* Real-time user presence
* Threaded messages with Markdown

---

## ๐Ÿ”Œ API Reference

### ๐Ÿ” Auth

* `POST /auth/register`
* `POST /auth/login`

### ๐Ÿ“จ Channels

* `GET /channels`
* `POST /channels`

### ๐Ÿ“ฉ Messages

* `GET /messages/:channel_id`
* `POST /messages`

### ๐Ÿ“ Files

* `POST /files/upload`

### ๐Ÿ“น Video

* `POST /video/token`

---

## ๐Ÿš€ Quick Start

### Prerequisites

* Docker & Docker Compose
* Node 18+
* Python 3.8+
* PNPM

### Clone and Start

```bash
git clone https://github.com/yourusername/slack-clone.git
cd slack-clone
docker-compose up -d
```

### Seed Database

```bash
docker-compose exec api python scripts/seed.py
```

---

## ๐Ÿณ Docker Installation

```bash
# Build & run
docker-compose up -d

# Stop all
docker-compose down
```

---

## ๐Ÿ”ง Development Setup

### Backend

```bash
cd apps/api
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload
```

### Frontend

```bash
cd apps/web
pnpm install
pnpm dev
```

---

## ๐Ÿงช Testing

### Backend

```bash
cd apps/api
pytest
pytest --cov=app --cov-report=html
```

### Frontend

```bash
cd apps/web
pnpm test
```

---

## ๐Ÿ“ฆ Deployment

### Docker Production Build

```bash
docker-compose -f docker-compose.prod.yml build
docker-compose -f docker-compose.prod.yml up -d
```

### Kubernetes Deployment

```bash
helm install slack-clone ./helm
helm upgrade slack-clone ./helm
```

---

## ๐Ÿค Contributing

### How to Contribute

1. Fork this repo
2. Create a new branch
3. Commit your changes
4. Open a Pull Request

### Contribution Guidelines

* Follow existing code style
* Add relevant tests
* Use clear commit messages

---

## ๐Ÿ“„ License

This project is licensed under the [MIT License](LICENSE).

---

## โค๏ธ Acknowledgements

* [LiveKit](https://livekit.io/)
* [FastAPI](https://fastapi.tiangolo.com/)
* [MinIO](https://min.io/)
* [MongoDB](https://www.mongodb.com/)
* [React](https://react.dev/)

---

## ๐Ÿง‘โ€๐Ÿ’ป Made by Sanket with โค๏ธ

> Feel free to โญ the repo if you like it!

* ๐Ÿ”— [LinkedIn](https://linkedin.com/in/psanket18)
* ๐Ÿฆ [Twitter](https://twitter.com/p_sanket18)
* ๐Ÿ’ป [GitHub](https://github.com/sanketp1)