CMS and portal for schools

We built a content management and alumni portal system for independent schools.

We had worked with two independent schools for several years, and although their sites had started out as quite different projects, over time they had started to grow towards each other, each wanting similar features to the other. We were also approached by other schools who were impressed with our work, and they also had very similar requirements.

We decided to build a common platform to drive them all; this would allow us to deliver the users a wider set of functionality while reducing their individual costs.

Initial investigation

We went over the clients' requirements and identified key commonalities between the projects, such as support for complex event diaries,integration between events and corresponding news item, and the need to embed both into CMS pages. Every component across the sites also needed editorial controls, to allow departmental staff to make changes with final sign-off from the communications teams.

Another core area was providing former pupils with a login-based portal to share alumni news, organise reunions and other events, and to help support the schools' fundraising efforts.

Each school had specific variations on these general themes, so we designed a modular extensible system which could be customised for each site, while reusing the underlying common features.


We developed the common functionality in a shared library, and then built on top of that to create new internal projects for our clients. We refined the common platform while adding the necessary customisations for each client site, ensuring feature parity with the original sites we had built. We took this opportunity to work with the clients to introduce new features across the platform.

We wrote migration scripts to automatically convert the clients' existing sites to run on the new platform, and used that to set up internal beta sites during the development process, which allowed the clients to use the site with their latest real-world data.

We then deployed the new platform on an individual client basis, as they as they signed off on their changes. We then provided each client with a copy of their custom project, as well as a license to use the common library for as long as they needed.


By consolidating core functionality in a single library, bugfixes and new features could be rolled out rapidly across multiple projects, with clients seeing reduced development costs for new features that other clients also needed.

However, by retaining a custom project layer on top of the common platform, each project remained completely independent, and we could ensure that each client still had a project which met their exact requirements, even where that differed substantially to other sites running on the common platform.