Skip to content

Technical Architecture

Julian Teh edited this page Nov 16, 2024 · 2 revisions

Technical Architecture

Brief

Flagit is comprised of a few key components:

Dashboard

This is a NextJS Web-app, which acts as the main user view into the data that Flagit collects.

Query API

This is an API around Firebase, which acts as the interface for the database to be accessed by either the Dashboard or the Bot.

Bot

This is a set of Bot implementations which each translate received messages into anonymous data to be cached. There is one implementation for each communication platform we support.

Architecture

Data Flow

As an observability platform, Flagit's data flow is uni-directional. i.e. data flows from the Bot to the Query API to the Dashboard.

Flagit's Data Flow covers a few key flows.

  • Authentication Flow
  • Chat Group Linking Flow

Beyond these initial setup flows, the user has minimal action afforded to them.

  • A Community Admin can Flag a message
  • User engagement metrics are collected automatically

In both of the above cases, the data flows automatically from Bot to Query API to be cached, and the Dashboard can query this as needed.

Nomenclature

  • Flagit User = A Community Manager who has a Flagit Account
  • Flagit User ID = A Flagit Account identifier; an email
  • Flagit Community = A Community which has 1 or more Community Managers, and 0 or more Groups
  • Flagit Community ID = A Community identifier; a UUID
  • Group = A Group on a Platform (e.g. Telegram Group, Discord Server, Whatsapp Community)
  • Group ID = A Group identifier; a UUID
  • Group Admin ID = An administrator of a Group; a Platform User ID
  • Platform = A Platform for Group Social Messaging (e.g. Telegram, Discord, Whatsapp)
  • Platform Type = The name of a Platform; a string (e.g. "Telegram")
  • Platform User ID = A Platform Account identifier; depends on platform (UUID for Telegram)

In practice we will not refer to 'Platform', but to the specific platform in use; e.g. Telegram, Telegram User ID, Telegram Channel, Telegram Group, etc...

Clone this wiki locally