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.4.0.tar.gz (22.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.4.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: streamlit_flexnav-0.4.0.tar.gz
  • Upload date:
  • Size: 22.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.4.0.tar.gz
Algorithm Hash digest
SHA256 31a34786c550298376c4e6a88cd5e35af90375b89d72cfc19f1c9de73dcd6b09
MD5 fe9bd826da6741432b282aae6e568a4a
BLAKE2b-256 82134665cc0f90c6bd809ea0bd6009ab77507ab8999bb3db0aaa9c962145254d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: streamlit_flexnav-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 494553eb380498d2ba0655d3bafacf9bd6d58bc332e397e0aaf17f70482539f2
MD5 f7af310f9de6133717d57b86c26b3f5e
BLAKE2b-256 d3efd0332042d9a56c5a30a6c2c9dea26516b33438b108b35a41298f0887488a

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