Charge Point Management System
The platform operators use to run a charging network. I designed its plugin-based frontend so that modules can be developed, built and shipped independently of the host application.
- Period
- Context
- My role
The problem
Every operator wants a different set of modules, and a single monolithic frontend makes that a branching problem — each variation drags the whole application along with it, and a change to one module means rebuilding and retesting all of them.
How it was built
Modules as plugins
The frontend is a host application with a plugin contract. Each module is built on its own and resolved by the host, so an operator's build is a matter of which plugins are present rather than which branch was cut. Adding a module does not require touching the host.
Keeping the development loop fast
A plugin architecture only pays off if working inside a plugin still feels like working on a normal app. Webpack dev middleware and hot middleware are wired through the host so a developer gets hot reload across the plugin boundary instead of a full rebuild on every change.
Where it landed
- Operator-specific module sets without forking the application
- Modules developed and released independently of the host
- Hot reload preserved across the plugin boundary
Specification
- Architecture
- My role
- Core
- Sector