Skip to main content

Navigation toolkit, menu schema, and Streamlit integration

Project description

streamlit-flexnav

A modular, schema‑driven navigation framework for Streamlit applications.
streamlit-flexnav provides a clean, extensible way to define menus, pages, roles, and navigation behavior using YAML/JSON schemas — with automatic UI rendering, access control, and a powerful plugin‑ready architecture.


✨ Features

  • Schema‑driven navigation (YAML/JSON)
  • Automatic Streamlit UI rendering
  • Role‑based access control
  • Menu groups, pages, icons, and metadata
  • Configurable sidebar behavior
  • CLI tools for debugging, linting, and fixing schemas
  • Plugin‑friendly architecture
  • Fast, reproducible builds using uv

📦 Installation

Install from PyPI:

pip install streamlit-flexnav

Or using uv:

uv add streamlit-flexnav

🚀 Quick Start

1. Create a menu schema (menu.yaml)

2. Load and register the schema

🧭 Navigation Behavior

Navigator automatically:
Renders menu groups and pages
Applies role‑based access control
Highlights the active page
Supports icons, dividers, and collapsible groups
Integrates seamlessly with Streamlit’s session state


⚙️ Configuration

TODO
menu settings
Page settings

🛠 CLI Tools

After installation, the CLI becomes available:
streamlit-flexnav

Command   	Description
doctor	    Diagnose common configuration issues
fix-keys    Normalize schema keys
debug-paths	Show resolved paths
linter	    Validate schema structure
startup-checks	Run environment checks

📁 Project Structure

src/streamlit_flexnav/ core/ # Loaders, registries, settings, schema logic ui/ # Streamlit UI components tools/ # CLI tools configs/ # Default configuration files images/ # Icons and static assets menupages/ # Built-in menu pages

See API_REFERENCE.md for full details.

🧪 Development

Clone the repository:

git clone https://github.com/informatie/streamlit-flexnav
cd streamlit-flexnav

Set up the environment:

uv venv
uv sync
source .venv/bin/activate

📄 License

MIT License — see LICENSE for details.

⭐ Acknowledgements

If you want, I can also generate:

TODO

Just tell me which one you want next.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_flexnav-0.1.0.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streamlit_flexnav-0.1.0-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file streamlit_flexnav-0.1.0.tar.gz.

File metadata

  • Download URL: streamlit_flexnav-0.1.0.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for streamlit_flexnav-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1d91084b1fbe696d0a20507e37dc3a1d2822543ca582ac58fe4d3b5d2d4ed972
MD5 586dfceb2a59f6678c8dd0b16629d84c
BLAKE2b-256 a831b675e1a127a43a25824b6e550dbd801a788c1b29fcd8b36b62703211997e

See more details on using hashes here.

File details

Details for the file streamlit_flexnav-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: streamlit_flexnav-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for streamlit_flexnav-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9ca0431e6eed3feb48c55ef71da748bc16850439e52ffea6fcb6a70ecb19e37
MD5 7911a448f244a41a72f526c2fcf798df
BLAKE2b-256 f4797cc6397f5675cf3696bbcbc1668066b1225d7b3885f46b8004e35c5f5b86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page