Show Calendar model lineage
Standardizes venue-specific showtimes and film metadata, merges both branches across cinemas, and joins them into mart_calendar_shows for the application calendar.

System Architecture
An overview of this application’s AWS production platform and scheduled data pipeline, with a closer look at the design decisions and core technologies behind them.
This deployment view shows the public web request path, the scheduled runtime that keeps the application’s data current, and the AWS services shared by both these workloads.
This data-flow view opens the scheduled pipeline itself: collection writes artifacts to S3, a pre-load observability gate validates them, and approved data proceeds through database loading and dbt modeling before being served by the frontend.
03 — Inside the Modeling Layer
The dbt project separates source normalization, reusable intermediate logic, and frontend-facing marts. The lineage diagrams below show how venue, film, and critic-review data converge to power the application’s calendar and review dashboard.
Standardizes venue-specific showtimes and film metadata, merges both branches across cinemas, and joins them into mart_calendar_shows for the application calendar.

Transforms critic reviews from multiple publications into a comparative-browsing dataset, producing mart_review_dashboard for the application's review dashboard.

Beyond the lineage shown here, schema tests and custom data tests enforce key integrity assumptions across the dbt project.
04 — Architecture Decisions
These decisions define how the pipeline passes data between stages, protects production tables from unhealthy inputs, maintains a consistent current-state warehouse, and transforms source-aligned records into application-facing datasets.
Scraping, observability, and ingestion exchange data through timestamped artifacts behind a shared storage interface. This preserves diagnostic evidence, makes each run inspectable, and allows stages to be rerun independently.
Inventory and quality reports evaluate the latest artifacts before ingestion. Critical gate violations stop the refresh so that unhealthy scrape outputs do not replace trusted production data.
Each successful run of the pipeline replaces the scrape-derived core tables with the latest validated datasets, matching the application’s need for a consistent view of the current cinema slate.
Ingestion keeps tables largely source-aligned, while dbt owns standardization, joins, deduplication, aggregation, and frontend-facing marts. Semantic logic therefore remains explicit, modular, and testable.
05 — Implementation Stack
The application combines a TypeScript frontend, a Python data pipeline, PostgreSQL and dbt for relational modeling, and managed AWS services for execution, storage, routing, security, and observability.
Presents screening and review data through a responsive, interactive browser interface.
Collects source data, normalizes scrape outputs, and loads validated artifacts into relational tables.
Preserves pipeline artifacts and transforms source-aligned tables into application-facing datasets.
Runs, schedules, secures, routes, and monitors the application's production workloads.