Technical Requirements
We knew we needed the basic building blocks of most applications: A database to persist data, a scalable back-end that can be adjusted to match usage, and a front-end that was flexible, modern, responsive, intuitive, and easy to use.
We chose to use Symfony as our framework for building the API for the back end. Symfony shares a lot in common with the Drupal CMS with which we are very familiar, but it allows us to focus development effort and server resources toward the only part we needed - the business logic to facilitate communication between the front-end and database.
On the front end, we chose to use the Next.js framework, built on the popular and familiar React.js infrastructure. Next.js provided the developer experience and tooling needed to build out a large site with a large hierarchy of pages, but also provided configurable server-side rendering, which would give us a lot of options when it comes to tuning the performance of the site.
Most training content is in the form of videos, so we needed a robust and reliable way to save and stream these videos on a variety of devices. We knew it would be most cost-effective to leverage a robust, proven service to handle this functionality. We evaluated many prominent providers and ultimately selected Wistia because of its customizable video playing experience. Customization is particularly important for this site as the videos needed to be interactive, prompting input from the user during playback that determined the content best suited to each user.
For sending email, we chose to use Sendgrid, which we have used on most of our projects. And for SMS delivery, we chose Twilio for its developer support and overall reputation in the industry.