{"id":28046439,"url":"https://github.com/ranieeery/dev-register","last_synced_at":"2026-04-20T03:02:09.830Z","repository":{"id":290230523,"uuid":"973489760","full_name":"Ranieeery/dev-register","owner":"Ranieeery","description":"A Spring Boot API for tracking developers and project tasks with JWT authentication, PostgreSQL with Flyway migrations and comprehensive RESTful endpoints.","archived":false,"fork":false,"pushed_at":"2025-05-08T23:33:28.000Z","size":120,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-11T19:33:50.926Z","etag":null,"topics":["java","lombok","maven","postgresql","spring-boot","spring-data-jpa","spring-security","sql","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ranieeery.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-04-27T05:15:10.000Z","updated_at":"2025-05-09T02:09:36.000Z","dependencies_parsed_at":"2025-05-11T19:32:51.484Z","dependency_job_id":"c24aadc5-dbc3-4ec2-960c-190b582219a2","html_url":"https://github.com/Ranieeery/dev-register","commit_stats":null,"previous_names":["ranieeery/dev-register"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ranieeery/dev-register","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ranieeery%2Fdev-register","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ranieeery%2Fdev-register/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ranieeery%2Fdev-register/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ranieeery%2Fdev-register/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ranieeery","download_url":"https://codeload.github.com/Ranieeery/dev-register/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ranieeery%2Fdev-register/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32031070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["java","lombok","maven","postgresql","spring-boot","spring-data-jpa","spring-security","sql","swagger"],"created_at":"2025-05-11T19:27:33.796Z","updated_at":"2026-04-20T03:02:09.825Z","avatar_url":"https://github.com/Ranieeery.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dev Register\n\n![Java](https://img.shields.io/badge/Java-24-orange)\n![Spring](https://img.shields.io/badge/Spring_Boot-3.4.5-green)\n![Status](https://img.shields.io/badge/Status-Completed-brightgreen)\n\nDeveloper and task management system built with Spring Boot. This API allows registration, querying, updating, and logical deletion of developers and their respective tasks.\n\n## 📋 Table of Contents\n\n- [Overview](#-overview)\n- [Main Features](#-main-features)\n- [Technologies](#-technologies)\n- [Installation and Setup](#-installation-and-setup)\n- [API Usage](#-api-usage)\n- [Database Structure](#%EF%B8%8F-database-structure)\n- [Security Implementation](#-security-implementation)\n- [API Documentation](#-api-documentation)\n- [License](#-license)\n\n## 🔎 Overview\n\nDev Register is a backend system for managing developers and their tasks. It allows you to register developers with different specializations, experience levels, and programming languages, and assign tasks with priorities and tracking status. The API is secured with JWT authentication for protected endpoints.\n\n## 🚀 Main Features\n\n### Authentication \u0026 Security\n\n- User registration and login system\n- JWT (JSON Web Tokens) based authentication\n- Protected endpoints with token validation\n- Role-based access control\n\n### Developers\n\n- Registration of developers with personal and professional information\n- Paginated listing with HATEOAS support\n- Query by ID\n- Data updates\n- Logical deletion (soft delete) and restoration\n\n### Tasks\n\n- Creation of tasks with title, description, and developer association\n- Paginated listing with HATEOAS support\n- Priority definition and status\n- Date control (creation, start, and end)\n- Status management (complete, active)\n- Logical deletion (soft delete) and restoration\n\n## 💻 Technologies\n\n- **Java 24**\n- **Spring Boot 3.4.5**\n- **Spring Security**: For authentication and authorization\n- **JWT (JSON Web Tokens)**: For secure token-based authentication\n- **Spring Data JPA**: For data persistence\n- **Spring HATEOAS**: For RESTful API implementation with hypermedia\n- **PostgreSQL**: Main database\n- **H2 Database**: For testing and development\n- **Flyway**: For database migrations and versioning\n- **Lombok**: For reducing boilerplate code\n- **SpringDoc OpenAPI**: For automatic API documentation\n- **Maven**: For dependency management\n\n## 🔧 Installation and Setup\n\n### Prerequisites\n\n- Java 24 or higher\n- Maven 3.6.3 or higher\n- PostgreSQL (or use H2 for development)\n\n### Installation Steps\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/Ranieeery/dev-register.git\ncd register\n```\n\n2. Configure the `application.properties` file with your database credentials:\n\n```properties\nspring.datasource.url=jdbc:postgresql://localhost:5432/your_database\nspring.datasource.username=your_username\nspring.datasource.password=your_password\n```\n\n3. Compile and run the application:\n\n```bash\nmvn clean install\nmvn spring-boot:run\n```\n\n## 📝 API Usage\n\n### Authentication Endpoints\n\n#### Register a new user\n\n```http\nPOST /auth/register\n```\n\n#### Login and get JWT token\n\n```http\nPOST /auth/login\n```\n\n### Developer Endpoints\n\n#### Create a developer\n\n```http\nPOST /developer/create\n```\n\n#### List all developers (paginated)\n\n```http\nGET /developer/list\n```\n\n#### Find developer by ID\n\n```http\nGET /developer/list/{id}\n```\n\n#### Update developer\n\n```http\nPATCH /developer/update/{id}\n```\n\n#### Delete developer (soft delete)\n\n```http\nDELETE /developer/delete/{id}\n```\n\n#### Restore deleted developer\n\n```http\nPATCH /developer/delete/{id}/undo\n```\n\n### Task Endpoints\n\n#### Create a task\n\n```http\nPOST /tasks/create\n```\n\n#### List all tasks (paginated)\n\n```http\nGET /tasks/list\n```\n\n#### Find task by ID\n\n```http\nGET /tasks/list/{id}\n```\n\n#### Update task\n\n```http\nPATCH /tasks/update/{id}\n```\n\n#### Delete task (soft delete)\n\n```http\nDELETE /tasks/delete/{id}\n```\n\n#### Restore deleted task\n\n```http\nPATCH /tasks/delete/{id}/undo\n```\n\n## 🗃️ Database Structure\n\nThe system uses Flyway migrations to create and update the database structure. The main tables include:\n\n- `tb_developer`: Stores developer information\n- `tb_tasks`: Stores tasks associated with developers\n\nMigrations include the addition of columns for:\n\n- Active/inactive state management\n- Task status\n- Creation, start, and end dates\n- Priorities\n- Specializations and programming languages\n\n## 🔒 Security Implementation\n\nThe API uses JWT (JSON Web Token) for authentication:\n\n1. **Registration**: Users register with email and password\n2. **Authentication**: Upon successful login, the system returns a JWT token\n3. **Authorization**: For protected endpoints, the token must be included in the request header\n4. **Token Format**: `Authorization: Bearer {your_jwt_token}`\n5. **Token Lifetime**: Tokens are valid for 4 hours by default\n\nJWT benefits in this implementation:\n- Stateless authentication\n- Cross-domain/CORS support\n- Decoupled from user storage\n- Security information embedded within the token\n\n## 📚 API Documentation\n\nComplete API documentation is available through Swagger UI, accessible after starting the application:\n\n```html\nhttp://localhost:8080/swagger-ui/index.html\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License terms.\n\n---\n\nDeveloped by [Raniery](https://github.com/Ranieeery)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franieeery%2Fdev-register","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franieeery%2Fdev-register","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franieeery%2Fdev-register/lists"}