Skip to content

yaorlov/task_tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

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:

  1. Split business requirements into Actor, Command, Aggregate, and Domain Event.

  2. Create the Data Model. This step is based on the Event Storming from step 1.

  3. Having the Data Model, I've added Communications flow and split the application into services.

Microservices

Auth service

Used for users management and oAuth for all services. Available for admins only.

Task Tracking service

Used for tasks management and tasks-related notifications. Available for all users.

Billing service

Responsible for salaries calculations and billing dashboard. Available for admins and finance specialists only.

Analytics service

Responsible for analytics dashboard for admins.

Routes

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

How to run the applications

  1. Run docker-compose up to run Postgres and Kafka
  2. Start the microservices. Please check the README files in every microservice directory for more details.

Communications

Vanilla HTTP is used for sync communications. Kafka with schema registry is used for async communications.

Databases setup

Every microservice is using Postgres as the database. Please check the README files in every microservice directory for more details on database setup.

K8s

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

Seeding the database

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.

About

"Async Architecture" course assignment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published