# mostlyadequate/mostly-adequate-guide architecture

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

- Interactive diagram: https://gitdiagram.com/mostlyadequate/mostly-adequate-guide
- Repository: https://github.com/mostlyadequate/mostly-adequate-guide

## Overview

This repository is a functional-programming learning guide, with chapter exercises and a small companion JavaScript support library. Learners work through chapter exercises; the README documents both running exercises and installing the support package. A sampled chapter also contains a browser demo that fetches Flickr photos and renders them. The graph focuses on these runtime learning components; the exercise test harness and book-generation tooling are omitted. Relationships for chapter groups follow the README, while the demo’s calls are visible in its source.

Main entry points: [`exercises/ch06/main.js`](https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/exercises/ch06/main.js) (Photo Demo), [`exercises/ch04`](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch04) (Chapters 4–6), [`exercises/ch08`](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch08) (Chapters 8–12), [`support/index.js`](https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/support/index.js) (FP Library)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fundamentals["Fundamentals"]
  node_early["Chapters 4–6"]
  node_early5["Chapter 5"]
  node_demo["Photo Demo<br/>[main.js]"]
end

subgraph group_abstractions["Functional Abstractions"]
  node_later["Chapters 8–12"]
  node_ch09["Chapter 9"]
  node_ch10["Chapter 10"]
  node_ch11["Chapter 11"]
  node_ch12["Chapter 12"]
end

subgraph group_runtime["Support Runtime"]
  node_exercise_support["Exercise Support<br/>[support.js]"]
  node_fp_library["FP Library<br/>[index.js]"]
end

node_learner(("Learner"))
node_flickr["Flickr API"]
node_browser["Browser DOM"]

node_learner -->|"practices"| node_early
node_learner -->|"practices"| node_later
node_learner -->|"installs"| node_fp_library
node_demo -->|"fetches JSON"| node_flickr
node_demo -->|"renders images"| node_browser

click node_early "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch04"
click node_early5 "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch05"
click node_demo "https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/exercises/ch06/main.js"
click node_later "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch08"
click node_ch09 "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch09"
click node_ch10 "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch10"
click node_ch11 "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch11"
click node_ch12 "https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch12"
click node_exercise_support "https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/exercises/support.js"
click node_fp_library "https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/support/index.js"

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_early,node_early5,node_demo,node_browser toneBlue
class node_later,node_ch09,node_ch10,node_ch11,node_ch12 toneAmber
class node_exercise_support,node_fp_library,node_flickr toneMint
class node_learner toneIndigo
```

## Components

### Fundamentals

- [Chapters 4–6](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch04): `exercises/ch04`
- [Chapter 5](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch05): `exercises/ch05`
- [Photo Demo](https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/exercises/ch06/main.js): `exercises/ch06/main.js`

### Functional Abstractions

- [Chapters 8–12](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch08): `exercises/ch08`
- [Chapter 9](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch09): `exercises/ch09`
- [Chapter 10](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch10): `exercises/ch10`
- [Chapter 11](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch11): `exercises/ch11`
- [Chapter 12](https://github.com/mostlyadequate/mostly-adequate-guide/tree/master/exercises/ch12): `exercises/ch12`

### Support Runtime

- [Exercise Support](https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/exercises/support.js): `exercises/support.js`
- [FP Library](https://github.com/mostlyadequate/mostly-adequate-guide/blob/master/support/index.js): `support/index.js`

### Other components

- **Learner**
- **Flickr API**
- **Browser DOM**

## Connections

- Learner → Chapters 4–6: practices (evidence: `README.md`)
- Learner → Chapters 8–12: practices (evidence: `README.md`)
- Learner → FP Library: installs (evidence: `README.md`)
- Photo Demo → Flickr API: fetches JSON (evidence: `exercises/ch06/main.js`)
- Photo Demo → Browser DOM: renders images (evidence: `exercises/ch06/main.js`)
