Skip to content

Simple project management system / task tracker services stack writen with Java and Kotlin

License

Notifications You must be signed in to change notification settings

farneser/task-tracker

Repository files navigation

Task Tracker

Overview

Task Tracker is a simple yet powerful task management application that leverages microservice architecture to provide a scalable and efficient solution. The application allows users to organize their tasks in a Trello-like manner, with a React-based client for a seamless user experience. The backend is implemented using Spring Boot, with additional features like a scheduler in Kotlin for task automation and an email sender for notifications.

Technologies Used

  • Client (React): The front end is built using React, providing a modern and responsive user interface for an optimal user experience.

  • Backend API (Spring Boot): The backend is developed using Spring Boot, offering a robust and scalable foundation for managing tasks and user data.

  • Scheduler (Kotlin Spring Boot): Kotlin is used for creating scheduled tasks to automate certain processes within the application, ensuring efficiency and timely updates.

  • Email Sender (Kotlin Spring Boot): Kotlin Spring Boot is employed for sending email notifications to users, keeping them informed about important updates and deadlines.

  • Database (Postgres): Postgres is used as the relational database to store task-related information securely.

  • Caching (Redis): Redis is utilized for caching to enhance the performance of the application by storing frequently accessed data in-memory.

  • Message Broker (RabbitMQ): RabbitMQ is employed as a message broker to enable communication and data exchange between microservices, ensuring a loosely coupled architecture.

  • Authentication (JWT Tokens): JSON Web Tokens (JWT) are used for secure user authentication, providing a reliable mechanism for verifying the identity of users.

Microservices

The application comprises the following microservices, each responsible for specific functionalities:

  1. Task Tracker Web API: Implements the core business logic of the application, managing tasks and user-related operations.

  2. Task Tracker React Client: Provides a modern and responsive user interface for users to interact with the task management system.

  3. Task Tracker Email Service: Manages the sending of email notifications, keeping users informed about important updates and deadlines.

  4. Task Tracker Scheduler Service: Implements scheduled tasks to automate processes within the application, ensuring efficiency and timely updates.

The microservices are deployed using Docker containers, with the following architecture:

services

Technologies Used

  • Spring Boot: A framework for building Java-based enterprise applications.
  • Kotlin: A modern programming language that works seamlessly with Java on the JVM.
  • Spring Data JPA: Simplifying data access with JPA.
  • Postgres: A powerful, open-source relational database system.
  • Spring Security: A powerful and customizable authentication and access control framework.
  • ModelMapper: An object mapping library that automatically maps one object to another.
  • Flyway: Database migration tool for Java-based systems.
  • Swagger: A tool for documenting APIs, providing a user interface to interact with your RESTful services.
  • React: A JavaScript library for building user interfaces.
  • TypeScript: A superset of JavaScript that adds static typing and other features.

Run default

Main method of running this application is using docker-compose. Learn more about configuration in Docker.md

Run built image

Run the application with the default configuration (docker compose is required). This will start the following services:

  1. Clone the repository

    git clone https://github.com/farneser/task-tracker && cd task-tracker
  2. Run the application

    ./run.sh
  3. Open the browser and go to http://localhost:3000

  4. Stop and remove the containers

    ./run.sh stop

Build locally

  1. Clone the repository

    git clone https://github.com/farneser/task-tracker --recurse-submodules && cd task-tracker
  2. Run build docker compose

    docker-compose -f docker-compose-build.yml build
  3. Run the application

    docker-compose -f docker-compose-build.yml up
  4. Open the browser and go to http://localhost:3000

  5. Stop and remove the containers

    docker-compose -f docker-compose-build.yml down -v

CI/DI

As part of the project, an automated CI/CD process has been configured using GitHub Actions for each microservice. This process ensures the automatic creation of Docker images and their upload to a shared repository (Docker Hub) when changes are made to the master branch.

Web API

Maven build

Docker Image build

Scheduler

Maven build

Docker Image Build

Email Sender

Maven build

Docker Image build

Client

Build CI

Docker Image build

Screenshots

startup kanban archive

About

Simple project management system / task tracker services stack writen with Java and Kotlin

Topics

Resources

License

Stars

Watchers

Forks

Languages