{"id":21746783,"url":"https://github.com/abengl/ntt-project2-customerms","last_synced_at":"2025-12-30T21:07:36.509Z","repository":{"id":262527490,"uuid":"887463047","full_name":"abengl/NTT-Project2-CustomerMS","owner":"abengl","description":"This microservice is part of the second project deliverable for the NTT Data Tech Girls program. It provides a CRUD API for managing customer banking management. ","archived":false,"fork":false,"pushed_at":"2024-12-03T22:20:42.000Z","size":314,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-13T22:44:22.380Z","etag":null,"topics":["checkstyle","functional-programming","jacoco","junit5","mockito","mysql","oop","openapi","postman","spring-boot","swagger"],"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/abengl.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":"2024-11-12T19:37:13.000Z","updated_at":"2024-12-03T22:15:31.000Z","dependencies_parsed_at":"2025-10-13T22:44:23.695Z","dependency_job_id":null,"html_url":"https://github.com/abengl/NTT-Project2-CustomerMS","commit_stats":null,"previous_names":["abengl/ntt-project2-customerms"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/abengl/NTT-Project2-CustomerMS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project2-CustomerMS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project2-CustomerMS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project2-CustomerMS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project2-CustomerMS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abengl","download_url":"https://codeload.github.com/abengl/NTT-Project2-CustomerMS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project2-CustomerMS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017142,"owners_count":26085984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"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":["checkstyle","functional-programming","jacoco","junit5","mockito","mysql","oop","openapi","postman","spring-boot","swagger"],"created_at":"2024-11-26T08:06:51.004Z","updated_at":"2025-10-13T22:44:26.678Z","avatar_url":"https://github.com/abengl.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Banking System - Customer Microservice\nThis microservice is part of the project the NTT Data Tech Girls program. It provides a CRUD API for managing customers in the banking system. Developed with Spring Boot, it incorporates functional programming practices and is integrated with a MySQL database. OpenAPI documentation is included, and the API can be tested with Postman. Unit tests are included and code coverage can be tested with JaCoCo, as well as, code style validation with Checkstyle.\n\n## Table of Contents\n- [Technologies and Approaches](#technologies-and-approaches)\n- [UML Diagrams](#uml-diagrams)\n- [Postman](#postman)\n- [Swagger / OpenAPI Documentation](#swagger--openapi-documentation)\n- [Code Quality and Coverage](#code-quality-and-coverage)\n\n---\n\n## Technologies and Approaches\n\nThe microservice was built using the following technologies and development practices:\n\n- **Spring Boot**: Framework for building and deploying the microservice.\n- **Functional Programming**: Applied to validation and processing logic for a concise, stateless, and more predictable codebase.\n- **MySQL Database**: Used to persist customer data. The schema is structured to maintain unique records for each customer, with validations implemented for critical fields.\n- **OpenAPI (Swagger)**: Provides API documentation and allows for easy exploration of the endpoints.\n- **Postman**: Facilitates testing and interaction with the microservice endpoints.\n- **JUnit-Mockito**: For unit testing the main classes of the service.\n- **JaCoCo-Checkstyle**: To verify code covergae and best practices in code style.\n\n## UML Diagrams\n\nThe following UML diagrams illustrate the architecture and data flow of the Customer Microservice:\n\n1. **Sequence Diagram**: Details the typical flow of operations between the Customer and [Account microservices](https://github.com/abengl/NTT-Project2-AccountMS).\n  \u003cimg alt=\"UML sequence diagram\" src=\"https://github.com/abengl/NTT-Project2-CustomerMS/blob/0a060c1b280532fa913375c508347e6960ba6823/src/main/resources/static/UML_Sequence_Diagram1_Microservices.png\" width=\"500\" height=\"500\"\u003e\n2. \u003cb\u003eComponent Diagram\u003c/b\u003e: Show the overall architecture of the microservices.\n    \u003cimg alt=\"UML sequence diagram\" src=\"https://github.com/abengl/NTT-Project2-CustomerMS/blob/0a060c1b280532fa913375c508347e6960ba6823/src/main/resources/static/UML_Component_Diagram_Microservices.png\" width=\"800\" height=\"400\"\u003e\n\n## Postman\n\n1. **Import the Collection**: Download or clone the repository, then import the Postman collection file located in the `/postman` directory.\n2. **Import Environment Variables**: import the environment variables into Postman and set them to run with the test collection.\n3. **Run Tests**: Once configured, you can execute requests to test each endpoint. The collection provides requests for creating, retrieving, updating, and deleting customer records.\n\n## Swagger / OpenAPI Documentation\n\nThe Customer Microservice includes integrated OpenAPI documentation. You can access it via Swagger UI by navigating to the following endpoint once the service is running:\n\n- **Swagger UI**: [http://localhost:8085/v1/swagger-ui.html](http://localhost:8085/v1/swagger-ui.html)\n\nThrough the Swagger UI, you can interact with each endpoint, review input and output specifications, and validate response codes and messages.\n\n## Code Quality and Coverage\n\nTo maintain code quality and ensure adequate test coverage, the project uses **Checkstyle** for code analysis and **JaCoCo** for test coverage reports. Follow the steps below to run these tools:\n\n### Run Checkstyle\n1. Open a terminal and navigate to the project directory.\n2. Run the following command to perform a Checkstyle analysis:\n   ```bash\n   mvn checkstyle:check\n   ```\n3. Review the output in the terminal for any code style violations. The results will also be saved in the target/reports/checkstyle.html file.\n   \n### Run JaCoCo for Test Coverage\n1. In the terminal, run the tests with coverage analysis:\n  ```bash\n  mvn clean test\n  ```\n2. Open the generated report located at target/site/jacoco/index.html in your browser to review coverage details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabengl%2Fntt-project2-customerms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabengl%2Fntt-project2-customerms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabengl%2Fntt-project2-customerms/lists"}