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.
- 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.
- 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)
- Java 17
- Maven or Gradle
- PostgreSQL
- Docker (optional, for containerization)
- Kubernetes (optional, for deployment)
-
Clone the Repository
git clone https://github.com/jeremi-ah/task-management-system.git cd task-management-system
-
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
- Create a PostgreSQL database named
-
Build the Project
./mvnw clean install
-
Run the Application
./mvnw spring-boot:run
The API documentation is available via Swagger. Once the application is running, navigate to http://localhost:8080/swagger-ui/
to explore the API endpoints.
- Register a new user
POST /api/auth/register
- Login and retrieve JWT
POST /api/auth/login
- 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}
- 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}
-
Build Docker Image
docker build -t task-management-system .
-
Run Docker Container
docker run -d -p 8080:8080 task-management-system
-
Create Kubernetes Deployment and Service Files
k8s/deployment.yaml
k8s/service.yaml
-
Deploy to Kubernetes Cluster
kubectl apply -f k8s/deployment.yaml kubectl apply -f k8s/service.yaml
- Integrate Prometheus for metrics collection.
- Use Grafana for visualizing metrics.
- Configure Elasticsearch, Logstash, and Kibana for logging and monitoring.
Contributions are welcome! Please submit a pull request or open an issue to discuss your ideas.
This project is licensed under the MIT License. See the LICENSE file for details.
For further information or inquiries, please contact [email protected].