# dakar2024/datacollection architecture

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

- Interactive diagram: https://gitdiagram.com/dakar2024/datacollection
- Repository: https://github.com/dakar2024/datacollection

## Overview

This is a Streamlit dashboard for scraping and exploring animal listings from CoinAfrique. The main workflow is user-triggered scraping, saving category CSVs, then selecting cleaned data for visualization or download; users can also browse uncleaned CSVs and open an evaluation form. The excerpts show the scraping, UI, and visualization behavior, but omit the exact CSV save destination and some page details, so those connections are not inferred.

Main entry points: [`tech.py`](https://github.com/dakar2024/datacollection/blob/main/tech.py) (Streamlit dashboard), [`data_clean`](https://github.com/dakar2024/datacollection/tree/main/data_clean) (Cleaned CSVs), [`data_unclean`](https://github.com/dakar2024/datacollection/tree/main/data_unclean) (Uncleaned CSVs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Dashboard"]
  node_dashboard["Streamlit dashboard<br/>[tech.py]"]
end

subgraph group_data["CSV datasets"]
  node_clean_csv["Cleaned CSVs"]
  node_unclean_csv["Uncleaned CSVs"]
end

subgraph group_acquisition["Data acquisition"]
  node_scraper["Listing scraper<br/>[tech.py]"]
end

subgraph group_analysis["Exploration"]
  node_visualizer["Chart generation<br/>[tech.py]"]
end

node_user(("Dashboard user"))
node_coinafrique["CoinAfrique"]
node_kobo["KoboToolbox form"]

node_user -->|"uses"| node_dashboard
node_dashboard -->|"invokes scraping"| node_scraper
node_scraper -->|"requests listings"| node_coinafrique
node_dashboard -->|"reads and downloads"| node_clean_csv
node_dashboard -->|"reads and downloads"| node_unclean_csv
node_dashboard -->|"requests charts"| node_visualizer
node_dashboard -->|"embeds form"| node_kobo

click node_dashboard "https://github.com/dakar2024/datacollection/blob/main/tech.py"
click node_scraper "https://github.com/dakar2024/datacollection/blob/main/tech.py"
click node_clean_csv "https://github.com/dakar2024/datacollection/tree/main/data_clean"
click node_unclean_csv "https://github.com/dakar2024/datacollection/tree/main/data_unclean"
click node_visualizer "https://github.com/dakar2024/datacollection/blob/main/tech.py"

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_dashboard,node_user toneBlue
class node_clean_csv,node_unclean_csv toneAmber
class node_scraper toneMint
class node_visualizer toneRose
class node_coinafrique,node_kobo toneIndigo
```

## Components

### Dashboard

- [Streamlit dashboard](https://github.com/dakar2024/datacollection/blob/main/tech.py): `tech.py`

### CSV datasets

- [Cleaned CSVs](https://github.com/dakar2024/datacollection/tree/main/data_clean): `data_clean`
- [Uncleaned CSVs](https://github.com/dakar2024/datacollection/tree/main/data_unclean): `data_unclean`

### Data acquisition

- [Listing scraper](https://github.com/dakar2024/datacollection/blob/main/tech.py): `tech.py`

### Exploration

- [Chart generation](https://github.com/dakar2024/datacollection/blob/main/tech.py): `tech.py`

### Other components

- **Dashboard user**
- **CoinAfrique**
- **KoboToolbox form**

## Connections

- Dashboard user → Streamlit dashboard: uses
- Streamlit dashboard → Listing scraper: invokes scraping
- Listing scraper → CoinAfrique: requests listings
- Streamlit dashboard → Cleaned CSVs: reads and downloads
- Streamlit dashboard → Uncleaned CSVs: reads and downloads
- Streamlit dashboard → Chart generation: requests charts
- Streamlit dashboard → KoboToolbox form: embeds form
