REST API project developed in Java using Spring Boot 3 and MongoDB to manage and hydrate complex network relationships between business contracts.
The application discovers and validates hierarchical relationships stored in MongoDB, derives complete connection graphs using depth-first (DFS) and breadth-first (BFS) traversal algorithms, and generates enriched network structures through decoration and validation layers.
It supports large-scale asynchronous network hydration to Amazon S3 via multipart uploads, with dynamic batching, error tracking, and concurrency control using semaphores and CompletableFutures. Network hydration can be triggered via REST endpoints or automatically through a scheduled task protected by distributed locks, ensuring reliable and scalable execution across environments.
- Java 21
- Spring Boot 3.x.x
- Apache Maven 3.8.6
- spring-common-parent: Manages the Spring Boot version and provide common configurations for plugins and formatting.
To pull the spring-common-parent dependency, follow these steps:
-
Generate a Personal Access Token:
Go to your GitHub account -> Settings -> Developer settings -> Personal access tokens -> Tokens (classic) -> Generate new token (classic):
- Fill out the Note field:
Pull packages. - Set the scope:
read:packages(to download packages)
- Click Generate token.
- Fill out the Note field:
-
Set Up Maven Authentication:
In your local Maven
settings.xml, define the GitHub repository authentication using the following structure:<servers> <server> <id>github-spring-common-parent</id> <username>USERNAME</username> <password>TOKEN</password> </server> </servers>
NOTE: Replace
USERNAMEwith your GitHub username andTOKENwith the personal access token you just generated.
- Complete the required AWS Setup and DB Setup steps.
- Set the following environment variables:
AWS_REGION,AWS_ACCESS_KEY_ID, andAWS_SECRET_ACCESS_KEY. - Run the
SpringNetworkServiceApplicationclass as Java Application.
Run the script database.js to create the database, collections, and indexes. Once it has completed, import all of the following .csv files:
- network_db.contracts.csv
- network_db.non_selling_relationships.csv
- network_db.organizations.csv
- network_db.relationships.csv