Skip to main content

Technical overview

Insight Factory is a stand-alone, .NET 6.0-based system with its own data model and interfaces.

It consists of microservice applications, all of which could be independently scaled and delivered as docker images. It can integrate with the plethora of external systems. Insight Factory can be integrated with Meniga Digital Banking out-of-the-box.

The system main capability is consuming, filtering, transforming and propagating messages.

Technologies used

  • The Insight Factory’s backend is written in C#.
  • The .NET 6.0 is the framework used to run the applications.
  • Entity Framework is an abstraction layer of database layer
  • Database provider is Microsoft SQL.
  • MassTransit is an abstraction layer over message queue layer.
  • Configured message queue layer is RabbitMQ.
  • The frontend is written in JavaScript using React framework.

Solution architecture

Following diagram describes Insight Factory components and their interactions from a Container perspective.

Solution architecture image

Components

  • External Event Consumer - ASP.NET Core application responsible for mapping external events to events supported by Insight Factory System. It provides API for publishing registered custom events.

  • Insight Definition Scheduler - ASP.NET Core application, which triggers scheduled Insight Definitions and calculates their next occurrences. Uses plugins to select users to be used by triggered Scheduled Insights Definitions.

  • Background Jobs Scheduler - ASP.NET Core application, using external mechanisms to schedule generic jobs, which triggers Insight Definition Scheduler

  • Triggering Engine - ASP.NET Core application being a heart of the Insight Factory system. Its main responsibility is to evaluate conditions of active Insight Definitions and generate personalized Insight Messages. Uses plugins to fetch data from external repositories.

  • Bank Admin - ASP.NET Core application, which allows Bank Administrators to manage Insight Definitions. Uses plugins to fetch dictionary values from external data sources.

  • Feed API - ASP.NET Core application, which allows applications to pull and filter Insight Messages from pull channels.

  • Insight Message Dispatcher - ASP.NET Core application capable of pushing rendered Insight Messages to integrated push channels. Each integrated push channel is deployed as an independent application.

  • Meniga Digital Banking Plugin - .NET based plugin deployed inside of other applications. Implements Repositories exposing data from Meniga PFM. Could be replaced by other external data sources provides.

  • Insight Factory Admin UI - React.js web application allowing Bank Admins to manage Insight Definitions via dedicated, user-friendly portal.

info

For more detailed information about each component please see dedicated 'About' section in 'Components' tab. For example: Background Job Scheduler

Databases

  • Scheduler database - stores information about Scheduled Insight Definition occurrences and configuration. Is used by Insight Definition Scheduler component.
  • InsightsFactory database - stores information used for managing definitions (Insight Definitions, channels, content templates, triggering events, alias functions and repositories metadata). Is used by Bank Admin component.
  • InsightFactoryUser database - sharded user database storing Insight Messages and Insight Sources. Is used by Triggering Engine component.
  • Dispatcher database - sharded user database storing rendered Insight Messages with their content to be pushed to specified channels. Is used by Insight Message Dispatcher component.
  • Feed database - sharded user database storing rendered Insight Messages for pull channels. Is used by Feed API component.