Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/brucearmstrong007/chat-application-monolithic

Chat Application - IonicV7, Angularv16, NestJS, MongoDB, RedisDB & Pub/Sub, Docker, Socket.io
https://github.com/brucearmstrong007/chat-application-monolithic

angular angular-signals docker docker-compose dockerfile ionic mongodb nestjs nodejs redis redis-database redis-json redis-pubsub rxjs signal

Last synced: about 2 months ago
JSON representation

Chat Application - IonicV7, Angularv16, NestJS, MongoDB, RedisDB & Pub/Sub, Docker, Socket.io

Awesome Lists containing this project

README

        

# Chat-Application
Cross Platform Chat Application

# Features
Register, Login and Authentication with session for a week,

Dark & Light Mode,

Realtime searching users, sending invites, accepting invites, remove contacts etc..,

You will see your contact's online presence and vise versa,

Realtime Chat with your contacts,

Know number of unread messages and notifications,

See delivered and seen messages, contact will know that you are typing and vise versa,

Realtime contact updates (get notified when a user sent a invite),

Add/Update profile picture, name or even bio (in progress),

Can reset password in settings,

Notifications for native devices, asking permission and contact notifications (contact notifications not tested my poor laptop).

# Images
App images are in the image directory,

# Buzz Words
Angular V16

Ionic V7

Docker

MongoDB

RedisDB - JSON

Redis - Pub/Sub

NestJS

Socket.IO - Websockets

REST - HTTP

JWT Auth - Access & Refresh Tokens

Signals

Monolithic - MVC

# Prerequisite
Docker/Docker-Desktop
node & npm
MongoDB Compass - Optional
Android Studio - Optional

# Procedure to run this repo locally
1.) pull this repo

2.) cd to client and npm i

3.) cd to server and npm i

4.) cd back to root and docker-compose up server redis redis-insight mongodb --build -V

5.) cd to client again and npm run start:local

6.) check http://localhost:4200/

7.) to check redisdb http://localhost:8001/ (Host: redis, port: 6379, name: local, username: default, password: password)
8.) to check mongodb open mongodb compass and connect to this url mongodb://root:password123@localhost:27017/

# Steps 4 & 5 can be skipped if you do this
From root cmd - "docker-compose up --build -V" this will also containerize the Angular-Ionic frontend app
and also takes some time to containerize and run

# Note
Angularv16, IonicV7, NestJS(monolithic), redis pub/sub & redisdb, MongoDB, Docker, built with only signals ( No NGRX & RxJS so far ), Basic default UI and themes, Socket.io extensive implementation

Make sure you use toggle device toolbar in your browser and set a android or ios device for better UI (Ionic)

Don't expect API & UI with error handling, loggers, testing and stuff (not there yet) , purely focusing on functionality

Default Profile Picture is a random 80 x 80 image from a website loaded at random, you can change it by adding your link for a image hosted online

# What's special
Learning the Techs mentioned in note, as well as building a chat application project with backend scalability in mind

# Possibilities
with redis pub/sub, websockets are H-scalable

and redis is also H-scalable with redis clusters

mongodb also H-scalable with multiple instances

NestJS monolithic to microservices (if required) is also possible with message brokers or other methods