strapi-plugin-menu-navigation
v0.0.4
Published
Strapi v5 Compatible menu trees management
Maintainers
Readme
🍽️ Strapi Plugin – Menu Navigation
The last menu builder you’ll ever need for Strapi v5. Structured, nested, dynamic—and absolutely elegant.
Because your menus deserve more than JSON blobs and copy-paste configs.
🚀 What Is It?
A high-level plugin for managing navigational menus and links in Strapi. Supports nested menu items, intuitive CRUD interfaces, and frontend-ready output.
Designed for:
- Content-rich portals
- Headless frontend frameworks
- Multi-level navigations
- Projects that value sanity
✨ Features
- ✅ Create & manage menus via admin panel
- ✅ Nestable items with drag-and-drop style UX
- ✅ Recursive relationships (child > parent)
- ✅ Dynamic UID generation from title
- ✅ Fast API endpoints for headless consumption
- ✅ One-click delete (items + hierarchy)
- ✅ Sensible codebase: no dark magic
🧠 Data Model
Menu
| Fields | type | description | | :----- | :------- | :------------------- | | title | string | Display label | | slug | uid | URL-friendly ID | | items | relation | One-to-many MenuItem |
MenuItem
| Fields | type | description | | :-------- | :------- | :---------------------------- | | title | string | Item label | | url | string | Target URL | | target | enum | _self, _blank, etc. | | order | integer | Position index | | parent | relation | Parent MenuItem (for nesting) | | children | relation | One-to-many nested MenuItems | | menu | relation | Belongs to a Menu |
🖥️ Admin Panel UX
- Create menu + nested items via a structured editor
- Preview menu trees visually
- Edit each item inline
- Recursive child editing
- Optimistic autosave coming soon™
📦 API Endpoints
Method Endpoint Description GET /menus Get all menus GET /menus/:id Get single menu with tree POST /menus Create a menu and items PUT /menus/:id Update menu and all items DELETE /menus/:id Nuke menu and all linked items
🧙♂️ Example Output
{
"id": 1,
"title": "Main Menu",
"slug": "main-menu",
"items": [
{
"id": 101,
"title": "Home",
"url": "/",
"target": "_self",
"children": []
},
{
"id": 102,
"title": "About",
"url": "/about",
"children": [
{
"id": 103,
"title": "Team",
"url": "/about/team",
"children": []
}
]
}
]
}Use this directly on your frontend. You’re welcome.
🔐 Permissions
Grant access to:
- plugin::strapi-plugin-menu-navigation.access
Optional: fine-grained control coming in v1.1+
🛠 Dev Notes
- Clean architecture: schema > service > controller
- Uses native strapi.entityService APIs
- Minimal logic in routes — composable and extendable
- Auto-populates nested relations up to n-levels
- Deletion is recursive, safe, and satisfying
🧼 TODO (next updates)
- 🧩 Drag-and-drop UI
- 🟢 Soft-delete & versioning
- 🚀 Public consumption API toggle
- 🧠 Role-based menu visibility
- 📤 Menu export/import
- ⚡ Fast cache option
🧬 Philosophy
Structure brings peace. This plugin delivers both.
Built by developers who know the pain of spaghetti menus and static configs. Enjoy it. Fork it. Share it.
🤝 Author
LPIX-11 – https://github.com/LPIX-11
⸻
