Zen is primarily composed of a handful of microservices:
These services live in the following code repositories:
- cp-zen-platform
- cp-events-service
- cp-badges-service
- cp-salesforce-service
- cp-dojos-service
- cp-users-service
cp-zen-platform contains all the front end AngularJS code, as well as implementing the backend REST API server. The server is written using the Hapi framework. The REST API calls are mostly proxy calls through to Seneca microservices.
The Events service implements all the Events related functionality in Zen. The event data is stored in PostgresSQL.
The Badges service implements all the Badges related functionality in Zen. This service talks to a BadgeKit via the BadgeKit API, all Badge related data is stored in BadgeKit.
The Salesforce service implements all the Salesforce related functionality in Zen. This service talks directly to Salesforce. Salesforce is used internally by the CoderDojo Foundation staff.
The Dojos service implements all the Dojos related functionality in Zen. All dojo related data is stored in PostgresSQL.
The Users service implements all the User related functionality in Zen. All user data is stored in PostgresSQL.
The full list of external services that Zen integrates with is as follows:
- NodeBB - Mentor & Youth Forums
- Google Apps Gmail, reCAPTCHA - auto-creating emails
- Google Maps - Google Maps
- Salesforce - Salesforce
- Intercom - Intercom
- New Relic - New Relic
- CrowdIn - Localization Management Platform
- Mozilla BadgeKit - Open Badges
- MailTrap - Email testing
Zen is deployed on AWS and also uses a plethora of AWS services, none of which are directly used from the code above. How Zen is built & deployed is beyond the scope of this document.