Skip to content

Technical Overview

The tool at hand does not provide its own data, instead it aggregates data from Handrit.is. In the future, other data sources could be added.

Provided external data, the tool can extract a pre-defined set of information and store it in a database. We currently use an SQLite database, but by design, the tool is independent of the database implementation and can work with any database by simply adding a new database connector that adheres to the defined database interface. The same principal of decoupling by means of dependency inversion should be applied to the data extraction pipeline in the future, to accommodate simple "plug-and-play" addition of further data sources. However, this has not yet been addressed.

The current macro architecture looks as follows:

flowchart BT
    data_source([External Data Source])
    data_extraction[Data Extraction Pipeline]
    db_init[Database Initialization Workflow]
    db_sqlite[(SQLite Database)]
    db_interface>Database Interface]
    data_handler[Runtime Data handler]
    ui((Streamlit User Interface))

    data_extraction --> data_source
    db_init --> data_extraction
    db_init --> db_interface
    db_interface --> db_sqlite
    data_handler --> db_interface
    ui --> data_handler

Arrows indicate direct dependency.