{"id":23120340,"url":"https://github.com/bavllymagid/task_manager","last_synced_at":"2026-05-05T12:32:24.106Z","repository":{"id":249892387,"uuid":"831248821","full_name":"bavllymagid/task_manager","owner":"bavllymagid","description":"A web-based task management application where users can create, assign, and track tasks","archived":false,"fork":false,"pushed_at":"2025-01-04T03:00:55.000Z","size":200,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T03:14:59.011Z","etag":null,"topics":["backend","hypernat","java","kafka","kafka-consumer","kafka-producer","kafka-topic","lombok","maven","microservices","moa","restful-api","spring-boot","spring-data-jpa","spring-security","task-manager"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bavllymagid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-20T03:26:39.000Z","updated_at":"2025-01-06T21:47:42.000Z","dependencies_parsed_at":"2024-07-24T01:56:29.994Z","dependency_job_id":"e3139b4e-bf9e-4b79-89fb-859b5b3ea901","html_url":"https://github.com/bavllymagid/task_manager","commit_stats":null,"previous_names":["bavllymagid/task_manager"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bavllymagid/task_manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavllymagid%2Ftask_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavllymagid%2Ftask_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavllymagid%2Ftask_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavllymagid%2Ftask_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bavllymagid","download_url":"https://codeload.github.com/bavllymagid/task_manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bavllymagid%2Ftask_manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32649542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","hypernat","java","kafka","kafka-consumer","kafka-producer","kafka-topic","lombok","maven","microservices","moa","restful-api","spring-boot","spring-data-jpa","spring-security","task-manager"],"created_at":"2024-12-17T06:10:04.050Z","updated_at":"2026-05-05T12:32:24.088Z","avatar_url":"https://github.com/bavllymagid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task Manager API\n\n## Overview\n\nThe **Task Manager API** is a microservice-based solution that helps manage users, authentication, and task assignments. The API consists of two main services:\n1. **Authentication Service**: Manages user registration, login, token validation and user data management.\n2. **Task Management Service**: Manages tasks, assignments, and notifications.\n---\n## Features\n#### User Management Service:\n- User registration and login\n- Token-based authentication\n- User profile management\n#### Task Management Service:\n- Create, update, retrieve, and delete tasks\n- Assign tasks to users\n- List tasks with filters\n--- \n## Technologies\n- Backend Framework: Spring Boot\n- Database: MySQL\n- Authentication: JWT (JSON Web Token)\n- Communication: RESTful APIs\n- Messaging: Kafka\n---\n## Getting Started\n#### Prerequisites\n- Java 17 or higher\n- Maven\n- MySQL :\n\n    1. **Install MySQL**\n        - **For Windows:**\n            - Download the MySQL installer from the official MySQL website: https://dev.mysql.com/downloads/installer/\n            - Run the installer and follow the on-screen instructions.\n            - During the setup, ensure that MySQL Server is selected.\n              \u003cbr\u003e\u003c/br\u003e\n        - **For Linux:**\n            - Update your package index and install MySQL:\n          ``` bash\n          sudo apt update\n          sudo apt install mysql-server\n          ```\n            - Start MySQL and enable it to run on boot:\n          ```bash\n          sudo systemctl start mysql\n          sudo systemctl enable mysql\n          ```\n\n    2. **Log in to MySQL**\n       ``` bash\n       cd task_manager/script/\n       mysql -u root -p \n       ```\n        - Once MySQL is installed and running, execute the **script/Task_manager_script.sql** file to set up the necessary database tables.\n       ```sql\n       source Task_manager_script.sql; \n       ```\n- Kafka:\n    1. **Install Kafka**\n        - **For Windows:**\n            - Download the Kafka binaries from the official Apache Kafka website: https://kafka.apache.org/downloads\n            - Extract the downloaded file to a directory.\n            - Navigate to the Kafka directory and start the Zookeeper server:\n          ```bash\n          .\\bin\\windows\\zookeeper-server-start.bat .\\config\\zookeeper.properties\n          ```\n            - Start the Kafka server:\n          ```bash\n          .\\bin\\windows\\kafka-server-start.bat .\\config\\server.properties\n          ```\n            - Create a topic named **notification**:\n          ```bash\n          .\\bin\\windows\\kafka-topics.bat --create --topic notification --bootstrap-server localhost:9092\n          ```\n        - **For Linux:**\n            - Download the Kafka binaries from the official Apache Kafka website: https://kafka.apache.org/downloads\n            - Extract the downloaded file to a directory.\n            - Navigate to the Kafka directory and start the Zookeeper server:\n          ```bash\n          bin/zookeeper-server-start.sh config/zookeeper.properties\n          ```\n            - Start the Kafka server:\n          ```bash\n          bin/kafka-server-start.sh config/server.properties\n          ```\n            - Create a topic named **example**:\n          ```bash\n          bin/kafka-topics.sh --create --topic example --bootstrap-server localhost:9092\n          ```\n##### This will set up the necessary environment for the Task Manager API.\n\n---\n## Installation\n#### Clone the repository:\n\n```bash\ngit clone https://github.com/bavllymagid/task_manager.git\ncd task_manager\n```\n#### Navigate to each microservice directory and build the project:\n\n```bash\ncd user-management\nmvn clean install\ncd ../task-management\nmvn clean install\n```\n#### Configure the application:\n\n- There's an application.properties file in each microservice's src/main/resources directory, configure database connection in it.\n#### Example configuration for user-management:\n\n```properties title = \"application.properties(user-management)\"\nspring.datasource.url=jdbc:mysql://localhost:3306/(your_database_name) \nspring.datasource.username=(your_username)\nspring.datasource.password=(your_password)\n```\n---\n## API Documentation\n\n### Base URLs\n- Authentication Service: `http://localhost:8080`\n- Task Management Service: `http://localhost:8081`\n\n### Endpoints\n\n## 1. Authentication Service\n\n### 1.1 User Management\n\n#### Register a User\n\n- **Endpoint**: `POST /api/users/register`\n- **Description**: Registers a new user.\n- **Request Body**:\n    ```json\n    {\n      \"username\": \"exampleUsername\",\n      \"email\": \"exampleEmail@example.com\",\n      \"password\": \"@examplePassword1\"\n    }\n    ```\n\n#### Login a User\n\n- **Endpoint**: `POST /api/users/login`\n- **Description**: Logs in a user and returns a JWT token.\n- **Request Body**:\n    ```json\n    {\n      \"email\": \"exampleEmail@example.com\",\n      \"password\": \"@examplePassword1\"\n    }\n    ```\n\n#### Update User\n\n- **Endpoint**: `PUT /api/users/update`\n- **Description**: Updates user information.\n- **Authentication**: Bearer Token\n- **Request Body**:\n    ```json\n    {\n      \"username\": \"exampleUsername3\",\n      \"email\": \"exampleEmail@example.com\",\n      \"password\": \"@examplePassword1\"\n    }\n    ```\n\n#### Delete User\n\n- **Endpoint**: `DELETE /api/users/delete`\n- **Description**: Deletes a user.\n- **Authentication**: Bearer Token\n- **Query Parameters**:\n    - `email`: User Email\n\n#### Get All Users\n\n- **Endpoint**: `GET /api/users/get_users`\n- **Authentication**: Bearer Token\n- **Description**: Retrieves all users.\n- **Query Parameters**:\n    - `page`: Page number (default: 0)\n    - `size`: Page size (default: 20)\n\n#### Get User\n- **Endpoint**: `GET /api/users/get_user`\n- **Authentication**: Bearer Token\n- **Description**: Retrieves a user by Email.\n- **Query Parameters**:\n    - `email`: User Email\n\n#### logout User\n- **Endpoint**: `GET /api/users/logout`\n- **Authentication**: Bearer Token\n- **Description**: Logs out a user.\n\n### 1.2 Token Management\n\n#### Validate Token\n\n- **Endpoint**: `GET /api/token/validate`\n- **Authentication**: Bearer Token\n- **Description**: Validates a JWT token.\n\n#### Refresh Token\n\n- **Endpoint**: `GET /api/token/refresh`\n- **Authentication**: Bearer Token\n- **Description**: Refreshes the access token.\n\n\n\n## 2. Task Management Service\n\n### 2.1 Task Management\n#### Create Task\n\n- **Endpoint**: `POST /api/task/create`\n- **Authentication**: Bearer Token\n- **Description**: Creates a new task.\n- **Request Body**:\n```json\n\n{\n\"title\": \"Sample Task Title\",\n\"description\": \"This is a detailed description of the task.\",\n\"status\": \"In Progress\",\n\"dueDate\": \"2024-10-15T12:45:00\"\n} \n```\n#### Get User Created Tasks\n\n- **Endpoint**: `GET /api/task/get/user_tasks/{userId}`\n- **Authentication**: Bearer Token\n- **Description**: Retrieves tasks created by a specific user.\n- **Query Parameters**:\n    - `page`: Page number (default: 0)\n    - `size`: Page size (default: 20)\n\n#### Get Task By ID\n- **Endpoint**: `GET /api/task/get/{taskId}`\n- **Authentication**: Bearer Token\n- **Description**: Retrieves a task by ID.\n\n#### Update Task\n- **Endpoint**: `PUT /api/task/update`\n- **Authentication**: Bearer Token\n- **Description**: Updates task details.\n- **Request Body**:\n```json\n{\n  \"taskId\": 1,\n  \"title\": \"New Title\",\n  \"description\": \"Updated task description.\",\n  \"status\": \"Completed\",\n  \"dueDate\": \"2024-11-15T12:45:00\"\n}\n```\n\n#### Delete Task\n- **Endpoint**: `DELETE /api/task/delete/{taskId}`\n- **Authentication**: Bearer Token\n- **Description**: Deletes a task.\n\n### 2.2 Task Assignment\n\n#### Assign Task to User\n- **Endpoint**: `POST /api/task/assign/{taskId}`\n- **Authentication**: Bearer Token\n- **Description**: Assigns a task to a user.\n- **Request Body**:\n```json\n[1, 2, 3]\n```\n\n#### Get User Assigned Tasks\n- **Endpoint**: `GET /api/task/get/user_assigned_tasks/{userId}`\n- **Authentication**: Bearer Token\n- **Description**: Retrieves tasks assigned to a specific user.\n- **Query Parameters**:\n  - `page`: Page number (default: 0)\n  - `size`: Page size (default: 20)\n\n#### Unassign Task\n- **Endpoint**: `DELETE /api/task/unassign/{taskId}`\n- **Authentication**: Bearer Token\n- **Description**: Unassigns a task from a user.\n- **Request Body**:\n```json\n[1, 2, 3]\n```\n\n\n#### Unassign All Tasks from User\n- **Endpoint**: `DELETE /api/task/unassign/all/task/{userId}`\n- **Description**: Unassigns all tasks from a user.\n- **Authentication**: Bearer Token\n\n### 2.3 Notification Management\n\n#### Get User Notifications\n- **Endpoint**: `GET /api/task/notification/send`\n- **Authentication**: Bearer Token\n- **Description**: Sends notifications to user.\n- **Query Parameters**:\n  - `size`: Page size (default: 20)\n  - `page`: Page number (default: 0)\n\n#### Update Read Status\n- **Endpoint**: `PUT /api/task/notification/update_status`\n- **Authentication**: Bearer Token\n- **Description**: Updates notification read status.\n- **Query Parameters**:\n  - `notificationId`: Notification ID\n--- \n\n## Contributing\n- Fork the repository\n- Create a feature branch:\n\n```bash\ngit checkout -b feature/your-feature\n```\n- Commit your changes:\n\n```bash\ngit commit -am 'Add new feature'\n```\n- Push to the branch:\n\n``` bash\ngit push origin feature/your-feature \n```\n- Create a new Pull Request\n\n---\n\n## Contact\nFor any questions or issues, please contact Me.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbavllymagid%2Ftask_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbavllymagid%2Ftask_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbavllymagid%2Ftask_manager/lists"}