I am trying to achieve a dynamic menu that could change on-the-fly depending on authorization level, language or look and feel. And of course usability, flexibility and accessability upon this. And of course Simplicity.
Store the menu items in the database, load into memory (cache) and filter out the correct menu for the current user.
Based on personal preferences or disabilites, the menu should be possible to customize. The settings are stored in the localStorage for semi persistance.
It should be possible to manage several languages and set the personal preferred language.
The basics of accessability are font size, background color and font color. My rule of thumb is no smaller than 18px fonts.
My rule of "thick thumbs" is no button or clickable area should be smaller than 42px. A compromize between design and usability. This "two level menu" is designed with mobile in mind. The traditional admin menu with accordion menus is good, but is harder to manage on mobile.
Things changes over time and it should be easy to add new stuff without start over. The "two level menu" makes it easier to add things without being too hard to navigate.