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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters