Your platform is effectively a CMS
The platform is effectively a specialized content management system. As you progress, your team will ask for different areas to be customizable through the interface, rather than code.
However, this causes a delay between the team needing customization having access to it.
Content areas have similar fields
Over time we noticed that some attributes frequently repeated:
name
ortitle
published
orenabled
start_date
andend_date
slug
(that should be automatically generated based on the name and have a history so that links don’t break)icon
priority
- Audit log entries
There would also be a few scopes
, or saved queries:
published
prioritized
active
Which can be rolled into a reusable plugin
This functionality can be extracted into a reusable plugin making it trivial to add a decent base level of customization to all content.
In Supplybunny, for instance, I created a concern that has the scopes for the different fields. If the model has the field, I include the concern which creates the scope.
Building this mixin might be considered doing work in advance. However, the time required to build the mixin or to add the functionality once is similar, I think it’s justifiable.