Skip to main content

A modular navigation framework for building multi-page Streamlit applications.

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.1.tar.gz (21.4 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: streamlit_flexnav-0.2.1.tar.gz
  • Upload date:
  • Size: 21.4 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.1.tar.gz
Algorithm Hash digest
SHA256 b64c38ba0989dea315ba403af6a2b6f448ee8133d951e7ba9cae3f4e9ea8b6a6
MD5 95c01e72e3786fdeefd1c4ca975cc7d0
BLAKE2b-256 b1d79979997015d804fce8dd6421c988c3952fff013e49c0b28a8501ab2da30d

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