The CommonCore was an internal project i worked on whilst working at TBC Digital as the Technical Director. I found that there was a common set of functionality that was being re-programmed for each project, mainly due to small differences between the projects stopping us from just dropping in a previously created module.
The goal of the CommonCore library was to provide a library of code modules that had no hard external dependencies, be simple for all our development team to use and most importantly be easy enough to extend with new functionality. This was achieved by using interfaces whenever external dependencies were required, providing bridging classes from our framework to the library (framework agnostic modularity) and a configuration driven system so that how the module operated could be controlled by a single module configuration file.
The CommonCore launched with 4 modules:
- Authentication: A full user registration system that provided social login by Facebook, Twitter and Google as well as manual registration and a custom anonymous registration system.
- User Management: All the various user management you would expect along with a basic User search system ready for extending on each project.
- Friend management: A highly configurable friending system that could handle friendship requests, as well as rate limiting.
- Notifications: A hybrid notification system that used an adapter pattern to fan out a single notification to multiple notification pipelines. The system at launch supported Google Cloud Messaging, Apple Push Notifications (production and sandbox adapters could be used at the same time) and an internal notification repository for mirroring notifications in the applications themselves. Adapters for Slack and Twitter have been added since launch without any need for updating the core module itself.
Since its launch, it has been used on many projects, saving hundreds (if not thousands) of hours of development whilst providing clients with a well tested core platform that’s been thoroughly tested. Additional modules have also been added such as Liking, Voting, News, a basic admin CRUD panel and a custom abstracted pagination system that supports cursor based temporal pagination along with basic paged pagination.