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
User
andMessage
from the domain. We need to create new classes for the API and mapDomain
andUser
to 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.