Emcee has a frontend and backend application. This describes more about this architecture.

The frontend application of Emcee is a single-page JavaScript web application. In short, it is a ReactJS/Webpack application, but in practice it uses a number of other libraries, notably Redux. The React Redux Starter Kit is a good reference for how the frontend application is built up. The design of the frontend application uses mainly Bootstrap and Font Awesome, but it's originally based on a theme called "Solid". Webpack facilitates code splitting, so that the application can be loaded efficiently from the web server.

The backend application is designed as a micro-services application. It runs in Amazon AWS, and has Nginx in front, for load balancing and passing you through to the right sub-system. One sub-system is the web server that has the static assets of the frontend application. Other sub-systems take care of functional domains like events, organizations, services and templates. These are built as Java applications, specifically Spring Boot applications. Some essential Java libraries in use are Spring, Hibernate, and Quartz. Each functional domain stores its tables in a PostgreSQL database. Sub-systems are designed to communicate using messaging.

Before the beta period, some rudimentary automated tests were added using a risk-based approach. At the end of the beta period there will be:

  • Full unit test coverage
  • Integration tests covering the REST API
  • Selenium tests covering basic workflows of the frontend application