This is a task tracker with additional accounting and analytics functionality.
Created as an education project, showing my capabilities in building asynchronous microservice architecture. If you want to see project evolution please go to closed pull requests.
The system was designed in several steps:
-
Split business requirements into
Actor
,Command
,Aggregate
, andDomain Event
. -
Create the Data Model. This step is based on the Event Storming from step 1.
-
Having the Data Model, I've added Communications flow and split the application into services.
Used for users management and oAuth for all services. Available for admins only.
Used for tasks management and tasks-related notifications. Available for all users.
Responsible for salaries calculations and billing dashboard. Available for admins and finance specialists only.
Responsible for analytics dashboard for admins.
Auth service
http://localhost:3000 - main
http://localhost:3000/oauth/applications - oAuth app managment
Task Tracking service
http://localhost:5000 - main
http://localhost:5000/login - oAuth login
Billing service
http://localhost:4000 - main
http://localhost:4000/login - oAuth login
Analytics service
http://localhost:7000 - main
http://localhost:7000/login - oAuth login
- Run
docker-compose up
to run Postgres and Kafka - Start the microservices. Please check the README files in every microservice directory for more details.
Vanilla HTTP is used for sync communications. Kafka with schema registry is used for async communications.
Every microservice is using Postgres as the database. Please check the README files in every microservice directory for more details on database setup.
minikube
and tilt
are required to run services in local k8s cluster. After minikube
and tilt
dependencies are installed run:
minikube start --kubernetes-version v1.24.3 --feature-gates=ServiceIPStaticSubrange=true
tilt up
This will start Tilt and run services defined in the Tiltfile
.
To delete resources created by tilt up
run:
tilt down
To create user accounts and OAuth applications in auth DB trigger update on auth-db-seed
resource in Tilt UI. This will also stream AccountsCreated
event, so the user accounts will be created in all services.
If you are not using seeds and create OAuth applications from Doorkeeper UI, make sure to update key and secret in secrets.yaml
files.