Verasana
Using Flutter for the creation of a learning management platform that can be used on mobile devices

Verasana - The Learning Management System
Contract Duration: 1 Year
Industry: Education and Development
Project Type: Backend - Server API
Services Provided by DevAngels:
- Server Side API
- Database Architecture
- Creation of a Database migration tool
Tools Used:
- Flutter and Dart Knowledge
- Melos - A Command Line Interface tool to assist in managing mono repos
- Terraform - To create, change and improve infrastructure. Used to set up a continuous deployable cloud environment
- Mux - A video platform that self-optimises the content for beautiful video on ‘every device, every time’
- Widgetbook - To create a widget library to help manage the app widget collection.
- Flutter Gherkin - For testing suite
Team Members:
Who Are Verasana?
Verasana is an Ohio based company launched in 2020, with the goal to create a learning management platform to provide managers and stakeholders with the tools to train employees/trainees and monitor the progress of each individual.
Challenges:
Verasana reached out to DevAngels Ltd to assist in the development of the BackEnd of their white label application - A Learning Management System.
The client’s goal was to develop an application that could be used in a range of industries, to support the onboarding and progress of their trainees.
DevAngels worked closely with the client’s own team of front-end developers, in order to create a seamless user experience of their existing product.
Our main challenge of the project was re-writing the entire backend infrastructure in Dart and Flutter, to migrate away from Firestore and Javascript and over the PostGres SQL. This migration would allow for more overall flexibility of the application, and enable a document object store and a relational database.
Due to the existence of the original database and the front-end of the application already in development, the designs and functionalities had already been conceptualised/fleshed out prior to DevAngels coming onboard.
Some of these functionalities include having different profile types, such as: Managers and Learners.
A manager is required to be able to create, assign and review the progress the learner has made throughout the module or course, as well as set a duration or time frame for this to be completed.
A learner would be assigned a module or course and be able to submit content of various formats, be it written, image or video files.
Users, regardless of their role, would need to have the capability to send and receive messages. For example, a manager and a learner would be able to directly communicate with each other through the built in messaging system.
Solution:
As our primary role on this project was the backend development of the Database architecture, we began incrementally re-writing the original code in Flutter and Dart. Alongside this we began migration from Firestore to PostGres SQL to give more flexibility and provide a document object store and a relational database. This enabled us to build the API’s more efficiently and effectively.
One of the core functions required for this application is sharing of media, which presents the challenge of video files displaying on different devices with varying resolution and format capabilities. In order for us to navigate this obstacle and allow users to create video content that would be able to display on every device whilst maintaining decent quality - we used Mux. Mux is an API used by developers to build and encode video content, to handle the video files the learners would be uploading. In doing so, the content created would self-optimise for any device it is displayed on.
The main function of the application is to allow the creation and monitoring of modules and the progress learners are making. When creating a module the manager is able to set certain specifications, such as the duration.
Using Firebase Authentication DevAngels were able to authenticate users and secure their uploads.
DevAngels created a database migration tool that would allow maintenance of the database over time.
Continuous integration, using Terraform to set up a continuous deployable cloud environment, enabled any bugs or inconsistencies within the application to be located and resolved quickly and efficiently, to get necessary updates swiftly to the users.
Results/Impact:
DevAngels provided an incremental re-write of the backend code in Flutter and Dart, the impact of which is the frontend of the application running more efficiently. This has created a far more enjoyable and effective user experience.
The product is currently in use by the client and their customers.
References:
Verasana - https://www.verasana.com/for-the-enterprise
Links:
Verasana Facebook - https://www.facebook.com/getverasana
Verasana Twitter - https://twitter.com/getverasana
Verasana Linkedin - https://www.linkedin.com/company/verasana
