Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

py/README.md

facett-demo

facett's components in a Streamlit app. Every facett component — graphs, maps, tables, charts, timelines, a docs viewer, a 3-D model viewer, a simulation view — is the real Rust component compiled to WebAssembly and drawn on WebGPU, grouped like the native facett demo's tabs (Grafer, Kartor, Tabeller & diagram, Bygg & jobb, App & UI). The graph components carry the demo's size + generator: up to 100 000 nodes (the universe to 1 000 000) generated inside the wasm, so no graph crosses from Python.

No server is needed. With the optional [korp] extra the app also shows LIVE data from a korp-server over gRPC.

Install and run

pip install facett-demo
facett-demo                       # http://127.0.0.1:8501
facett-demo run --server.port 8502   # any Streamlit option after `run`
facett-demo --version             # facett-demo <version> (<git hash>)
facett-demo about                 # build banner + which tabs read which korp RPC

facett-demo starts Streamlit in the same Python process (no streamlit executable needed on PATH) and binds to 127.0.0.1 unless told otherwise — the demo is not authenticated, so exposing it is an explicit choice (--server.address).

Open it in a browser with WebGPU in a secure context (localhost or https). Chrome on Linux needs --enable-unsafe-webgpu --enable-features=Vulkan.

Live korp data (optional)

pip install 'facett-demo[korp]'   # + grpcio, protobuf
KORP_SERVER=host:50051 facett-demo
tab component korp-server RPC
🗺 korp · Map osm2d Assets + MapQuery
🕸 korp · Graph graphnav Graph
📊 korp · Population table + stat-grid IcebergTables + TablePreview + Population

Without the extra the app runs offline: the 🎨 Komponenter tab of every group needs no server, and the korp tabs mount the same components on the gallery's generated/fixture data under a banner that says so. With the extra installed and the server down, every korp tab shows the server's own error instead of a blank pane.

How it is built

The facett wheel carries the wasm bundles; this package is pure Python (the app, its payload table and the error-code catalog). Both wheels are built in a pinned container with the network off and verified byte for byte against their own RECORD before release; see the repository's .nornir/pypi-publish.md.

License

MIT (the text is in LICENSE, shipped in this package). Versions published up to and including 0.2.0 (crates.io 0.1.x/0.2.0 and PyPI facett/facett-demo 0.2.0) were released under MIT OR Apache-2.0 and stay so. From 0.2.1 facett is MIT only.