Contributing to the platform code

DTML platfrom consists of two major components. eLearning website and User Management portal.

DTML was founded with premise that the biggest impact can be made by augmenting school activities with advanced learning technologies such as HTML5 games, Machine learning algorithms and conversational bot.

Therefore, DTML partners with schools and educational institutions to leverage existing facilities and equipment to provide students across the educational platform. Partnering with schools allows us to measure effectiveness of the program, evaluate needs of the students and assess the quality of provided learning materials. The platform provides end-to-end learning, engagement, recording and tracking system enabling both school and students to be successful in delivering the best possible education experience at the places where it needed the most

DTML is multi-modules system which connect together set of components developed on different technology stacks. We did it on purpose to find best suited technology for each module.

High level platform diagram

We strongly believe that education is context aware activity. As such learning in isolation cannot be successful and learning needs to be viewed as a whole. Thus, the core of DTML system is user context. System monitors, learns, predicts and analyses user behavior, deducts learning patterns and developer learning suggestions. The Audit table (aka DTML commit log) is the mechanism of how we made it happen.

As in distributed systems, DTML commit log is a record of transactions. It's used to keep track of what's happening in the system and help with analyzing state of individual actors and entities (school, student, game, etc.) through the time span. Such approach allows to look on user activity in the holistic way and create natural feedback loop which is used in generating user and system context.

Commit log (Audit Table) is on disk log, stored in Azure SQL DB. Events to the commit log are written via NotificaitonManager:INotificaitonManager via Azure service bus events. FunctionName ("AuditProcessor") is responsible for writing events from service bus. Commit log contains 10 days of data. There is a cleanup process which removed old data. The cleanup process is implemented as time-based Azure Functions which removes all stale data

Commit Processors

Commit processors is a set of classes which implement IDataProcessor and responsible for processing data from Commit log.

public interface IDataProcessor 
{ 
Task ProcessData(AuditDbConext dbcontext, IReadOnlyCollection<EventRecord> dataToProcess); 
}

The Data processor is expected to extract data from dataToProcess collection and create time series in the corresponding tables. The key of this architecture is decoupling of data manipulation from the query execution at the run time

Currently there are 8 processes implemented in DTML Platform

Admin Processor: Processes data for administrative use

Game Statistics Processor: Processes statistics about games, game ratings, etc.

KPI Processor: Processes and aggregates common system KPIs

Leader board Processor: Processes data about top players for each activity

Reinforcement Processor: Processes data with the wrong answers by the user

School Data Processor: Processes and aggregates data by school

User Processor: Processes and aggregates data by school. This is the most complex processor we employ

Cleanup Processor: Deletes data in commit log, blobs and errors log tables

Last updated