DEV Community

Cover image for Rhumb — static user-journey maps from your frontend source
Satnam Sandhu
Satnam Sandhu

Posted on

Rhumb — static user-journey maps from your frontend source

Rhumb: constant-bearing journeys through your app

I wanted a boring answer to a useful question:

From this codebase, what are the real paths users can take to reach /checkout?

Not “what PostHog recorded last week.” Not “what an LLM invents after reading three files.” Just: routes + navigation edges → journey paths, extracted from source.

That’s Rhumb.

What it is

Rhumb is a small Python library/CLI that builds static user-journey graphs from frontend apps:

  1. Detect the framework from package.json
  2. Extract routes (config AST, filesystem routes, or generated route trees)
  3. Scan navigation (Link, navigate, redirect, …) with tree-sitter
  4. Enumerate paths, group them by end route, and attach gaps for anything it couldn’t resolve

No app runtime. No LLM in the extract path.

Supported today:

Framework Status
React Router Supported
TanStack Router Supported
Expo Router Supported

Next.js, Remix, Vue Router, SvelteKit, Angular — detected or stubbed, not fully extracting yet. This is alpha (0.1.0).

Install

Not on PyPI yet. Install from GitHub:

uv pip install git+https://github.com/satnam-sandhu/rhumb.git
# or
pip install git+https://github.com/satnam-sandhu/rhumb.git
Enter fullscreen mode Exit fullscreen mode

GitHub logo satnam-sandhu / rhumb

Constant-bearing journeys through your app

Rhumb

Constant-bearing journeys through your app.

Static user journey graphs from frontend source — routes, navigation edges, and concrete paths. No runtime. No LLM in the extract path.

Framework support
























































Framework Status Notes
React Router Supported Config / JSX routes + Link / navigate / redirect
TanStack Router Supported FS + routeTree.gen.ts + virtual routes + nav
Expo Router Supported Filesystem app/ + Link / router.*
Vue Router Coming soon Stub registered — SFC + router TS planned
SvelteKit Coming soon Stub registered — src/routes + Svelte nav planned
Next.js Coming soon
app/ / pages/ filesystem + Link / redirects
Remix Coming soon Filesystem routes + nav
Angular Coming soon TS Routes arrays
Vite + React (no router) Coming soon Thin / delegate when React Router present

Detection already recognizes several of the “coming soon” stacks from package.json; journey extraction ships only for the Supported rows today.

Prerequisites







Tool





Top comments (0)