A URL shortner created upon event driven microservice architecture with frontend developed in ReactJS and backend with NodeJS.
Frontend built using ReactJS and Tailwind CSS
There are two microservices each with its own database and all the communication between these services are through RabbitMQ message queues. NGINX is used as a reverse proxy to forward the requests to their respective service and as a web server to serve the client application.
- Link Management Service
- Analytics Service
$ git clone https://github.com/shazsyed/eventdriven-url-shortner
$ docker-compose up --build
Note: Default NGINX port is 80, edit the exposing port for nginx service in ./docker-compose.yml file.
$ cd microservices
$ docker-compose -f LinkManagementService/docker-compose.yml up --build
$ docker-compose -f AnalyticsService/docker-compose.yml up --build
Your Docker containers should look like this
The purpose for this project was to explore microservice architecture and learn how modern applications are developed, during the development of this project I came across problems which were specific to a microservice architecture and learned about some patterns which are implemented to mitigate them. This project became a huge reason for me to learn Typescript and use it frequently in future.