Route and navigation fields tell Admin, public routing, system governance, and Installer how the addon should be reached after deployment.
File Shape
Use `routing` to declare canonical route namespaces and base paths. Use `admin_routes` and `public_routes` for concrete route records. Use `admin_navigation` only for menu placement. Navigation should point to a route key or route that is also declared in the routes list.
What Owns It
The addon owns `route_key`, `handler`, `surface`, `view`, and declared paths. system governance owns collision validation for addon key, slug, route path, and route-key claims. Admin owns final menu rendering.
Common Breakage
- Navigation that points at a route not declared in `admin_routes` leaves admins with dead menu links.
- Two addons claiming the same route path or route key should be rejected before deployment.
- `surface` and `view` values that do not match the admin handoff make the route look installed while the page cannot render.
- Public routes should use `permission => null` only when the page is intentionally guest-visible.
Minimal Pattern
'routing' => [
'admin' => [
'namespace' => 'admin',
'base_path' => '/admin/your-addon-slug',
'query_fallback' => '/public/index.php?panel=admin&view=your-addon-slug',
],
'public' => [
'namespace' => 'public',
'base_path' => '/your-addon-slug',
],
],
'admin_navigation' => [
[
'section' => 'system',
'group' => 'core',
'label' => 'Your Addon Name',
'route_key' => 'youraddon.admin.index',
'route' => '/admin/your-addon-slug',
'permissions' => ['youraddon.view'],
],
],
See Sample Manifest for the full route list.