Skip to content

A RESTful API for managing Tasks, built using Spring Boot and MySQL with UUID as the Primary Key for Tasks. The system allows users to Create, Read, Update, Delete Tasks, and automatically update their status from PENDING to IN_PROGRESS after a specified time using an Asynchronous Scheduler.

License

Notifications You must be signed in to change notification settings

BHIMAVARAPU-MANOJ-KUMAR/Task-Management-System-Using-Spring-Boot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’« About Me

πŸ‘¨πŸΌβ€πŸ’» A Passionate Java Backend Developer

Coder GIF

  • I am Manoj Kumar Reddy from Vijayawada, Andhra Pradesh, India.
  • A Java Backend Developer with a strong foundation in Java and Spring Boot.
  • I'm driven by creating impactful solutions that improve user experiences and solve real-world problems.

🌱 My Goals

  • To Continue Learning and Growing in the field of Software Development.

  • To Contribute to Projects that make a Positive Impact.



πŸ’» My Skills & Expertise


🌐 Connect with Me

LinkedIn GitHub Instagram WhatsApp Gmail


Project Case Study - Wellness360

Task Management System

Static Badge

A RESTful API for managing tasks, built using Spring Boot and MySQL with UUID as the primary key for tasks.

The system allows users to Create, Read, Update, Delete Tasks, and automatically update their status from PENDING to IN_PROGRESS after a specified time using an Asynchronous Scheduler.


Features

  1. CRUD Operations :-

    • Create, Retrieve, Update, and Delete Tasks.
    • Status find transitions - PENDING, IN_PROGRESS, COMPLETED
  2. UUID Support :-

    • Tasks are Identified using Unique UUIDs for Scalability.
  3. Asynchronous Scheduler :-

    • Automatically updates the Task Status to IN_PROGRESS after 5 minutes from the Task Creation DateTime Stamp.
  4. Input Validation and Error Handling :-

    • Gracefully Handling of Invalid User Input using @Valid Annotation, including UUID formats when retrieving.
    • Implemented Centralized Exception Handling in the Application using concepts @RestControllerAdvice, @ExceptionHandler Annotations.
  5. Extensible Design :-

    • Entity-Based design with clear seperation of concers between Service, Repository, & Controller Layers.
  6. Logging :-

    • Logging is an essential feature for Monitoring and Debugging the application.
    • It helps in tracking the flow of the application, recording Significant Events, and Diagnosing Issues.
    • In this project, I've Implemented a Comprehensive Logging mechanism (INFO, DEBUG, ERROR) to capture various Aspects of the Application's Behavior.
  7. DTO Pattern Concept :-

    • Employed the Data Transfer Object (DTO) pattern to decouple the internal data model.
    • This ensures the flexibility to refactor entity classes without impacting external clients.
  8. Interceptors Concept :-

    • A Request Interceptor in Spring Boot is a component that intercepts incoming HTTP requests before they are processed by the controller.
    • It allows you to perform Pre-Processing Tasks, such as Logging, Authentication, Validation, or Modifying the request/response, before passing it to the controller.
  • Example Use Cases :-
    • Logging Incoming Requests
    • Authentication and Authorization
    • Adding Custom Headers
    • Request/Response Modification
  1. Project Lombok :-

    • Project Lombok is a Java Library that reduces boilerplate code, making code easier to read, maintain, and less error-prone.
    • Lombok uses Annotations to replace Repetitive, Tedious, or Boilerplate Java code.
    • For example, you can avoid writing Constructors with no arguments, toString(), equals(), and hashCode() methods by adding a few Annotations.

Setup & Running the Project

Prerequisites

  • Ensure you have the following installed on your Local Development System :-
  1. Java 17 or Later
  2. Apache Maven
  3. MySQL Latest Release(Ensure the Database is Successfully Installed, Up & Running)
  4. IDE - Integrated Development Environment Tools Like IntelliJ IDEA, Eclipse, VSCode or STS - Spring Tools Suit(Ensure anyone of the above IDEs are Installed)
  5. Postman or HTTPie Client Tool for Sending HTTP Requests to the backend server

Tech Stack & Database Choice

  • Spring Boot :- Chosen for it's comprehensive support for building Production-Ready Application with the best Features and ease of Integrating with other Spring Components.
  • Spring Data JPA :- Facilitates the data access layer and abstracts much of the boilerplate code.
  • Apache Maven Project/Dependency Management Tool :- Maven is a popular Open-Source build tool developed by the Apache Group. The tool provides allows developers to build and document the lifecycle framework. It is primarily used to simplify the Java development process by automating the build process, managing project dependencies (like downloading necessary libraries), and providing a standardized way to build, test, and package applications, essentially making it easier for developers to manage complex project structures and dependencies without manually handling each library download and configuration.
  • MySQL Database :- Chosen for it's Robustness, Performance and support for Advanced data types.


Design Decisions

  1. Extensible Design :

    • Entity-Based design with clear seperation of concers between Service, Repository, & Controller Layers.
  2. Project Lombok :

    • Project Lombok is a Java Library that reduces boilerplate code, making code easier to read, maintain, and less error-prone.
    • Lombok uses Annotations to replace Repetitive, Tedious, or Boilerplate Java code.
    • For example, you can avoid writing Constructors with no arguments, toString(), equals(), and hashCode() methods by adding a few Annotations.

Contribution

Contributions are welcome! Please fork the repository and submit a pull request for review. Connect me on LinkedIn

About

A RESTful API for managing Tasks, built using Spring Boot and MySQL with UUID as the Primary Key for Tasks. The system allows users to Create, Read, Update, Delete Tasks, and automatically update their status from PENDING to IN_PROGRESS after a specified time using an Asynchronous Scheduler.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published