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

https://github.com/juannovas/live-chat

A real time chat built with Fastapi based on microservices
https://github.com/juannovas/live-chat

fastapi microservices mongodb python

Last synced: 2 months ago
JSON representation

A real time chat built with Fastapi based on microservices

Awesome Lists containing this project

README

          

# πŸ’¬ Live Chat

Welcome to the **Live Chat** repository! This project showcases a chat application backend built using a microservices architecture built with FastAPI.

![Microservices Architecture](graph.jpeg)

## πŸ“‹ Table of Contents

- [Introduction](#introduction)
- [Features](#features)
- [Architecture](#architecture)
- [Services](#services)
- [Technologies](#technologies)

## 🌟 Introduction

Live chat allows users to send and receive messages in real-time. It is built using a microservices architecture, JWT verification and Websockets. The purpose of the project is to demonstrate my ability to build API's and manage non-relational databases.

## πŸš€ Features

- πŸ” User authentication and authorization
- πŸ“¨ Real-time messaging
- πŸ“‡ Contacts management
- πŸ”— Connection management
- πŸ—„οΈMongoDB for data storage

## πŸ›οΈ Architecture

The application is composed of several microservices, each responsible for a specific functionality. The services communicate with each other using HTTP and WebSockets. Below is an overview of the architecture:

- **πŸ”‘ Login Service**: Handles user login and token generation.
- **βœ… Verification Service**: Manages token verification processes.
- **πŸ“‡ Contacts Service**: Manages user contacts.
- **πŸ’¬ Messages Service**: Manages the sending and downloading of messages.
- **πŸ”— Connection Service**: Manages WebSocket communications to enable real time chat conversations.
- **πŸ—„οΈ MongoDB Database**: Stores all persistent data for the application.

## πŸ› οΈ Technologies

- **FastAPI**: Back-end framework for building APIs.
- **MongoDB**: NoSQL database for storing application data.
- **Docker**: Containerization of services.
- **JWT**: JSON Web Tokens for user authentication.
- **WebSockets**: Real-time communication protocol.