I call this system Mercury.
So far I have built the following:
- Core Mercury framework
- MySQL script to build initial tables (built using MySQL Workbench)
- MySQL script to populate initial data
- Flexible security and permission structure
- The ability for modules to hook into other modules without having to at all rewrite the source module that is being hooked into. This is kind of like one module 'extending' another.
- A content management system with WYSIWYG controls and file browser
- An admin system that adapts to the modules that you want to use
- An MVC model that separates form from functions
- Default presentation files that can be customized on a per-site basis with almost zero processing expense
- The ability to have a core repository of code for multiple sites on the server yet easily control which modules a given site has
- The ability to run distinct databases per site (this deviates from the WebKit model. It will mean more overhead when changes happen but will give us the ability to much more easily migrate sites as needed)
- A ton of useful functions I can leverage at will
- A level of database-software abstraction
Last night at pool I added the ability to easily update permissions as modules get updates and need to push new permissions into the system. Along with that there is a summary for each permission to let you see who it has been assigned to on a login, group or user type basis.
Today I added a switch to enable or disable modules. This mostly comes into play on the hook level but since the admin system is built on that then it means that a disabled module won't show up in the admin, nor can it be summoned anywhere within a site that calls the functionality by hooks.