{"id":25720100,"url":"https://github.com/gregwhitaker/netifi-acmeshoes","last_synced_at":"2025-05-06T19:45:34.004Z","repository":{"id":82732575,"uuid":"221331818","full_name":"gregwhitaker/netifi-acmeshoes","owner":"gregwhitaker","description":"E-Commerce Example of Composing Microservices with Netifi, RSocket, and Spring Boot","archived":false,"fork":false,"pushed_at":"2019-11-13T23:23:18.000Z","size":502,"stargazers_count":3,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T02:21:32.081Z","etag":null,"topics":["microservices","netifi","netifi-broker","netifi-java","netifi-spring","reactive-programming","reactive-streams","spring-boot"],"latest_commit_sha":null,"homepage":"https://www.netifi.com","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregwhitaker.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":"2019-11-12T23:29:49.000Z","updated_at":"2023-04-03T05:56:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a8fc32a-59ef-44c6-a071-484fcc4a8872","html_url":"https://github.com/gregwhitaker/netifi-acmeshoes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregwhitaker%2Fnetifi-acmeshoes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregwhitaker%2Fnetifi-acmeshoes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregwhitaker%2Fnetifi-acmeshoes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregwhitaker%2Fnetifi-acmeshoes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregwhitaker","download_url":"https://codeload.github.com/gregwhitaker/netifi-acmeshoes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252756662,"owners_count":21799529,"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":["microservices","netifi","netifi-broker","netifi-java","netifi-spring","reactive-programming","reactive-streams","spring-boot"],"created_at":"2025-02-25T17:36:33.394Z","updated_at":"2025-05-06T19:45:33.996Z","avatar_url":"https://github.com/gregwhitaker.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# netifi-acmeshoes\nSimple store application that composes calls to backend product information services and displays a product page.\n\nThis example application shows you how to build microservice architectures using [Netifi](https://www.netifi.com) and [RSocket](http://rsocket.io).\n\n## What is Netifi?\n[Netifi](https://www.netifi.com) is a platform for building cloud-native applications with the power of [RSocket](http://rsocket.io).\n\nNetifi provides service discovery, load-balancing, streaming, and back-pressure without deploying a whole host of infrastructure \ncomponents and without polluting your code with circuit breakers and client-side load-balancing. \n\nCheck out [www.netifi.com](https://www.netifi.com) for more information.\n\n## Project Structure\nThe application contains a number of backend microservices that are called by the [store-app](store-app) to retrieve product information necessary to display a Product Details Page (PDP).\n\nThe APIs for the backend services are defined as Protobuf contracts in the `-idl` projects. These projects, when built, generate service stubs and clients that are imported and used by\nthe service and store-app projects.\n\n## Prerequisites\nThis application requires a running instance of the Netifi Broker.\n\nRun the following command to download the [Netifi Community Edition Broker](https://www.netifi.com/netifi-ce) as a Docker container:\n\n    docker pull netifi/broker:1.6.9\n\n## Building AcmeShoes\nThe application can be built as JARs or Docker images.\n\n### JAR\nRun the following command to build the application:\n\n    ./gradlew clean build\n    \nWhen developing in an IDE and modifying the IDL projects you may need to refresh your project classpath in order to see the changes take effect. When using IntelliJ, you can refresh the\nproject classpath by clicking the refresh button in the `Gradle` tab.\n\n### Docker\nRun the following command to build the application as Docker images:\n\n    ./gradlew clean buildImage\n    \nIf the build is successful, you will see the following Docker images in your local Docker registry:\n\n    gregnetifi/acmeshoes-store-app              0.1.0\n    gregnetifi/acmeshoes-store-app              latest\n    gregnetifi/acmeshoes-product-service        0.1.0 \n    gregnetifi/acmeshoes-product-service        latest\n    gregnetifi/acmeshoes-inventory-service      0.1.0\n    gregnetifi/acmeshoes-inventory-service      latest\n    \n## Running AcmeShoes\nFollow the steps below to run the application.\n\n### JAR\nFollow the steps below to run the application as JARs using Gradle:\n\n1. Run the following command to start a Netifi Broker:\n\n        docker run \\\n        -p 8001:8001 -p 8101:8101 -p 7001:7001 -p 6001:6001 \\\n        -e BROKER_SERVER_OPTS=\"'-Dnetifi.broker.admin.accessKey=8833333111127534' \\\n        '-Dnetifi.broker.admin.accessToken=Ih+hNsSdxLxAtHceTeEia2MGXSc=' \\\n        '-Dnetifi.authentication.0.accessKey=8833333111127534'\n        '-Dnetifi.authentication.0.accessToken=Ih+hNsSdxLxAtHceTeEia2MGXSc=' \\\n        '-Dnetifi.broker.ssl.disabled=true'\"  \\\n        netifi/broker:1.6.9\n\n2. In a new terminal, run the following command to start the `inventory-service`:\n\n        ./gradlew :inventory-service:run\n        \n3. In a new terminal, run the following command to start the `product-service`:\n\n        ./gradlew :product-service:run\n        \n4. In a new terminal, run the following command to start the `store-app`:\n\n        ./gradlew :store-app:run\n        \n5. In web browser, navigate to [http://localhost:8080/product/001](http://localhost:8080/product/001) to view the PDP page.\n\n### Docker\nA Docker Compose file has been provided to make running the Acme Shoes application as a set of Docker containers simple.\n\n1. Run the following command to start a single Netifi Broker and the Acme Shoes application:\n\n        docker-compose up\n        \n2. In web browser, navigate to [http://localhost:8080/product/001](http://localhost:8080/product/001) to view the PDP page.\n\n## Accessing the Application\nThe `store-app` project hosts the PDP page and can be accessed by navigating to [http://localhost:8080/product/001](http://localhost:8080/product/001) in a web browser.\n\nIf successful, you will see a product page similar to the following:\n\n![acme shoes pdp](acmeshoes-pdp.png)\n\n## Bugs and Feedback\nFor bugs, questions, and discussions please use the [Github Issues](https://github.com/gregwhitaker/netifi-acmeshoes/issues).\n\n## License\nCopyright 2019 Greg Whitaker\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregwhitaker%2Fnetifi-acmeshoes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregwhitaker%2Fnetifi-acmeshoes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregwhitaker%2Fnetifi-acmeshoes/lists"}