# dkhamsing/open-source-ios-apps architecture

> Architecture diagram of the GitHub repository dkhamsing/open-source-ios-apps, 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/dkhamsing/open-source-ios-apps
- Repository: https://github.com/dkhamsing/open-source-ios-apps

## Overview

This repository is a collaboratively maintained catalog of open-source Apple-platform apps. The principal workflow is contributors updating the catalog data, which is documented as the source for the generated README users browse. The README lists apps across Apple platforms and many categories. The tree also shows Ruby utilities for maintaining catalog metadata, history, links, licenses, and GitHub state; without their source, their exact call relationships are unclear, so they are shown as separate capabilities rather than an invented pipeline.

Main entry points: [`contents.json`](https://github.com/dkhamsing/open-source-ios-apps/blob/master/contents.json) (Catalog data), [`.github/osia_convert.rb`](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_convert.rb) (Catalog conversion), [`.github/osia_update_github.rb`](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_github.rb) (GitHub updates), [`README.md`](https://github.com/dkhamsing/open-source-ios-apps/blob/master/README.md) (Browseable catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["App catalog"]
  node_catalog_data[("Catalog data<br/>[contents.json]")]
  node_generated_catalog["Browseable catalog<br/>[README.md]"]
end

subgraph group_contribution["Contributions"]
  node_contribution_guidance["Contribution guidance<br/>[CONTRIBUTING.md]"]
end

subgraph group_maintenance["Catalog maintenance"]
  node_category_list["Category listing"]
  node_conversion["Catalog conversion<br/>[osia_convert.rb]"]
  node_history_read["History lookup"]
  node_history_update["History update"]
  node_history_check["History checks"]
  node_license_read["License lookup<br/>[osia_get_lic.rb]"]
  node_license_update["License update<br/>[osia_update_lic.rb]"]
  node_links_read["Link lookup<br/>[osia_get_links.rb]"]
  node_screenshots_check["Screenshot checks"]
  node_category_check["Category checks"]
  node_github_update["GitHub updates"]
end

node_contributors(("Contributors"))
node_github(("GitHub"))

node_contributors -->|"consults"| node_contribution_guidance
node_contributors -->|"contributes"| node_catalog_data
node_catalog_data -->|"provides data"| node_conversion
node_conversion -->|"generates"| node_generated_catalog
node_github_update -.->|"updates"| node_github

click node_catalog_data "https://github.com/dkhamsing/open-source-ios-apps/blob/master/contents.json"
click node_generated_catalog "https://github.com/dkhamsing/open-source-ios-apps/blob/master/README.md"
click node_contribution_guidance "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/CONTRIBUTING.md"
click node_category_list "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_category_list.rb"
click node_conversion "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_convert.rb"
click node_history_read "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_history.rb"
click node_history_update "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_history.rb"
click node_history_check "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_history_missing.rb"
click node_license_read "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_lic.rb"
click node_license_update "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_lic.rb"
click node_links_read "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_links.rb"
click node_screenshots_check "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_screenshots_missing.rb"
click node_category_check "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_validate_categories.rb"
click node_github_update "https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_github.rb"

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_catalog_data,node_generated_catalog toneBlue
class node_contribution_guidance toneAmber
class node_category_list,node_conversion,node_history_read,node_history_update,node_history_check,node_license_read,node_license_update,node_links_read,node_screenshots_check,node_category_check,node_github_update toneMint
class node_contributors,node_github toneIndigo
```

## Components

### App catalog

- [Catalog data](https://github.com/dkhamsing/open-source-ios-apps/blob/master/contents.json): `contents.json`
- [Browseable catalog](https://github.com/dkhamsing/open-source-ios-apps/blob/master/README.md): `README.md`

### Contributions

- [Contribution guidance](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/CONTRIBUTING.md): `.github/CONTRIBUTING.md`

### Catalog maintenance

- [Category listing](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_category_list.rb): `.github/osia_category_list.rb`
- [Catalog conversion](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_convert.rb): `.github/osia_convert.rb`
- [History lookup](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_history.rb): `.github/osia_get_history.rb`
- [History update](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_history.rb): `.github/osia_update_history.rb`
- [History checks](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_history_missing.rb): `.github/osia_history_missing.rb`
- [License lookup](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_lic.rb): `.github/osia_get_lic.rb`
- [License update](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_lic.rb): `.github/osia_update_lic.rb`
- [Link lookup](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_get_links.rb): `.github/osia_get_links.rb`
- [Screenshot checks](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_screenshots_missing.rb): `.github/osia_screenshots_missing.rb`
- [Category checks](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_validate_categories.rb): `.github/osia_validate_categories.rb`
- [GitHub updates](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/osia_update_github.rb): `.github/osia_update_github.rb`

### Other components

- **Contributors**
- **GitHub**

## Connections

- Contributors → Contribution guidance: consults
- Contributors → Catalog data: contributes
- Catalog data → Catalog conversion: provides data
- Catalog conversion → Browseable catalog: generates
- GitHub updates → GitHub: updates
