If you haven’t read my previous post, I would suggest reading it first, otherwise you won’t have any idea what’s going on.
I spent the majority of the day yesterday working away on my new project, Holli. Being the second day of my 10 days (realistically 9 day) project, I’ve decided to give an update.
One of the core aims of the project was to make it as modular as possible, allowing for the adding of new features with relative ease. This has been achieved my creating two core concepts with Holli.
Modules are groups of functionality and/or implementation, similar to plugins or addons that you’d find in other systems. The two core modules that I’m creating first are the Events and the Tasks modules, as the vast majority of my other modules and functionality will in someway stem from these.
While functionality is grouped into modules, each module may provide multiple sets or none at all. A set of user interactive functionality is being referred to as a section, and each module has the ability to define zero or more of these. The sections are used to create the dashboard page.
Fortunately, the idea of a flexible system such as this, with dynamic functionality registration and grouping is something that I’ve spent a great deal of time looking into. In fact, I was recently able to put my code into action when creating a new pseudo-cms system for CleverCherry.
Each Module packages its own functionality, relying on as many other modules as it likes.
Like Laravel service providers, each module has a register and a boot method. All global functionality is being registered in the modules register method, and any extra functionality relying on that of other modules (except Tasks and Events) is being setup/booted in the modules boot method.
If you’re interested in seeing the system develop, or just want to be nosey, Hollis code will be here on my github. I’ll finish this update off with the current Module class for Tasks.