This post is more of a brain dump than anything else; just a place to put my thoughts.
I’m currently architecting the ‘cluster manager’ application for the EuroPetitions EU project that we are a part of. This is a fairly easy piece of work, a simple dashboard with some APIs through to external ePetitioning systems.
Ideally, I want to use the flexibility that our CitizenScape product provides, but ‘widgetising’ the cluster manager in order to incorporate it seems like a lot more work than necessary. The proper way to do it would be to create an external cluster manager application and then provide a widgetised version to CitizenScape. The alternative is to incorporate the code for managing EuroPetition clusters into CitizenScape. Here are the plusses and minuses, as I see them, to these two approaches.
External Cluster Application
- Appropriately architected
- Easier development / maintenance, particularly where multiple developers are involved.
- Potential integration issues
- Widgetisation may limit how the cluster manager can function
- Time constraints (this has to be done in 15 man hours – and counting)
Cluster Manager in CitizenScape core
- Can use existing core code / helpers / views / templates – should reduce development time
- CitizenScape code muddied with non-core functionality
- CitizenScape database schema muddied with non-core structures
Much as I hate to say it (due to time constraints), I’m going to do it the proper way. I can’t imagine that this application will not run for a long period of time and I need it to be easily maintainable. So here’s what I’m going to do:
- Create the cluster manager as a new application / schema
- Develop the ‘business logic’ / models in full
- Create an API controller and views to supply widget-compatible snippets to CitizenScape.
- Create the CitizenScape widgets to incorporate EuroPetition cluster management into the CitizenScape platform.
Right, now that that’s sorted, I’d better get on with it…