This application is a Whatsapp-like application. It provides realtime conversations with other people.
The api is done with Java 8 and Spring Boot 2. It provides a websocket connection for realtime conversation.
For the project, we will launch a docker image of mongoDB and Kafka.
We can achieve to code a chat without any store or message broker. But if we do so we lose, to my mind, all the interest of the project.
- Install Docker
- Install docker-compose
- To run Kafka and Mongo images, execute in the deploy folder:
docker compose -f docker-compose.yml up -d
- Install Java 8 and maven
- Generate the maven packages and the Avro file with :
mvn compile
- Install NodeJs
- For Angular, install the dependencies :
npm install -g @angular/cli - Install the module of the project in the front folders:
npm i
Launch the API with :
mvn spring-boot:run
Run the application in localhost:4200 in the front folder :
ng serve -o
Run the application in localhost:3000 in the front folder :
npm start
Run the application in localhost:5173 in the front folder :
npm run serve
- The api is not completely independent. It will be better if we don't use
UserandMessagefrom the domain. We need to create new classes for the API and mapDomainandUserto them. - For the purpose of the project, there is NO test. And this is a bad practice. We need to improve the test coverage.
- The format of messages is known. It could be interesting to check if SQL can be better.
- I use Angular to iterate quickly. But For better performance, it can be done without any framework, in pure JS.

