{"id":26044354,"url":"https://github.com/leedskiy/task-manager-x","last_synced_at":"2026-04-08T18:01:27.872Z","repository":{"id":280673986,"uuid":"928464611","full_name":"leedskiy/Task-Manager-X","owner":"leedskiy","description":"Task Manager X is a full-stack task management app built with Spring Boot, React, and Tailwind CSS. It features secure authentication, a RESTful API, and a responsive UI, demonstrating scalable full-stack development with robust backend and frontend integration.","archived":false,"fork":false,"pushed_at":"2025-03-21T13:07:56.000Z","size":738,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-03T15:31:28.721Z","etag":null,"topics":["backend","frontend","full-stack","h2-database","jwt","jwt-token","nosql","oauth2","react","restful-api","security","spring","spring-boot","spring-security","tailwind","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/leedskiy.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":"2025-02-06T17:26:19.000Z","updated_at":"2025-04-29T12:47:14.000Z","dependencies_parsed_at":"2025-03-04T18:28:25.929Z","dependency_job_id":"d301507c-3623-40af-b38a-c4b4364fc84f","html_url":"https://github.com/leedskiy/Task-Manager-X","commit_stats":null,"previous_names":["leedskiy/task-manager-x"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/leedskiy/Task-Manager-X","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leedskiy%2FTask-Manager-X","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leedskiy%2FTask-Manager-X/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leedskiy%2FTask-Manager-X/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leedskiy%2FTask-Manager-X/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leedskiy","download_url":"https://codeload.github.com/leedskiy/Task-Manager-X/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leedskiy%2FTask-Manager-X/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31567227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","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","frontend","full-stack","h2-database","jwt","jwt-token","nosql","oauth2","react","restful-api","security","spring","spring-boot","spring-security","tailwind","task-manager"],"created_at":"2025-03-07T18:18:40.651Z","updated_at":"2026-04-08T18:01:27.852Z","avatar_url":"https://github.com/leedskiy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task Manager X\n\n## Project Scope and Objectives\n\n### Introduction\nTask Manager X is a full-stack task management application developed primarily with **Spring Boot**. It showcases robust backend capabilities—including secure authentication and RESTful API design—while also featuring a responsive **React** front-end built with Tailwind CSS. This project demonstrates my full-stack development skills and my ability to build scalable, secure applications.\n\n**Core Functionalities**:\n* CRUD operations.\n* Standard authentication (email/password) and Google OAuth2-based authentication. \n* Role-based access control with distinct user and admin functionalities. \n* Persistent task storage using an H2 in-memory database (with Flyway migrations).  \n* Filtering and sorting of tasks based on status and due dates.  \n\n**Target Audience:**  \n * General users who need an organized task management solution.\n\n**Success Criteria:**  \n* Users can log in using standard credentials or via Google OAuth2.  \n* Users can create, update, delete, and mark tasks as completed.  \n* Admins can manage (view, reassign, delete) all users’ tasks and manage users.  \n* Data persists across sessions and is secured using JWT and Spring Security.\n\n## Table of Contents\n* **[Video Demo](#video-demo)**\n* [Tech Stack Selection](#tech-stack-selection)\n* [Functional Requirements](#functional-requirements)\n* [Non-Functional Requirements](#non-functional-requirements)\n* [Application Architecture](#application-architecture)\n* [Dependencies](#dependencies)\n* [Entities and Relations](#entities-and-relations)\n* [API Design](#api-design)\n* [Implementation Plan](#implementation-plan)\n* [Screenshots](#screenshots)\n\n## Video Demo\n\nWatch a full walkthrough of Task Manager X, showcasing all major features:\n\n### **[Watch Task Manager X Demo](https://youtu.be/m9z_4xBTHw0)**\n\n[![Task Manager X Demo Preview](screenshots/dashboard.png)](https://youtu.be/m9z_4xBTHw0)\n\n### What’s Covered in the Video:\n* User authentication (Standard \u0026 Google OAuth2)  \n* Viewing, creating, editing, and deleting tasks\n* Filtering and sorting tasks  \n* Admin panel for task and user management  \n* Session persistence with JWT authentication\n\n## Tech Stack Selection  \n\n### Backend:\n* Spring Boot (API \u0026 server logic)\n* Spring Security + OAuth2 (Authentication and authorization)\n* JWT (Token-based authentication)  \n* H2 Database (Lightweight in-memory storage)  \n* REST API (Communication with the frontend)  \n* Flyway (Database migrations)  \n\n### Frontend: \n* React.js (UI framework)  \n* Tailwind CSS (Styling)  \n* React Router (Navigation)  \n* React Hooks (State Management)  \n* Vite (Build tool for fast development)  \n\n### Tools \u0026 DevOps: \n* Git \u0026 GitHub (Version control)  \n* Postman (API testing)\n\n## Functional Requirements  \n\n### User Features \n* **Authentication:** \n    * Standard email/password registration and login.  \n    * Google OAuth2 login and registration.  \n* **Task Management:**  \n    * View tasks.\n    * Add a new task.\n    * Edit any task (or mark tasks as completed).\n    * Delete any task.  \n    * Filter tasks by status and due date ranges.  \n    * Sort tasks by due date.  \n* **Session Persistence:**  \n    * User sessions and tasks are stored in an H2 database.  \n    * JWT tokens are used for authentication.  \n* **Responsive UI:**  \n    * The app is fully responsive and works on both desktop and mobile devices.  \n* **User Profile:**  \n    * Basic user information is displayed and can be updated (name and password).  \n    * Account deletion is available (with a confirmation modal).\n\n### Admin Features\n* **Task Administration:**  \n    * View all tasks across all users.\n    * Add a new task and assign it to any user.\n    * Edit and reassign tasks to different users.  \n    * Delete any task of any user.\n    * Filter tasks by status, due date ranges and by user email.  \n    * Sort tasks by due date and by user email.\n* **User Management:**  \n    * View detailed information for all users.  \n    * Delete users.\n\n## Non-Functional Requirements \n\n### Performance:  \n* Must load quickly with efficient API responses.\n\n### Security:\n* Implements standard authentication along with OAuth2.  \n* Uses JWT for secure stateless authentication.  \n* Protection against common vulnerabilities (e.g., XSS, CSRF) is in place.\n\n### Usability: \n* Simple, user-friendly UI with clear navigation.\n\n### Scalability: \n* Designed to handle multiple concurrent users.\n\n### Maintainability:\n* Modular and clean code with proper documentation and inline comments. \n\n## Application Architecture\n\n### Backend (Spring Boot):  \n* Exposes REST endpoints for authentication, user, and task management.  \n* Uses Spring Security to protect endpoints and enforce role-based access control.  \n* Integrates OAuth2 for Google-based authentication.\n\n### Database (H2): \n* Stores user details, tasks, and roles.  \n* Managed via JPA and Flyway migrations.\n\n### Frontend (React + Tailwind):\n* Uses Axios for API calls with interceptors to handle JWT tokens.  \n* Implements routing via React Router.\n\n## Dependencies\n\n### Backend:\n* Spring Web  \n* Spring Data JPA  \n* H2 Database  \n* Spring Security  \n* OAuth2 Client   \n* JWT (jjwt-api, jjwt-impl, jjwt-jackson)  \n* Flyway\n* Lombok \n\n### Frontend\n* react  \n* react-dom  \n* react-router-dom  \n* axios  \n* tailwindcss  \n* react-icons\n\n## Entities and Relations  \n\n### Entities: \n* **User:**  \n    * `id` (UUID, PK)  \n    * `name`  \n    * `email` (Unique)  \n    * `password`\n    * `profile_image`  \n    * `created_at`  \n    * `roles`\n    * `auth_provider`\n* **Role:**  \n    * `id`  \n    * `name`\n* **Task:**  \n    * `id` (UUID, PK)  \n    * `title`  \n    * `description`  \n    * `status` (e.g., PENDING, COMPLETED)  \n    * `due_date`  \n    * `created_at`  \n    * `user_id` (Foreign key)\n\n### Relations:\n* **One-to-Many:** A user can have multiple tasks.  \n* **Many-to-Many:** A user can have multiple roles and a role can belong to multiple users.\n\n## API Design  \n\n### Authentication (Standard \u0026 Google OAuth2):\n* **POST** `/auth/register`  \n    * Creates a new user with email, name, and password.\n* **POST** `/auth/login`  \n    * Logs in a user and returns a JWT token.\n* **POST** `/auth/logout`  \n    * Logs out the user.\n* **GET** `/auth/me`  \n    * Retrieves details of the logged-in user.\n* **PUT** `/auth/me/password`  \n    * Updates the user’s password.\n* **GET** `/oauth2/login/google`  \n    * Redirects the user to Google's OAuth2 authentication page.\n    * **GET** `/oauth2/login/success`  \n      * Handles successful OAuth2 authentication, issues JWT, and redirects to the frontend.\n    * **GET** `/oauth2/login/failure`  \n        * Handles failed OAuth2 authentication attempts.\n\n### User Management:  \n* **GET** `/users/me`  \n    * Retrieves authenticated user details.\n* **PUT** `/users/me/name`  \n    * Updates the user’s profile name.\n* **DELETE** `/users/me`  \n    * Deletes the authenticated user account.\n\n### Task Management:\n* **GET** `/tasks`  \n    * Retrieves all tasks for the authenticated user.\n* **GET** `/tasks/{id}`  \n    * Retrieves a specific task by ID (only if it belongs to the user).\n* **POST** `/tasks`  \n    * Creates a new task.\n* **PUT** `/tasks/{id}`  \n    * Updates a task (only if it belongs to the user).\n* **PUT** `/tasks/{id}/status`  \n    * Updates a task’s status (toggles between pending and completed).\n* **DELETE** `/tasks/{id}`  \n    * Deletes a task.\n* **GET** `/tasks/filter`  \n    * Filters tasks based on status and due date ranges.\n* **GET** `/tasks/sort`  \n    * Sorts tasks by due date.\n\n### Admin Actions:\n* **GET** `/admin/tasks`  \n    * Retrieves all tasks across all users.\n* **GET** `/admin/tasks/{id}`  \n    * Retrieves a specific task by ID.\n* **POST** `/admin/tasks`  \n    * Creates a new task with an option to assign it to any user.\n* **PUT** `/admin/tasks/{id}`  \n    * Updates a task.\n* **PUT** `/admin/tasks/{id}/reassign`  \n    * Reassigns a task to a different user.\n* **DELETE** `/admin/tasks/{id}`  \n    * Deletes any user’s task.\n* **GET** `/admin/tasks/filter`  \n    * Filters all tasks based on status, due dates or user email.\n* **GET** `/admin/tasks/sort`  \n    * Sorts all tasks by due dates or user email.\n* **GET** `/admin/users`  \n    * Retrieves all users.\n* **GET** `/admin/users/{id}`  \n    * Retrieves a specific user by ID.\n* **DELETE** `/admin/users/{id}`  \n    * Deletes a user (admin accounts are protected).\n\n### Database Console:\n* **GET** `/h2-console`  \n    * Access to the H2 Database console (can be enabled/disabled via configuration).\n\n## Implementation Plan\n\n### Backend:\n* **Start:**  \n    * Initialize Spring Boot project and configure Maven dependencies.  \n    * Configure basic CORS, security, and JWT authentication.  \n    * Set up application properties.\n* **Authentication:**  \n    * Implement standard registration, login, logout, and user profile endpoints.  \n    * Integrate Google OAuth2 authentication with custom success and failure handlers.\n* **User Management:**  \n    * Implement endpoints to update profile name, password, and delete user account.\n* **Task Management:**  \n    * Create Task model and implement endpoints for task CRUD operations, filtering, and sorting.  \n* **Admin Actions:**  \n    * Implement admin endpoints for managing tasks and users.  \n* **Refactoring and Documentation:**  \n    * Add inline comments and document controllers and services.\n\n### Frontend:\n* **Start:**  \n    * Initialize a React project using Vite.  \n    * Configure Tailwind CSS for styling.\n* **Pages and Components:**  \n    * **Dashboard:** \n        * Display tasks, filtering, sorting, and links to add/modify tasks.  \n    * **Header:** \n        * Navigation with conditional rendering for authenticated and admin users.  \n    * **Authentication Pages:**  \n        * Login and Register pages supporting both standard and Google OAuth2 login.  \n    * **Task Pages:**  \n        * Add Task and Modify Task pages with forms for task creation/updating.  \n    * **Profile:**  \n        * Display and update user information, change password, and delete account (with confirmation modal).  \n    * **Admin Users:**  \n        * Display all users with the ability to delete non-admin users.\n* **State Management and API:**  \n    * Use React Context for authentication state management.  \n    * Use Axios with interceptors to handle token persistence and API calls.\n\n## Screenshots\n\nScreenshots showcasing the UI and functionality of Task Manager X.\n\n### Register Page\n![Register Page](screenshots/register.png)\n\n### Dashboard Page\n![Dashboard](screenshots/dashboard.png)\n\n### Create Task Page\n![Create Task](screenshots/create-task.png)\n\n### Modify Task Page\n![Add Task](screenshots/modify-task.png)\n\n### Profile Page\n![Profile Page](screenshots/profile.png)\n\n### Admin Dashboard Page\n![Admin Panel](screenshots/admin-dashboard.png)\n\n### Admin Users Management Page\n![Admin Users](screenshots/admin-users.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleedskiy%2Ftask-manager-x","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleedskiy%2Ftask-manager-x","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleedskiy%2Ftask-manager-x/lists"}