{"id":15137251,"url":"https://github.com/mayankgupta-dev08/finvista-nexus","last_synced_at":"2026-02-14T05:35:44.137Z","repository":{"id":243746551,"uuid":"813331471","full_name":"MayankGupta-dev08/FinVista-Nexus","owner":"MayankGupta-dev08","description":"Microservices - POC","archived":false,"fork":false,"pushed_at":"2024-07-19T21:33:32.000Z","size":24304,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"stable_prod","last_synced_at":"2025-07-12T12:22:50.800Z","etag":null,"topics":["docker","docker-compose","eureka","grafana","helm","java","kafka","kubernetes","maven","mysql","oauth2","open-telemetry","openapi","rabbitmq","resilience4j","rest-api","spring-boot","spring-cloud","spring-cloud-gateway","swagger"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/repositories/devmayank8","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/MayankGupta-dev08.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}},"created_at":"2024-06-10T22:00:23.000Z","updated_at":"2024-07-19T21:36:29.000Z","dependencies_parsed_at":"2024-06-16T18:19:40.658Z","dependency_job_id":"a0617e20-7a5a-4d19-9b2b-985b73661b33","html_url":"https://github.com/MayankGupta-dev08/FinVista-Nexus","commit_stats":null,"previous_names":["mayankgupta-dev08/mastering-microservices"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/MayankGupta-dev08/FinVista-Nexus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayankGupta-dev08%2FFinVista-Nexus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayankGupta-dev08%2FFinVista-Nexus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayankGupta-dev08%2FFinVista-Nexus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayankGupta-dev08%2FFinVista-Nexus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MayankGupta-dev08","download_url":"https://codeload.github.com/MayankGupta-dev08/FinVista-Nexus/tar.gz/refs/heads/stable_prod","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayankGupta-dev08%2FFinVista-Nexus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278173366,"owners_count":25942293,"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-03T02:00:06.070Z","response_time":53,"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":["docker","docker-compose","eureka","grafana","helm","java","kafka","kubernetes","maven","mysql","oauth2","open-telemetry","openapi","rabbitmq","resilience4j","rest-api","spring-boot","spring-cloud","spring-cloud-gateway","swagger"],"created_at":"2024-09-26T07:00:35.660Z","updated_at":"2025-10-03T14:02:05.031Z","avatar_url":"https://github.com/MayankGupta-dev08.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FinVista Nexus Bank Application\n\nMicroservices - POC\n\n---\n\n## Technologies Used\n\n- **MySQL**\n- **Java**\n- **Docker**\n- **Kubernetes**\n- **Kafka**\n- **Spring Boot**\n- **RabbitMQ**\n- **Maven**\n- **Docker Compose**\n- **REST API**\n- **Helm**\n- **Spring Cloud**\n- **Grafana**\n- **Swagger**\n- **OpenAPI**\n- **Eureka**\n- **Spring Cloud Gateway**\n- **Resilience4j**\n- **OpenTelemetry**\n- **OAuth2/OpenID Connect**\n- **KeyCloak (IAM)**\n- **Spring Security**\n- **Spring Cloud Functions**\n- **Spring Cloud Stream**\n\n## Project Overview\n\nThe FinVista Nexus project is designed to be a scalable and resilient application, utilizing modern technologies to ensure high performance and reliability.\n\n### Database\n\nWe use **MySQL** as our primary database to store all persistent data.\n\n### Backend\n\nOur backend services are written in **Java** and built with **Spring Boot**, leveraging **Spring Cloud** for service discovery, configuration, and more. **Eureka** is used for service registration and discovery.\n\n### Messaging and Streaming\n\nFor messaging, we use **RabbitMQ**, and for event streaming, we leverage **Kafka**.\n\n### Authentication and Authorization\n\nThe project uses **OAuth2** for secure authentication and authorization.\n\n### Deployment and Containerization\n\nAll services are containerized using **Docker** and managed with **Kubernetes**. We also use **Docker Compose** for local development and testing.\n\n### API Documentation\n\nAPIs are documented using **Swagger** and **OpenAPI** for easy testing and integration.\n\n### Monitoring and Observability\n\nFor monitoring, we use **Grafana** along with **OpenTelemetry** for tracing. **Resilience4j** is implemented to ensure fault tolerance in our services.\n\n### API Gateway\n\n**Spring Cloud Gateway** is used as the API Gateway to route requests to various microservices.\n\n### Deployment Tools\n\nWe utilize **Helm** for deploying applications on Kubernetes.\n\n---\n\n## Maven Commands\n\n- To generate a jar inside target folder w/o running unit tests\n\n```shell\nmvn clean install -Dmaven.test.skip=true \n```\n\n- To run a spring-boot maven project using terminal\n\n```shell\nmvn spring-boot:run\n```\n\n- To generate a docker image using BuildPacks (Packeto). No need of Dockerfile\n\n```shell\nmvn spring-boot:build-image \n```\n\n- To generate a docker image using Google Jib. No need of Dockerfile\n\n```shell\nmvn compile jib:dockerBuild \n```\n\n---\n\n## Docker \u0026 Docker Compose Commands\n\n### Docker Commands\n\n- To generate the docker image using the Dockerfile created\n\n```shell\ndocker build . -t devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT\n```\n\n- To run a container with a particular name using that same docker image in detached mode\n\n```shell\ndocker run -d --name fvn-accounts -p 8080:8080 devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT\n```\n\n- To run a container with a particular name using that same docker image in detached \u0026 debug mode\n\n```shell\ndocker run -d --name fvn-accounts -p 8080:8080 -p 5005:5005 devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT\ndocker run -d --name fvn-accounts -p 8090:8090 -p 5010:5010 devmayank8/finvistanexus-loans:1.0.1-SNAPSHOT\ndocker run -d --name fvn-accounts -p 9000:9000 -p 5015:5015 devmayank8/finvistanexus-cards:1.0.1-SNAPSHOT\n```\n\n- To run RabbitMQ 3.13 container in detached mode using docker image and default credentials\n\n```shell\ndocker run -d -it --rm --name fvn-rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management\n```\n\n- To run redis container in detached mode using docker image and default credentials\n\n```shell\ndocker run -d --name fvn-redis -p 6379:6379 -d redis\n```\n\n- To run Keycloak container in detached mode using docker with default values\n\n```shell\ndocker run -d -p 7080:8080 --name fvn-keycloak -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:25.0.1 start-dev\n```\n\n- To push the image to docker hub registry (make sure you are logged in using docker cli or docker desktop)\n\n```shell\ndocker image push docker.io/devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT\n```\n\n- To pull same the image from docker hub registry\n\n```shell\ndocker pull devmayank8/finvistanexus-accounts:1.0.1-SNAPSHOT\n```\n\n- To show all the running and stopped containers\n\n```shell\ndocker ps -a\n```\n\n- To login into the docker hub container registry\n\n```shell\ndocker login -u \u003cusername\u003e\n```\n\n- To logout from the docker hub container registry\n\n```shell\ndocker logout\n```\n\n- To display the intermediate layers \u0026 cmds that were executed when building the image\n\n```shell\ndocker history \u003cimage_name\u003e\n```\n\n- To remove a particular docker image\n\n```shell\ndocker rm \u003cimage_id\u003e\n```\n\n- To follow the log output of a particular container\n\n```shell\ndocker conatiner logs -f \u003ccontainer_id\u003e\n```\n\n- To open bash inside a running container\n\n```shell\ndocker exec -it \u003ccontainer_name\u003e bash\n```\n\n- To inspect a particular container\n\n```shell\ndocker conatiner inspect \u003ccontainer_id\u003e\n```\n\n- To show all the container statistics\n\n```shell\ndocker container stats\n```\n\n- To remove all the stopped containers\n\n```shell\ndocker conatiner prune\n```\n\n- To remove all the unused containers, volumes, networks and dangling images\n\n```shell\ndocker system prune\n```\n\n### Docker Compose Commands\n\n- To start the containers using a `docker-compose.yml` file\n\n```shell\ndocker-compose up -d\n```\n\n- To stop and delete the containers including volumes\n\n```shell\ndocker-compose down -v\n```\n\n- To stop the containers including volumes\n\n```shell\ndocker-compose stop\n```\n\n---\n\n## Modifying Run/Debug Configurations using spring profiles\n\n- **NOTE**: Priority - CLI arguments \u003e JVM options \u003e Environment Variables\n\n### Using CLI Arguments\n\n- activating `prod` profile instead of default\n\n```shell\n--spring.profiles.active=prod\n```\n\n- activating `qa` profile instead of default spring profile and changing the value of `build.version`\n\n```shell\n--spring.profiles.active=prod --build.version=2.0.1\n```\n\n### Using JVM option of passing the arguments\n\n- activating `qa` profile instead of default spring profile and changing the value of `build.version`\n\n```shell\n-Dspring.profiles.active=qa -Dbuild.version=3.0.1\n```\n\n### Using Environment variables\n\n- activating `prod` profile instead of default spring profile and changing the value of `build.version`\n\n```shell\nSPRING_PROFILES_ACTIVE=prod;BUILD.VERSION=5.1.0;\n```\n\n## Apache benchmark cmd for load testing/rate limiter scenario\n\n- Making 10 requests, with 2 concurrent requests at the given url\n\n```shell\nab -n 10 -c 2 -v 3 http://localhost:8072/fvnbank/cards/api/contact-info\n```\n\n---\n\n## Important Links\n\n### Setting Up Your Spring Boot Project\n\n#### 1. Create a Spring Boot Project\nKickstart your project using the [Spring Initializr](https://start.spring.io). This tool helps you generate a Spring Boot project with the necessary dependencies and configurations.\n\n#### 2. Essential Tools and Dependencies\n\n- **Spring Boot**: [Official Website](https://spring.io/projects/spring-boot)\n- **Spring Cloud**: Extend your application with microservices support. [Spring Cloud Website](https://spring.io/projects/spring-cloud)\n\n### Designing Your Application\n\n#### 3. Applying Design Patterns\n- **DTO Pattern**: Simplify data transfer across different parts of your application. Learn more about the [DTO Pattern](https://martinfowler.com/eaaCatalog/dataTransferObject.html).\n\n#### 4. Mapping and Transformation\n\n- **Model Mapper**: [Official Website](http://modelmapper.org/)\n- **MapStruct**: [Official Website](https://mapstruct.org/)\n\n#### 5. OpenAPI Integration\n\nDocument your APIs with ease using SpringDoc OpenAPI.\n\n- **Spring Doc**: [Spring Doc Website](https://springdoc.org/)\n- **OpenAPI**: [Open API Website](https://www.openapis.org/)\n\n### Containerization and Deployment\n\n#### 6. Docker and Containerization\n\n- **Docker**: [Official Website](https://www.docker.com)\n- **Docker Hub**: [Docker Hub Website](https://hub.docker.com)\n- **Docker Compose**: Manage multi-container applications. [Docker Compose Website](https://docs.docker.com/compose/)\n- **Buildpacks**: [Buildpacks Website](https://buildpacks.io)\n- **Google Jib**: [Google Jib Website](https://github.com/GoogleContainerTools/jib)\n\n#### 7. Kubernetes\n\nDeploy and manage your applications at scale.\n\n- **Local Kubernetes Cluster with Docker Desktop**: [Guide](https://docs.docker.com/desktop/kubernetes/)\n- **Kubernetes Dashboard**: [Web UI Dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/)\n- **Helm**: Manage Kubernetes applications. [Helm Website](https://helm.sh)\n- **Spring Cloud Kubernetes**: [Spring Cloud Kubernetes Website](https://spring.io/projects/spring-cloud-kubernetes)\n\n### Microservices and Messaging\n\n#### 8. Microservices Architecture\n\n- **Spring Cloud Config**: [Website](https://spring.io/projects/spring-cloud-config)\n- **Spring Cloud Bus**: [Website](https://spring.io/projects/spring-cloud-bus)\n- **Spring Cloud Netflix**: [Website](https://spring.io/projects/spring-cloud-netflix)\n- **Spring Cloud OpenFeign**: [Website](https://spring.io/projects/spring-cloud-openfeign)\n- **Resilience4j**: Implement fault tolerance. [Website](https://resilience4j.readme.io)\n- **Spring Cloud Gateway**: [Website](https://spring.io/projects/spring-cloud-gateway)\n\n#### 9. Messaging and Event-Driven Architecture\n\n- **RabbitMQ**: [RabbitMQ Website](https://www.rabbitmq.com)\n- **Apache Kafka**: [Apache Kafka Website](https://kafka.apache.org)\n- **Docker Compose for Kafka**: [Docker Compose File](https://github.com/bitnami/containers/blob/main/bitnami/kafka/docker-compose.yml)\n\n### Monitoring and Observability\n\n#### 10. Metrics and Monitoring\n\n- **Micrometer**: [Micrometer Website](https://micrometer.io)\n- **Prometheus**: [Prometheus Website](https://prometheus.io/)\n- **Grafana**: [Grafana Website](https://grafana.com)\n- **Grafana Loki**: [Setup Guide](https://grafana.com/docs/loki/latest/getting-started/)\n\n#### 11. Tracing and Observability\n\n- **OpenTelemetry**: [OpenTelemetry Website](https://opentelemetry.io/)\n- **Automatic Instrumentation**: [Guide](https://opentelemetry.io/docs/instrumentation/java/automatic/)\n\n### Security\n\n#### 12. Identity and Access Management\n\n- **Keycloak**: [Keycloak Website](https://www.keycloak.org/)\n\n### Advanced Topics and Best Practices\n\n#### 13. Twelve-Factor App Methodology\n\nFollow modern best practices for building software-as-a-service apps.\n\n- **Twelve-Factor**: [Twelve-Factor Methodology](https://12factor.net)\n- **Beyond the Twelve-Factor App**: [Book](https://www.oreilly.com/library/view/beyond-the-twelve-factor/9781492042631/)\n\n#### 14. Event Storming\n\nDesign your domain-driven applications efficiently.\n\n- **Lucidchart Blog**: [Event Storming Guide](https://www.lucidchart.com/blog/ddd-event-storming)\n\n### Additional Resources\n\n#### 15. Package Management and Build Tools\n\n- **Chocolatey**: [Chocolatey Website](https://chocolatey.org/)\n- **Bitnami Helm Charts**: [GitHub Repo](https://github.com/bitnami/charts)\n\n#### 16. Cloud Platforms\n\nDeploy your applications to the cloud.\n\n- **Google Cloud Platform (GCP)**: [GCP Website](https://cloud.google.com)\n- **GCP SDK Installation**: [Installation Guide](https://cloud.google.com/sdk/docs/install)\n\n#### 17. Service Mesh\n\nImplement service mesh for better microservices management.\n\n- **Istio**: [Istio Website](https://istio.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmayankgupta-dev08%2Ffinvista-nexus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmayankgupta-dev08%2Ffinvista-nexus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmayankgupta-dev08%2Ffinvista-nexus/lists"}