# faezlatiff/midas architecture

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

- Interactive diagram: https://gitdiagram.com/faezlatiff/midas
- Repository: https://github.com/faezlatiff/midas

## Overview

Atlas is a collection of four independently invoked Elixir/Hound web scrapers. The user selects a scraper, which drives a browser to a configured site, extracts source-specific venue, post, or review data, and appends JSON-lines output. Burpple handles neighborhood reviews and load-more pagination; Explorest gathers place details and coordinates; Lemon8 gathers article and postal-code details; Google Maps gathers places and their reviews. Each scraper owns its browser interactions and file writes. The README documents Selenium or ChromeDriver as external browser infrastructure; sampled source confirms the Hound calls, but not the internal browser-driver wiring.

Main entry points: [`lib/burpple_hound.ex`](https://github.com/faezlatiff/midas/blob/main/lib/burpple_hound.ex) (Burpple scraper), [`lib/explorest_hound.ex`](https://github.com/faezlatiff/midas/blob/main/lib/explorest_hound.ex) (Explorest scraper), [`lib/lemon8_hound.ex`](https://github.com/faezlatiff/midas/blob/main/lib/lemon8_hound.ex) (Lemon8 scraper), [`lib/gmaps_hound.ex`](https://github.com/faezlatiff/midas/blob/main/lib/gmaps_hound.ex) (Maps scraper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scrapers["Source Scrapers"]
  node_burpple["Burpple scraper<br/>[burpple_hound.ex]"]
  node_explorest["Explorest scraper<br/>[explorest_hound.ex]"]
  node_lemon8["Lemon8 scraper<br/>[lemon8_hound.ex]"]
  node_gmaps["Maps scraper<br/>[gmaps_hound.ex]"]
end

subgraph group_browser["Browser Access"]
  node_hound["Hound browser control"]
  node_webdriver["WebDriver"]
end

subgraph group_outputs["JSON Outputs"]
  node_burpple_json["Burpple JSONL"]
  node_explorest_json["Explorest JSONL"]
  node_lemon8_json["Lemon8 JSONL"]
  node_gmaps_json["Maps JSONL"]
end

node_operator(("Operator"))
node_burpple_site["Burpple"]
node_explorest_site["Explorest"]
node_lemon8_site["Lemon8"]
node_maps_site["Google Maps"]

node_operator -->|"invokes"| node_burpple
node_operator -->|"invokes"| node_explorest
node_operator -->|"invokes"| node_lemon8
node_operator -->|"invokes"| node_gmaps
node_burpple -->|"controls browser"| node_hound
node_explorest -->|"controls browser"| node_hound
node_lemon8 -->|"controls browser"| node_hound
node_gmaps -->|"controls browser"| node_hound
node_hound -.->|"browser commands"| node_webdriver
node_burpple -->|"navigates and reads"| node_burpple_site
node_explorest -->|"navigates and reads"| node_explorest_site
node_lemon8 -->|"navigates and reads"| node_lemon8_site
node_gmaps -->|"navigates and reads"| node_maps_site
node_burpple -->|"appends records"| node_burpple_json
node_explorest -->|"appends records"| node_explorest_json
node_lemon8 -->|"appends records"| node_lemon8_json
node_gmaps -->|"appends records"| node_gmaps_json

click node_burpple "https://github.com/faezlatiff/midas/blob/main/lib/burpple_hound.ex"
click node_explorest "https://github.com/faezlatiff/midas/blob/main/lib/explorest_hound.ex"
click node_lemon8 "https://github.com/faezlatiff/midas/blob/main/lib/lemon8_hound.ex"
click node_gmaps "https://github.com/faezlatiff/midas/blob/main/lib/gmaps_hound.ex"

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_burpple,node_explorest,node_lemon8,node_gmaps toneBlue
class node_hound,node_webdriver toneAmber
class node_burpple_json,node_explorest_json,node_lemon8_json,node_gmaps_json toneMint
class node_operator,node_burpple_site,node_explorest_site,node_lemon8_site,node_maps_site toneIndigo
```

## Components

### Source Scrapers

- [Burpple scraper](https://github.com/faezlatiff/midas/blob/main/lib/burpple_hound.ex): `lib/burpple_hound.ex`
- [Explorest scraper](https://github.com/faezlatiff/midas/blob/main/lib/explorest_hound.ex): `lib/explorest_hound.ex`
- [Lemon8 scraper](https://github.com/faezlatiff/midas/blob/main/lib/lemon8_hound.ex): `lib/lemon8_hound.ex`
- [Maps scraper](https://github.com/faezlatiff/midas/blob/main/lib/gmaps_hound.ex): `lib/gmaps_hound.ex`

### Browser Access

- **Hound browser control**
- **WebDriver**

### JSON Outputs

- **Burpple JSONL**
- **Explorest JSONL**
- **Lemon8 JSONL**
- **Maps JSONL**

### Other components

- **Operator**
- **Burpple**
- **Explorest**
- **Lemon8**
- **Google Maps**

## Connections

- Operator → Burpple scraper: invokes
- Operator → Explorest scraper: invokes
- Operator → Lemon8 scraper: invokes
- Operator → Maps scraper: invokes
- Burpple scraper → Hound browser control: controls browser
- Explorest scraper → Hound browser control: controls browser
- Lemon8 scraper → Hound browser control: controls browser
- Maps scraper → Hound browser control: controls browser
- Hound browser control → WebDriver: browser commands
- Burpple scraper → Burpple: navigates and reads
- Explorest scraper → Explorest: navigates and reads
- Lemon8 scraper → Lemon8: navigates and reads
- Maps scraper → Google Maps: navigates and reads
- Burpple scraper → Burpple JSONL: appends records
- Explorest scraper → Explorest JSONL: appends records
- Lemon8 scraper → Lemon8 JSONL: appends records
- Maps scraper → Maps JSONL: appends records
