Public maps · Robot Shop

Robot Shop, mapped from the code.

Instana's sample shop: AngularJS behind nginx, with Node, Java, Python, PHP and Go services and RabbitMQ. Kuuhaku read its source at commit 55292e2, with no configuration and no hand-fixing, and found 9 services in JavaScript, Go, Python, PHP and Java, and 12 connections: 11 over HTTP and 1 through a queue. Each one below says how it was found.

Open the live mapMap your own repos
Kuuhaku's map of Robot Shop: 9 services grouped into consumers and services, with 12 connections drawn between them

Services

Every repo or deployable the scanner found, with how many connections leave it and reach it.

ServiceStackRoleCallsCalled by
webDockerconsumer60
cartJavaScript · Expressservice13
paymentPython · Flaskworker31
catalogueJavaScript · Expressservice03
ratingsPHP · Symfonyservice11
shippingJava · Spring Bootservice11
userJavaScript · Expressservice02
dispatchGoworker01
load_genPythonconsumer00

Connections

config: the address is written in configuration (an env file, a compose file, a proxy route) and the call is matched to it. inferred: the call's path matches a route of the target and nothing contradicts it. Call sites count the places in the code that make the call.

FromToTypeEvidenceCall sitesHow it was found
cartcatalogueHTTPconfig6CATALOGUE_HOST defaults to catalogue, read in the same file
paymentcartHTTPconfig1URL worked out at payment.py:116
paymentdispatchqueueinferred11 queue published by payment, consumed by dispatch
paymentuserHTTPconfig2URL worked out at payment.py:64
ratingscatalogueHTTPinferred1its path matches a route of catalogue, which this repo is wired to
shippingcartHTTPconfig1URL worked out at src/main/java/com/instana/robotshop/shipping/Controller.java:136, sent by CartHelper built with it, src/main/java/com/instana/robotshop/shipping/CartHelper.java:40
webcartHTTPconfig5URL worked out at static/js/controller.js:203, through the /api/cart/ location in default.conf.template
webcatalogueHTTPconfig4URL worked out at static/js/controller.js:83, through the /api/catalogue/ location in default.conf.template
webpaymentHTTPconfig1URL worked out at static/js/controller.js:439, through the /api/payment/ location in default.conf.template
webratingsHTTPconfig2URL worked out at static/js/controller.js:221, through the /api/ratings/ location in default.conf.template
webshippingHTTPconfig4URL worked out at static/js/controller.js:338, through the /api/shipping/ location in default.conf.template
webuserHTTPconfig4URL worked out at static/js/controller.js:116, through the /api/user/ location in default.conf.template

Left for a person

2 items the scanner would not settle on its own and put in the review inbox instead of guessing:

Other systems

Your own system

Run npx kuuhaku scan . in a folder of repos: it reads the code on your machine and only the graph leaves it. Or connect GitHub or Bitbucket and let the hosted runner scan with a read-only key. The map, a page per repo, a review inbox and a check on every pull request follow. Start free.