Skip to content

Realtime Chat Application with: Spring boot + Spring Data Jpa(Hibernate) + Spring Security(Bcrypt password encoder) Websocket(SockJS and STOMP) for messaging + MySQL database + Unit Testing using JUnit, AssertJ and Mockito Angular, PrimeNg for components, PrimeFlex for styling and PrimeIcons for icons + Postman and javascript for API t

Notifications You must be signed in to change notification settings

adoumadje/Chat_App_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Realtime Chat Application with:

  • Spring boot + Spring Data Jpa(Hibernate) + Spring Security(Bcrypt password encoder)
  • Websocket(SockJS and STOMP) for messaging + MySQL database + Unit Testing using JUnit, AssertJ and Mockito
  • Angular, PrimeNg for components, PrimeFlex for styling and PrimeIcons for icons + Postman and javascript for API testing
  • Selenium(Python) and Chrome webdriver for UI testing + AWS EC2, VPC, S3, NGINX, SSH for deployment + Docker, docker-compose and Github Actions for CI/CD pipeline.

Open Live: http://ec2-3-76-223-198.eu-central-1.compute.amazonaws.com

How the application works?
The application is a normal chat application where you have the list of all registered users and you can send them private messages.
A private message is only accessible to you and the user to whom you sent that message.
There is also a public chatroom where you can send message and it can be seen by all the users.
You can also see which users are currently online

If you don't want to create an account
You can use these two users to test the functionalities of the application:

  1. email: fede.valverde@fmail.com && password: Password1234#
  2. email: eduardo.camavinga@fmail.com && password: Password1234#

The Backend
For the backend I used Spring Boot 3, Spring Data Jpa (Hibernate) and Spring Security for the Bcrypt password encoder. I have implemented the authentication flow from regitering the user to login, reset the password and logout. I configured two endpoints for messages: one for chatroom/public messages and one for user/private messages

The Frontend
For the frontend I used angular, PrimeNg for the different components such as Dialog, Toast, form inputs. In addition I used PrimeFlex for styling and PrimeIcon for icons. I used SockJS-Client and stompjs for messaging on the client side.

Testing
I wrote unit tests for my backend using JUnit, AssertJ and Mockito.
I wrote tests for my RestAPI on postman
I automated my UI testing using Selenium(with Python) and Chrome driver

DevOps
I used docker to containerize my application for easier deployment on AWS.
I created three Dockerfiles: one for the frontend, one for the backend and one for my database.
I created a CI/CD pipeline using github actions that will run my docker-compose file to build the 3 images corresponding to my frontend, my beckend and my database. Then it will push those images to docker hub.
Then I load the docker-compose file that will allow me to pull my images and run my containers to S3 bucket and I make it public
so it can be downloaded.
Then I SSH to my EC2 to download my docker-compose file and pull my images and run my comtainers.

About

Realtime Chat Application with: Spring boot + Spring Data Jpa(Hibernate) + Spring Security(Bcrypt password encoder) Websocket(SockJS and STOMP) for messaging + MySQL database + Unit Testing using JUnit, AssertJ and Mockito Angular, PrimeNg for components, PrimeFlex for styling and PrimeIcons for icons + Postman and javascript for API t

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published