Skip to main content

Navigation toolkit, menu schema, and Streamlit integration

Project description

streamlit-flexnav

THE PROJECT IS STILL UNDERGOING CHANGES FIRST RELEASE WILL BE 1.0.0 We are currently testing

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. The python modules (*.py) are placed in a folder and a menu is automaticaly generated. You can change icon and colors on the fly, streamlit-flexnav takes care.


✨ 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

🧭 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 --help

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

TODO 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

UPDATE DOCU

If you want, I can also do/make

  • check correctness of foldernames
  • page where you can modify:
    • the menu settings
    • the page settings
  • drag/drop folders
  • drag/drop pages
  • an init setup with an example application

Just tell me which one you want next.

  • rbac must be integrated
  • a watcher to monitor
  • user defined settings for a menu.
  • protect admin settings
  • implement SSO and others

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.2.0.tar.gz (21.1 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.2.0-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: streamlit_flexnav-0.2.0.tar.gz
  • Upload date:
  • Size: 21.1 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.2.0.tar.gz
Algorithm Hash digest
SHA256 7b2b3ca16083294258041cf7a2272515133f27db277751538187db1dd034c82d
MD5 ef615865a8a783e98f037a17c776810f
BLAKE2b-256 8f344da76711e5b583c9ec76855ab5d81d4261c3dd357a9677fd427b7a8c2207

See more details on using hashes here.

File details

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

File metadata

  • Download URL: streamlit_flexnav-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b6a78bc5692a794e088d0b39ac1ef8a970d1207b3ed67dca27f2aa5fe706ff9b
MD5 9dc41d0e367c1a4c24aa53563dee53fe
BLAKE2b-256 3ea37a5abc37337cab74f1dca997009f187650328019b13413651290bf6925ae

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