Architecture overview
Panorama is a stack, not a single application. This page shows how the components fit together so that the rest of the manual makes sense in context.
The data pipeline
Panorama moves data through a series of layers, from raw source data to finished dashboards:
Data sources Extraction Data lake (AWS) BI / dashboards
------------ ---------- -------------- ---------------
MySQL ┐ ┌─ raw tables (CSV on S3) ┐
MongoDB ├──► panorama-elt ──► ├─ table views (typed) ├──► Amazon QuickSight
Tracking logs │ (Extract & ├─ curated views (joins, │ dashboards
CSV / Excel ┘ Load agent) │ filters, calc fields) ┘ │
Other systems └─ Athena / Glue catalog │
▼
panorama-openedx-backend (LMS)
│
▼
frontend-app-panorama (MFE)
│
▼
End users
Extract and Load.
panorama-eltconnects to each data source, extracts the data in tabular form, and uploads it unmodified to the data lake as CSV files. Keeping the raw data intact means transformations happen later and can be re-run without re-extracting.Raw tables. In the data lake catalog (AWS Glue / Athena), each uploaded table is registered as an external table over the CSV files. All columns are strings at this layer.
Table views. The first transformation layer. For each raw table Panorama creates a view with the same columns but with numeric and date fields cast to proper types, and the literal string
'NULL'replaced with realNULLvalues.Curated views. Further pipeline steps, implemented as SQL views, add joins, filters, and calculated fields. Panorama ships example views for Open edX (enrollments, course access roles, manual enrollment history).
Dashboards. A BI tool (Amazon QuickSight in the standard Panorama setup) reads the curated views and renders dashboards.
In-LMS delivery. For Open edX,
panorama-openedx-backendgenerates signed embed URLs for QuickSight dashboards, andfrontend-app-panoramarenders them to users inside the LMS.
The components
Component |
Repository |
Role |
|---|---|---|
CLI agent that extracts data from the sources and loads it into the data lake, and provides helpers to create the raw tables and the first pipeline layer. |
||
Django app for Open edX that provides the API the MFE calls to obtain dashboard embed URLs, user access, and the running mode. It does not extract or load any data. |
||
Micro-frontend that shows the dashboards to users, served by default at
|
||
Convenience plugin that wires everything together for Open edX: extraction, tracking logs, the backend, and the MFE. |
Note
The extraction side (panorama-elt) and the presentation side
(panorama-openedx-backend + frontend-app-panorama) are independent. The backend and
MFE only need dashboards to exist in your BI tool; they do not care how the data got there.
Likewise the ELT agent has no knowledge of the LMS UI.
Where the AWS pieces live
The standard Panorama data lake uses:
Amazon S3 — stores the raw CSV files (and a separate bucket for Athena query results).
AWS Glue Data Catalog — holds the table and partition metadata.
Amazon Athena — the SQL query engine used to create tables and views and to serve the BI tool.
Amazon QuickSight — the dashboards and embedding layer.
The ELT agent’s data lake setup section covers exactly which resources and permissions are required.