Skip to content

ChristapherAntony/Messaging_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Chat Application (On going project)

Project Status

This project is currently in progress and actively being developed. 🧑‍💻👨‍💻👨‍💻

Description

A chat application made up with MERN stack in clean architecture

  • Integrated google auth with Twilio for authentication and password login
  • Integrated image upload with AWS S3 with CloudFront CDN
Chat Application Chat Application Chat Application

Clean Architecture

This project follows Uncle Bob's Clean Architecture principles to ensure a scalable, maintainable, and testable codebase. Clean Architecture promotes separation of concerns and emphasizes the independence of the business logic from the frameworks and external dependencies.

Overview

The objective of Clean Architecture by [Robert C. Martin] is the separation of concerns in software. This separation is achieved by dividing the software into layers. Each layer is encapsulated by a higher level layer and the way to communicate between the layers is with the Dependency Rule.

Chat Application

Dependency Rule

This rule says that nothing in an inner circle can know anything at all about something in an outer circle. The dependency direction is from the outside in. Meaning that the Entities layer is independent and the Frameworks & Drivers layer (Web, UI, DB etc.) depends on all the other layers.

Entities

Contains all the business entities an application consists of. In our example the User and the Post.

Use Cases

Contains application specific business rules. These use cases orchestrate the flow of data to and from the entities. In our example some of the use cases are: AddPost, AddUser, DeleteById etc.

Interface Adapters

This layer is a set of adapters (controllers, presenters, and gateways) that convert data from the format most convenient for the use cases and entities, to the format most convenient for some external agency such as the DB or the Web. In other words, is an entry and exit points to the Use Cases layer. In our example we implemented controllers and presenters together and these are the PostController and the UserController.

Frameworks and Drivers

The outermost layer is generally composed of frameworks and tools such as the Database, the Web Framework, etc.

Key Principles

The key principles of Clean Architecture that we adhere to in this project include:

  1. Separation of Concerns: The codebase is organized into distinct layers, with each layer having a clear responsibility and minimal coupling with other layers.

  2. Dependency Rule: The dependencies between layers are arranged in a concentric manner, with inner layers containing the most abstract and business-centric code, and outer layers containing more concrete implementations and frameworks.

  3. Isolation of Business Logic: The core business logic is decoupled from any specific frameworks or technologies, making it easier to test, maintain, and adapt to changes.

About

A simple video chat application in Clean Architecture

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published