{"id":31999612,"url":"https://github.com/omar908/user-management-api","last_synced_at":"2026-05-05T17:33:10.947Z","repository":{"id":312515667,"uuid":"1047735740","full_name":"omar908/user-management-api","owner":"omar908","description":"User Management API is a Spring Boot application that provides a secure and scalable backend for managing users. The project is structured with a clean separation of concerns, using RESTful principles, robust configuration, and layered testing to ensure reliability.","archived":false,"fork":false,"pushed_at":"2025-09-10T02:44:59.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-25T15:29:59.353Z","etag":null,"topics":["java","microservice","rest-api","restful-api","spring","springboot"],"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/omar908.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-31T05:25:07.000Z","updated_at":"2025-09-10T02:45:03.000Z","dependencies_parsed_at":"2025-08-31T08:27:09.176Z","dependency_job_id":"88559034-6ed3-4a69-a1b7-3b371b9e2c1a","html_url":"https://github.com/omar908/user-management-api","commit_stats":null,"previous_names":["omar908/user-management-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omar908/user-management-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar908%2Fuser-management-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar908%2Fuser-management-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar908%2Fuser-management-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar908%2Fuser-management-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omar908","download_url":"https://codeload.github.com/omar908/user-management-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar908%2Fuser-management-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32660326,"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":["java","microservice","rest-api","restful-api","spring","springboot"],"created_at":"2025-10-15T14:32:59.280Z","updated_at":"2026-05-05T17:33:10.942Z","avatar_url":"https://github.com/omar908.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReadMe\n## Description\n- The User Management API is a Spring Boot application designed to showcase clean, scalable architecture and best practices for building production-ready services.\n- It highlights RESTful API design, testing practices, and externalized configuration. \n- By default, it uses an in-memory store, but the design makes it easy to plug in a real database by implementing the `UserRepository` interface.\n\n## Features\n- Profile Management (view and update user details)\n- Configuration Management (externalized settings with Spring Boot properties)\n- Designed with an API-first approach and adhering to RESTful best practices.\n\n## Testing Approach\n- Unit Tests: for isolated business logic\n- Slice Tests: for Spring components like controllers or repositories\n- Integration Tests: for verifying multiple layers work together\n- Smoke Test (contextLoads()): ensures the application context boots successfully\n\n## Tech Stack\n- Java 21\n- Spring Boot 3.x\n- Spring Web / Spring Actuator\n- **In-memory repository** (pure Java collections, resets on restart)\n- JUnit 5, Mockito, Data Faker, \u0026 Spring Test\n\n## How to Run the application\n\n### SpringBoot approach\n- Pre-requisites\n  - Java 21\n- Run the following command(s):\n  1. Run Tests and Build JAR file. (Optional)\n     - `./gradlew clean build`\n  2. Run the SpringBoot application.\n     - `./gradlew bootRun`\n\n### Docker Container\n#### Missing Local Setup (No JAR Locally)\n- Pre-requisites\n  - Docker\n- Run the following command(s):\n  1. Creates the JAR file within an ephemeral container and outputs a distro-less container with the application JAR.\n     - `docker build --tag user-management-api --file Dockerfile.no-local .`\n  2. Runs the distro-less image and maps the application port to the host machine’s port 8080.\n     - `docker run --publish 8080:8080 --name user-management-api --detach user-management-api`\n\n#### With Local Setup (Uses Local JAR)\n- Pre-requisites\n    - Docker\n    - Java 21\n- Run the following command(s):\n  1. Build your JAR locally\n     - `./gradlew clean assemble`\n  2. Copies the JAR file and outputs a distro-less container with the application JAR.\n     - `docker build --tag user-management-api .`\n  3. Runs the distro-less image and exposes ports application to the host machine's port 8080.\n     - `docker run --publish 8080:8080 --name user-management-api --detach user-management-api`\n\n#### Cleaning local Container and Images\n- To remove and clean up, run the following command(s):\n  1. Stops and removes running container of `user-management-api`:\n      - `docker container rm --force user-management-api`\n  2. Removes docker image of `user-management-api`:\n      - `docker image rm --force user-management-api`\n\n### Docker Compose\n#### Missing Local Setup (No JAR Locally)\n- Pre-requisites\n    - Docker\n    - Docker Compose\n- Run the following command(s):\n  1. Creates the JAR in an ephemeral container, starts the application, and exposes port 8080.\n     - `docker compose --profile no-local up`\n\n- To Remove Container(s) run the following command:\n  1. Removes Container(s) and Docker network that was built.\n     - `docker compose --profile no-local down`\n\n#### With Local Setup (Uses Local JAR)\n- Pre-requisites\n    - Docker\n    - Docker Compose\n    - Java 21\n- Run the following command(s):\n    1. Uses the local JAR, starts the application, and exposes port 8080.\n        - `docker compose --profile local up`\n- To Remove Container(s) run the following command:\n    1. Removes Container(s) and Docker network that was built.\n        - `docker compose --profile local down`\n\n## How to Interact with Endpoints of application\n- You can interact with endpoints the built-in Swagger UI at the following link: [Swagger UI](http://localhost:8080/swagger-ui/index.html)\n- Alternatively, you can use the terminal or your preferred API Tool.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar908%2Fuser-management-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomar908%2Fuser-management-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar908%2Fuser-management-api/lists"}