{"id":28398873,"url":"https://github.com/jihadwael099/toda-app","last_synced_at":"2026-04-13T12:01:43.463Z","repository":{"id":292928773,"uuid":"982170399","full_name":"JihadWael099/ToDa-App","owner":"JihadWael099","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-04T14:42:09.000Z","size":2741,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-18T23:16:04.923Z","etag":null,"topics":["angular","junit","jwt-authentication","microservice","mockito","rest-api","resttemplate","spring-boot","springsecurity","swagger-ui"],"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/JihadWael099.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,"zenodo":null}},"created_at":"2025-05-12T13:30:48.000Z","updated_at":"2025-09-13T10:33:14.000Z","dependencies_parsed_at":"2025-05-25T07:26:25.953Z","dependency_job_id":"9d007970-151e-4223-a38b-18af5d824420","html_url":"https://github.com/JihadWael099/ToDa-App","commit_stats":null,"previous_names":["jihadwael099/to-do-best-","jihadwael099/toda-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JihadWael099/ToDa-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JihadWael099%2FToDa-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JihadWael099%2FToDa-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JihadWael099%2FToDa-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JihadWael099%2FToDa-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JihadWael099","download_url":"https://codeload.github.com/JihadWael099/ToDa-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JihadWael099%2FToDa-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31751705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["angular","junit","jwt-authentication","microservice","mockito","rest-api","resttemplate","spring-boot","springsecurity","swagger-ui"],"created_at":"2025-06-01T06:12:25.344Z","updated_at":"2026-04-13T12:01:43.425Z","avatar_url":"https://github.com/JihadWael099.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n**ToDa App** is a microservices-based project consisting of two independent services:\n\n- **User Service**: Handles user management, authentication, authorization (with JWT), password reset via OTP, and user registration.\n- **Todo Service**: Manages CRUD operations on todo items, each linked to a specific user.\n\nThis project demonstrates secure API development with best practices, MySQL integration, global exception handling, Swagger API documentation, and unit testing.\n\n---\n\n## Technologies\n- Java\n- Spring Boot\n- Spring Security with JWT\n- MySQL\n- Swagger\n- JUnit 5\n- JavaMailSender (for OTP emails)\n- Maven\n\n---\n\n## Database Design\n\n### User Service\n- **users** (`id`, `email`, `password`, `enabled`)\n- **otp** (`id`, `otp`, `expiration_time`, `user_id`)\n- **jwt** (`id`, `token`, `user_id`, `created_at`, `expiration_date`, `token_type`)\n\n### Todo Service\n- **items** (`id`, `title`, `user_id`, `item_details_id`)\n- **item_details** (`id`, `description`, `created_at`, `priority`, `status`, `startAt`, `finishAt`)\n\n---\n\n## API Endpoints\n\n### User Service - Auth APIs\n- `/login`\n- `/register`\n- `/activate`\n- `/checkToken`\n- `/forgetPassword`\n- `/changePassword`\n- `/regenrateOtp`\n\n### User Service - User Operations\n- `/delete`\n- `/update`\n\n### Todo Service\n- `/add`\n- `/delete/{id}`\n- `/update/{id}`\n- `/search/{id}`\n\n\u003e All Todo APIs require JWT validation via `/checkToken` call to User Service.\n\n---\n\n# User services APIs\n![App Screenshot](https://github.com/JihadWael099/ToDa-App/blob/main/user.png)\n\n# ToDo services APIs\n![App Screenshot](https://github.com/JihadWael099/ToDa-App/blob/main/todo.png)\n\n\n\n## ERD Diagram\n\n```mermaid\nerDiagram\n    USER ||--o{ OTP : generates\n    USER ||--o{ JWT : issues\n    USER ||--o{ ITEM : owns\n    ITEM ||--o{ ITEMDETAILS : has\n\n    USER {\n        id Long PK\n        email String\n        password String\n        enabled Boolean\n    }\n\n    OTP {\n        id Long PK\n        otp String\n        expiration_time DateTime\n        user_id Long FK\n    }\n\n    JWT {\n        id Long PK\n        token String\n        user_id Long FK\n        created_at DateTime\n        expiration_date DateTime\n        token_type String\n    }\n\n    ITEM {\n        id Long PK\n        title String\n        user_id Long FK\n        item_details_id Long FK\n    }\n\n    ITEMDETAILS {\n        id Long PK\n        description String\n        created_at DateTime\n        priority String\n        status String\n        startAt DateTime\n        finishAt DateTime\n    }\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjihadwael099%2Ftoda-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjihadwael099%2Ftoda-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjihadwael099%2Ftoda-app/lists"}