# rbmirc/bmc-chronology architecture

> Architecture diagram of the GitHub repository rbmirc/bmc-chronology, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rbmirc/bmc-chronology
- Repository: https://github.com/rbmirc/bmc-chronology

## Overview

This repository is a Black Mountain College historical-archive data project, not an evident end-user application. Its main workflow is collecting and parsing source material, enriching dated events, and producing chronology or daily-archive datasets. It also maintains distinct faculty/course, local Asheville, world-history, culture, weather, radio, and people-index data. The excerpts show only a few file relationships; other connections are omitted rather than inferred from filenames. No README was provided, and unsampled scripts may have additional inputs or outputs.

Main entry points: [`scripts/enrich_all_events.py`](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_all_events.py) (Culture and event enrichment), [`scripts/process_dreier_to_events.py`](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/process_dreier_to_events.py) (Dreier event processing), [`scripts/enrich_asheville_events.py`](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_asheville_events.py) (Asheville event enrichment), [`scripts/extract_verified_faculty.py`](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/extract_verified_faculty.py) (Faculty and course extraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Source collection"]
  node_dreier_scrape["Dreier scraper"]
  node_dreier_raw[("Dreier documents")]
  node_dreier_process["Dreier event processing"]
  node_dreier_events[("Dreier events<br/>[dreier_events.json]")]
  node_duberman_parse["Duberman parser<br/>[parse_duberman.py]"]
  node_duberman_data[("Duberman extracts")]
end

subgraph group_eventdata["Event research"]
  node_world_enrich["World event enrichment"]
  node_asheville_enrich["Asheville event enrichment"]
  node_event_enrich["Culture and event enrichment"]
  node_national_events[("National events")]
  node_culture_events[("Culture events")]
  node_international_events[("International events")]
  node_weather[("Weather records<br/>[bmc_weather.json]")]
  node_radio[("Radio archive")]
  node_national_news[("National news<br/>[nyt_national.json]")]
  node_culture_news[("Culture news<br/>[nyt_culture.json]")]
end

subgraph group_archive["Chronology archives"]
  node_chronology_data["Precise chronology"]
  node_precise_output[("Precise chronology data")]
  node_chronos["Chronos calendar generator"]
  node_complete_archive["Complete archive generator"]
  node_complete_data[("Complete archive")]
  node_timeline[("BMC timeline<br/>[bmc_timeline.json]")]
end

subgraph group_college["College records"]
  node_yearbook_scrape["Yearbook scraper"]
  node_yearbook_data[("Yearbook records")]
  node_faculty_extract["Faculty and course extraction"]
  node_faculty_courses[("Verified faculty courses")]
  node_people_index[("People index")]
  node_courses_year[("Courses by year")]
  node_year_context[("Yearly context")]
end

node_event_enrich -->|"updates"| node_culture_events
node_event_enrich -->|"loads"| node_precise_output
node_asheville_enrich -->|"loads"| node_national_events
node_dreier_process -->|"normalizes names"| node_people_index
node_faculty_extract -.->|"writes"| node_faculty_courses

click node_dreier_scrape "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/scrape_dreier_collection.py"
click node_dreier_raw "https://github.com/rbmirc/bmc-chronology/blob/main/dreier_collection_raw.json"
click node_dreier_process "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/process_dreier_to_events.py"
click node_dreier_events "https://github.com/rbmirc/bmc-chronology/blob/main/dreier_events.json"
click node_duberman_parse "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/parse_duberman.py"
click node_duberman_data "https://github.com/rbmirc/bmc-chronology/blob/main/duberman_extracted.json"
click node_world_enrich "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_world_events.py"
click node_asheville_enrich "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_asheville_events.py"
click node_event_enrich "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_all_events.py"
click node_national_events "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_national_events.json"
click node_culture_events "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_culture_1933-1957.json"
click node_international_events "https://github.com/rbmirc/bmc-chronology/blob/main/nyt_international.json"
click node_chronology_data "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_precise_chronology.py"
click node_precise_output "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_chronology_precise.json"
click node_chronos "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_chronos.py"
click node_complete_archive "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_complete_archive.py"
click node_complete_data "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_complete_archive.json"
click node_yearbook_scrape "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/scrape_bmcyearbook.py"
click node_yearbook_data "https://github.com/rbmirc/bmc-chronology/blob/main/bmcyearbook_full.json"
click node_faculty_extract "https://github.com/rbmirc/bmc-chronology/blob/main/scripts/extract_verified_faculty.py"
click node_faculty_courses "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_verified_faculty_courses.json"
click node_people_index "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_people_index.json"
click node_courses_year "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_courses_by_year.json"
click node_year_context "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_yearly_context.json"
click node_weather "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_weather.json"
click node_radio "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_radio_archive_1933-1957.json"
click node_timeline "https://github.com/rbmirc/bmc-chronology/blob/main/bmc_timeline.json"
click node_national_news "https://github.com/rbmirc/bmc-chronology/blob/main/nyt_national.json"
click node_culture_news "https://github.com/rbmirc/bmc-chronology/blob/main/nyt_culture.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dreier_scrape,node_dreier_raw,node_dreier_process,node_dreier_events,node_duberman_parse,node_duberman_data toneBlue
class node_world_enrich,node_asheville_enrich,node_event_enrich,node_national_events,node_culture_events,node_international_events,node_weather,node_radio,node_national_news,node_culture_news toneAmber
class node_chronology_data,node_precise_output,node_chronos,node_complete_archive,node_complete_data,node_timeline toneMint
class node_yearbook_scrape,node_yearbook_data,node_faculty_extract,node_faculty_courses,node_people_index,node_courses_year,node_year_context toneRose
```

## Components

### Source collection

- [Dreier scraper](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/scrape_dreier_collection.py): `scripts/scrape_dreier_collection.py`
- [Dreier documents](https://github.com/rbmirc/bmc-chronology/blob/main/dreier_collection_raw.json): `dreier_collection_raw.json`
- [Dreier event processing](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/process_dreier_to_events.py): `scripts/process_dreier_to_events.py`
- [Dreier events](https://github.com/rbmirc/bmc-chronology/blob/main/dreier_events.json): `dreier_events.json`
- [Duberman parser](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/parse_duberman.py): `scripts/parse_duberman.py`
- [Duberman extracts](https://github.com/rbmirc/bmc-chronology/blob/main/duberman_extracted.json): `duberman_extracted.json`

### Event research

- [World event enrichment](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_world_events.py): `scripts/enrich_world_events.py`
- [Asheville event enrichment](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_asheville_events.py): `scripts/enrich_asheville_events.py`
- [Culture and event enrichment](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/enrich_all_events.py): `scripts/enrich_all_events.py`
- [National events](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_national_events.json): `bmc_national_events.json`
- [Culture events](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_culture_1933-1957.json): `bmc_culture_1933-1957.json`
- [International events](https://github.com/rbmirc/bmc-chronology/blob/main/nyt_international.json): `nyt_international.json`
- [Weather records](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_weather.json): `bmc_weather.json`
- [Radio archive](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_radio_archive_1933-1957.json): `bmc_radio_archive_1933-1957.json`
- [National news](https://github.com/rbmirc/bmc-chronology/blob/main/nyt_national.json): `nyt_national.json`
- [Culture news](https://github.com/rbmirc/bmc-chronology/blob/main/nyt_culture.json): `nyt_culture.json`

### Chronology archives

- [Precise chronology](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_precise_chronology.py): `scripts/generate_precise_chronology.py`
- [Precise chronology data](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_chronology_precise.json): `bmc_chronology_precise.json`
- [Chronos calendar generator](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_chronos.py): `scripts/generate_chronos.py`
- [Complete archive generator](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/generate_complete_archive.py): `scripts/generate_complete_archive.py`
- [Complete archive](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_complete_archive.json): `bmc_complete_archive.json`
- [BMC timeline](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_timeline.json): `bmc_timeline.json`

### College records

- [Yearbook scraper](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/scrape_bmcyearbook.py): `scripts/scrape_bmcyearbook.py`
- [Yearbook records](https://github.com/rbmirc/bmc-chronology/blob/main/bmcyearbook_full.json): `bmcyearbook_full.json`
- [Faculty and course extraction](https://github.com/rbmirc/bmc-chronology/blob/main/scripts/extract_verified_faculty.py): `scripts/extract_verified_faculty.py`
- [Verified faculty courses](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_verified_faculty_courses.json): `bmc_verified_faculty_courses.json`
- [People index](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_people_index.json): `bmc_people_index.json`
- [Courses by year](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_courses_by_year.json): `bmc_courses_by_year.json`
- [Yearly context](https://github.com/rbmirc/bmc-chronology/blob/main/bmc_yearly_context.json): `bmc_yearly_context.json`

## Connections

- Culture and event enrichment → Culture events: updates (evidence: `scripts/enrich_all_events.py`)
- Culture and event enrichment → Precise chronology data: loads (evidence: `scripts/enrich_all_events.py`)
- Asheville event enrichment → National events: loads (evidence: `scripts/enrich_asheville_events.py`)
- Dreier event processing → People index: normalizes names (evidence: `scripts/process_dreier_to_events.py`)
- Faculty and course extraction → Verified faculty courses: writes
