/Task-Management

This backend application allows users to manage their tasks and schedules. This done by signing up and creating tasks. Each task is assigned a status that can be changed depending on whether the task is pending, in progress or done.

Primary LanguageJava

Task Management Application

This application is built using Spring Boot following Spring MVC. The application helps a user to manage their time by allowing the user to log their activities on a daily basis.

Features

A typical user of the application would be able to do the following:

  • Sign up or Create an account, if a new user
  • Login, if a returning user
  • Create a task
  • View all tasks
  • Update a task
  • Delete a task
  • Assign a status to each task, i.e pending, in-progress or done

Tools Used

  1. Spring Boot
  2. PostgreSQL
  3. Spring Data JPA
  4. Hibernate
  5. JUnit
  6. Postman
  7. Git

Lessons Learned

Some of the lessons learned while working on this task include:

  • Creating proper folder structure as is applicable in Spring MVC
  • Programming according to Object Oriented Programming (OOP) principles
  • Exception handling in Spring
  • Creating endpoints that follow correct REST API patterns
  • Implementing Unit tests for all methods
  • Design proper databases with normalization and entities relationship mapping where necessary
  • Adding timestamps in databases where necessary
  • Creating custom response structures both on success and failure of implementations
  • Executing efficient SQL queries

Challenges Encountered


Some of the challenges encountered on this project include:

  • Persisting enums (task status) to the database
  • Estimating the project duration in hours
  • Assigning unique user ID (uuid) to each user and task