Git Product home page Git Product logo

task-management-system's Introduction

Task-Management-System

Overview

The Task Management System API is a robust and scalable solution designed to manage tasks, projects, and user assignments. Built using Spring Boot, it leverages modern technologies such as Spring Security for authentication, JWT for token-based security, and PostgreSQL for data persistence. This API is designed to be the backend for a task management application, providing comprehensive CRUD operations and advanced features such as task assignment and status tracking.

Features

  • User Management: Registration, login, and role-based authentication.
  • Project Management: Create, read, update, and delete projects.
  • Task Management: CRUD operations for tasks, including assignment to users and status updates.
  • JWT Authentication: Secure endpoints with JSON Web Tokens.
  • Swagger Documentation: Interactive API documentation.
  • Containerization: Docker support for easy deployment.
  • Kubernetes Deployment: Scripts and manifests for deploying to a Kubernetes cluster.
  • Monitoring and Logging: Integration with Prometheus, Grafana, and ELK Stack for comprehensive monitoring and logging.

Technologies

  • Java 17
  • Spring Boot 3.2.5
  • Spring Data JPA
  • Spring Security
  • JWT (JSON Web Tokens)
  • PostgreSQL
  • Swagger
  • Docker
  • Kubernetes
  • Prometheus & Grafana
  • ELK Stack (Elasticsearch, Logstash, Kibana)

Getting Started

Prerequisites

  • Java 17
  • Maven or Gradle
  • PostgreSQL
  • Docker (optional, for containerization)
  • Kubernetes (optional, for deployment)

Installation

  1. Clone the Repository

    git clone https://github.com/jeremi-ah/task-management-system.git
    cd task-management-system
  2. Configure the Database

    • Create a PostgreSQL database named task_management_db.
    • Update the database configuration in src/main/resources/application.properties:
      spring.datasource.url=jdbc:postgresql://localhost:5432/task_management_db
      spring.datasource.username=your_username
      spring.datasource.password=your_password
      spring.jpa.hibernate.ddl-auto=update
      spring.jpa.show-sql=true
  3. Build the Project

    ./mvnw clean install
  4. Run the Application

    ./mvnw spring-boot:run

API Documentation

The API documentation is available via Swagger. Once the application is running, navigate to http://localhost:8080/swagger-ui/ to explore the API endpoints.

Usage

Authentication

  • Register a new user
    POST /api/auth/register
  • Login and retrieve JWT
    POST /api/auth/login

Projects

  • Create a new project
    POST /api/projects
  • Retrieve all projects
    GET /api/projects
  • Update a project
    PUT /api/projects/{id}
  • Delete a project
    DELETE /api/projects/{id}

Tasks

  • Create a new task
    POST /api/tasks
  • Retrieve all tasks
    GET /api/tasks
  • Retrieve tasks by project
    GET /api/projects/{projectId}/tasks
  • Update a task
    PUT /api/tasks/{id}
  • Delete a task
    DELETE /api/tasks/{id}

Deployment

Docker

  1. Build Docker Image

    docker build -t task-management-system .
  2. Run Docker Container

    docker run -d -p 8080:8080 task-management-system

Kubernetes

  1. Create Kubernetes Deployment and Service Files

    • k8s/deployment.yaml
    • k8s/service.yaml
  2. Deploy to Kubernetes Cluster

    kubectl apply -f k8s/deployment.yaml
    kubectl apply -f k8s/service.yaml

Monitoring and Logging

Prometheus and Grafana

  • Integrate Prometheus for metrics collection.
  • Use Grafana for visualizing metrics.

ELK Stack

  • Configure Elasticsearch, Logstash, and Kibana for logging and monitoring.

Contributing

Contributions are welcome! Please submit a pull request or open an issue to discuss your ideas.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For further information or inquiries, please contact [email protected].

task-management-system's People

Contributors

jeremi-ah avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.