{"id":21361037,"url":"https://github.com/abengl/ntt-project3-transactionms","last_synced_at":"2025-07-10T22:16:38.197Z","repository":{"id":263660850,"uuid":"889134339","full_name":"abengl/NTT-Project3-TransactionMs","owner":"abengl","description":"The Transaction microservice is part of a banking system designed to handle financial transactions, such as deposits, withdrawals, transfers, and historical data, associated with customer accounts.","archived":false,"fork":false,"pushed_at":"2024-12-03T22:21:57.000Z","size":908,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T06:43:09.536Z","etag":null,"topics":["mongodb","openapi","reactive-programming","spring-boot","swagger-ui","webflux"],"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}},"created_at":"2024-11-15T17:15:43.000Z","updated_at":"2024-12-03T22:13:26.000Z","dependencies_parsed_at":"2024-11-19T19:25:56.703Z","dependency_job_id":"0791a47f-e743-4a18-8e1f-74e4a94aa8ae","html_url":"https://github.com/abengl/NTT-Project3-TransactionMs","commit_stats":null,"previous_names":["abengl/ntt-project3-transactionms"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project3-TransactionMs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project3-TransactionMs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project3-TransactionMs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abengl%2FNTT-Project3-TransactionMs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abengl","download_url":"https://codeload.github.com/abengl/NTT-Project3-TransactionMs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243835936,"owners_count":20355611,"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","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":["mongodb","openapi","reactive-programming","spring-boot","swagger-ui","webflux"],"created_at":"2024-11-22T06:08:09.901Z","updated_at":"2025-03-16T06:43:14.957Z","avatar_url":"https://github.com/abengl.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Banking System - Transaction Microservice\n\nThe Transaction microservice is part of a banking system designed to handle financial transactions, such as deposits, withdrawals, transfers, and historical data, associated with customer accounts. This microservice utilizes a reactive programming approach with Spring WebFlux, integrates with MongoDB for storage. API documentation is available via Swagger/OpenAPI, and a Postman collection is provided for testing, as well as, unit tests with JUnit, Mockito. Code coverage is tracked with JaCoCo and code 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](#swaggeropenapi-documentation)\n- [Code Quality and Coverage](#code-quality-and-coverage)\n\n## Technologies and Approaches\n\n- **Spring Boot with WebFlux**: Enables reactive and non-blocking programming to support high-throughput operations.\n- **MongoDB**: Serves as the database for storing transaction data in a flexible, document-oriented format.\n- **OpenAPI/Swagger**: Provides API documentation and supports easy testing of endpoints.\n- **Reactive Programming**: Ensures non-blocking I/O operations and scalability.\n- **Postman**: Used for testing endpoints via a pre-configured collection.\n- **JaCoCo-Checkstyle**: To verify code covergae and best practices in code style.\n\n## UML Diagrams\n\nThe following UML diagrams detail the architecture and data flow of the Transaction Microservice:\n\n- **Sequence Diagram**: Illustrates the flow of operations for making a deposit and withdrawal transactions and communicating with the [Account microservice](https://github.com/abengl/NTT-Project2-AccountMS).\n\n  \u003cimg alt=\"UML Deposit sequence diagram\" src=\"https://github.com/abengl/NTT-Project3-TransactionMs/blob/985c5b9c89b2abca16937ca82362dba15d26c955/src/main/resources/uml/Transaction_Microservice_Deposit_UML_Sequence_Diagram.png\" width=\"500\" height=\"500\"\u003e\n\n  \u003cimg alt=\"UML Withdrawal sequence diagram\" src=\"https://github.com/abengl/NTT-Project3-TransactionMs/blob/985c5b9c89b2abca16937ca82362dba15d26c955/src/main/resources/uml/Transaction_Microservice_Withdrawal_UML_Sequence_Diagram.png\" width=\"500\" height=\"500\"\u003e\n  \n- **Component Diagram**: Represents the overall architecture of the Transaction Microservice and its interaction with MongoDB and other services.  \n\u003cimg alt=\"UML component diagram\" src=\"https://github.com/abengl/NTT-Project3-TransactionMs/blob/985c5b9c89b2abca16937ca82362dba15d26c955/src/main/resources/uml/Transaction_Microservice_UML_Component_Diagram.png\" width=\"800\" height=\"400\"\u003e\n\n## Postman\n\nA Postman collection is provided to test the Transaction microservice's endpoints. Follow these steps:\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 Swagger/OpenAPI documentation provides a detailed description of each endpoint, including parameters, request bodies, and response formats.\n\n1. Ensure the service is running locally (default: `http://localhost:8087`).\n2. Open a browser and navigate to: [http://localhost:8087/v1/swagger-ui.html](http://localhost:8087/v1/swagger-ui.html)\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\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabengl%2Fntt-project3-transactionms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabengl%2Fntt-project3-transactionms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabengl%2Fntt-project3-transactionms/lists"}