{"version":"v1.0","client_state":{"DocsNavigation.default":{"fields":{"query":""},"persist":"memory","send_to_server":true},"ColorScheme.default":{"fields":{"mode":"system"},"persist":"local","send_to_server":true}},"endpoints":{"action":"/_bretzel/action","sse":"/_bretzel/sse","refetch":"/_bretzel/refetch"},"csrf":"c57a017f6c11efcd2611031b5ce56b9a","page_id":"c4a96a272a68402faa5c71fc321d1810","address":""}

App map

`describe_app()` reads an app's `Feature()` contracts → its graph, live. This page runs it on a demo app. The same thing runs on yours through `describe_app(app.features)` — it cannot fall out of step, it is the running code, read.
14 features4 routes18 dependencies

The same graph, DRAWN

`ui.diagram` lays a directed graph out in layers, rendered on the server — no drawing library, no canvas. The same nodes and the same edges as the tables below: it is `describe_app()` that supplies them, not a hand entry.
shellshell
errorserror
settingspage
dashboardpage
reportingdata
boardpage
statspage
authlogic
moneylogic
realtimeinfra
tasksdata
usersdata
project_datadata
dbinfra
Clicking a node LIGHTS IT UP with what touches it, with no request — the highlighting is client side. `value=` makes the designated node two-way, so a server handler can read it or set it; `on_item_click=` triggers an action; `focus=` and `depth=` reduce the display to a node's neighbourhood, which is the only remedy when the graph grows. A dashed edge is a `reads`: one reads without depending.

The features, by kind

shell1
shellshell
page4
dashboardpage
providesdashboard_page · page /
usesproject_datausersmoney
settingspage
providessettings_page · page /settings
usesusersauth
boardpage
providesboard_page · page /p/{id}
usesproject_datatasksrealtime
statspage
providesstats_page · page /p/{id}/stats
usesproject_datatasksmoney
data4
usersdata
providesUserRepo · function
usesdb
project_datadata
providesProjectRepo · function
usesdb
tasksdata
providesTaskRepo · function
usesdbproject_data
reportingdata
providesglobal_stats · function
readsproject_datausers
logic2
moneylogic
providesformat_price · function
authlogic
provideslogin_required · function
usesusers
infra2
dbinfra
realtimeinfra
providesbroadcast · function
error1
errorserror

Mounted routes

PathFeature
/dashboard
/p/{id}board
/p/{id}/statsstats
/settingssettings

The map, machine-readable

`describe_app(app.features).to_dict()` — what an AI reads to understand the app's shape, instead of grepping.
{
  "nodes": [
    {
      "name": "shell",
      "kind": "shell",
      "provides": [],
      "uses": [],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "errors",
      "kind": "error",
      "provides": [],
      "uses": [],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "db",
      "kind": "infra",
      "provides": [],
      "uses": [],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "money",
      "kind": "logic",
      "provides": [
        {
          "label": "format_price",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "realtime",
      "kind": "infra",
      "provides": [
        {
          "label": "broadcast",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": "board"
    },
    {
      "name": "users",
      "kind": "data",
      "provides": [
        {
          "label": "UserRepo",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "db"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "auth",
      "kind": "logic",
      "provides": [
        {
          "label": "login_required",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "users"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": "settings"
    },
    {
      "name": "project_data",
      "kind": "data",
      "provides": [
        {
          "label": "ProjectRepo",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "db"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "tasks",
      "kind": "data",
      "provides": [
        {
          "label": "TaskRepo",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "db",
        "project_data"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "dashboard",
      "kind": "page",
      "provides": [
        {
          "label": "dashboard_page",
          "kind": "page",
          "detail": "/",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "project_data",
        "users",
        "money"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": true,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "settings",
      "kind": "page",
      "provides": [
        {
          "label": "settings_page",
          "kind": "page",
          "detail": "/settings",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "users",
        "auth"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": true,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "board",
      "kind": "page",
      "provides": [
        {
          "label": "board_page",
          "kind": "page",
          "detail": "/p/{id}",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "project_data",
        "tasks",
        "realtime"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": true,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "stats",
      "kind": "page",
      "provides": [
        {
          "label": "stats_page",
          "kind": "page",
          "detail": "/p/{id}/stats",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [
        "project_data",
        "tasks",
        "money"
      ],
      "reads": [],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": true,
      "render_parent": "",
      "optimal_parent": ""
    },
    {
      "name": "reporting",
      "kind": "data",
      "provides": [
        {
          "label": "global_stats",
          "kind": "function",
          "detail": "",
          "module": "examples.docs.features.app_map"
        }
      ],
      "uses": [],
      "reads": [
        "project_data",
        "users"
      ],
      "path": [],
      "module": "examples.docs.features.app_map",
      "renderable": false,
      "render_parent": "",
      "optimal_parent": ""
    }
  ],
  "routes": [
    [
      "/",
      "dashboard"
    ],
    [
      "/p/{id}",
      "board"
    ],
    [
      "/p/{id}/stats",
      "stats"
    ],
    [
      "/settings",
      "settings"
    ]
  ],
  "edges": [
    [
      "users",
      "db",
      "uses"
    ],
    [
      "auth",
      "users",
      "uses"
    ],
    [
      "project_data",
      "db",
      "uses"
    ],
    [
      "tasks",
      "db",
      "uses"
    ],
    [
      "tasks",
      "project_data",
      "uses"
    ],
    [
      "dashboard",
      "project_data",
      "uses"
    ],
    [
      "dashboard",
      "users",
      "uses"
    ],
    [
      "dashboard",
      "money",
      "uses"
    ],
    [
      "settings",
      "users",
      "uses"
    ],
    [
      "settings",
      "auth",
      "uses"
    ],
    [
      "board",
      "project_data",
      "uses"
    ],
    [
      "board",
      "tasks",
      "uses"
    ],
    [
      "board",
      "realtime",
      "uses"
    ],
    [
      "stats",
      "project_data",
      "uses"
    ],
    [
      "stats",
      "tasks",
      "uses"
    ],
    [
      "stats",
      "money",
      "uses"
    ],
    [
      "reporting",
      "project_data",
      "reads"
    ],
    [
      "reporting",
      "users",
      "reads"
    ]
  ]
}