{"id":32578098,"url":"https://github.com/brendanddev/springdock","last_synced_at":"2026-07-03T06:31:33.538Z","repository":{"id":309571797,"uuid":"1036745343","full_name":"brendanddev/springdock","owner":"brendanddev","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-21T19:33:37.000Z","size":113,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-29T14:48:52.243Z","etag":null,"topics":["java","maven","spring","spring-boot"],"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/brendanddev.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-12T14:19:35.000Z","updated_at":"2025-10-21T19:33:41.000Z","dependencies_parsed_at":"2025-08-12T17:22:48.992Z","dependency_job_id":null,"html_url":"https://github.com/brendanddev/springdock","commit_stats":null,"previous_names":["brendanddev/learning-path-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brendanddev/springdock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fspringdock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fspringdock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fspringdock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fspringdock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brendanddev","download_url":"https://codeload.github.com/brendanddev/springdock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fspringdock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35075800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"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","maven","spring","spring-boot"],"created_at":"2025-10-29T14:42:37.614Z","updated_at":"2026-07-03T06:31:33.533Z","avatar_url":"https://github.com/brendanddev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpringDock (Previously Learning Path API)\n\nSpringDock is a Dockerized Spring Boot application for managing users and skills.  \nIt demonstrates REST API development, database integration, and containerization with Docker and Docker Compose.  \nThe project follows clean architecture and best practices for exception handling, validation, and service-layer business logic.\n\n---\n\n## Features\n\n- **User \u0026 Skill Management:** CRUD operations for users and skills.\n- **Skill Assignment:** Add or remove multiple skills for a user.\n- **REST API Design:** Follows standard HTTP verbs and status codes.\n- **Global Exception Handling:**  \n  - `ResourceNotFoundException` → HTTP 404  \n  - `BadRequestException` → HTTP 400  \n- **Validation:** Required fields are validated in the service layer to ensure data integrity.\n- **Service Layer Logic:** All business rules reside in services; controllers are thin.\n- **Containerized Setup:** Easily run the API with Docker and Docker Compose.\n\n---\n\n## Tech Stack\n\n- Java 17+\n- Maven\n- Spring Boot 3.x\n- PostgreSQL\n- Docker \u0026 Docker Compose\n\n---\n\n## Project Structure\n\n```\nspring-dock/\n├─ docker/\n│ ├─ Dockerfile\n│ └─ docker-compose.yml\n├─ src/\n│ ├─ main/\n│ │ ├─ java/com/brendan/springdock/\n│ │ │ ├─ controllers/\n│ │ │ ├─ exceptions/\n│ │ │ ├─ models/\n│ │ │ ├─ repository/\n│ │ │ └─ services/\n│ │ └─ resources/\n│ │ └─ application.properties\n│ └─ test/\n├─ target/\n├─ pom.xml\n├─ mvnw\n├─ mvnw.cmd\n├─ LICENSE\n└─ README.md\n```\n\n---\n\n## Getting Started\n\n### Prerequisites\n- Java 17+\n- Maven\n- Docker \u0026 Docker Compose\n- PostgreSQL (or use the one defined in docker-compose)\n\n### Setup \u0026 Run\n1. Clone the repository:\n```bash\ngit clone https://github.com/brendanddev/springdock.git\ncd springdock\n```\n\n2. Build the project with Maven:\n```bash\n./mvnw clean package\n```\n\n3. Start Docker containers (API + PostgreSQL):\n```bash\ndocker-compose up --build\n```\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanddev%2Fspringdock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrendanddev%2Fspringdock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanddev%2Fspringdock/lists"}