# waddelljmw/coinshelftest architecture

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

- Interactive diagram: https://gitdiagram.com/waddelljmw/coinshelftest
- Repository: https://github.com/waddelljmw/coinshelftest

## Overview

Coin Cabinet is a private, phone-first coin inventory app. Collectors record coins and photos, organize them into albums and storage locations, track wants and sales, and review value, melt, and gain; they can also export, back up, or share selected data. The graph preserves the README’s major capabilities and the sampled persistence behavior. Several feature modules were not excerpted, so their connections are shown only where the README documents the workflow; implementation details beyond the excerpts are not inferred.

Main entry points: [`app.js`](https://github.com/waddelljmw/coinshelftest/blob/main/app.js) (App runtime), [`values.js`](https://github.com/waddelljmw/coinshelftest/blob/main/values.js) (Value calculations), [`albums.js`](https://github.com/waddelljmw/coinshelftest/blob/main/albums.js) (Album building), [`coinform.js`](https://github.com/waddelljmw/coinshelftest/blob/main/coinform.js) (Coin entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Collection management"]
  node_coinform["Coin entry<br/>[coinform.js]"]
  node_albums["Album building<br/>[albums.js]"]
  node_storage["Boxes and locations<br/>[boxes.js]"]
  node_wants["Want lists<br/>[wants.js]"]
  node_filters["Collection filters<br/>[filters.js]"]
end

subgraph group_reference["Coin reference"]
  node_catalogdata["Coin type data<br/>[data.js]"]
  node_albumcatalog["Album catalog<br/>[albums.js]"]
  node_bookfacts["Date and mint facts<br/>[bookfacts.js]"]
  node_pricebook["Red Book prices<br/>[pricebook.js]"]
  node_modernprices["Modern prices"]
end

subgraph group_valuation["Values and sales"]
  node_values["Value calculations<br/>[values.js]"]
  node_pricing["Metal pricing<br/>[pricing.js]"]
  node_selling["Sales tracking<br/>[selling.js]"]
  node_salesreport["Sales reports<br/>[salesreport.js]"]
end

subgraph group_sharing["Reports and data"]
  node_insurance["Insurance report<br/>[report.js]"]
  node_sheets["Spreadsheet exchange<br/>[sheets.js]"]
  node_snapshot["View-only snapshot<br/>[snapshot.js]"]
  node_backup["Backup and restore<br/>[backup.js]"]
end

subgraph group_runtime["App and persistence"]
  node_app["App runtime<br/>[app.js]"]
  node_views["Collection views<br/>[views.js]"]
  node_localstore[("Browser storage<br/>[local.js]")]
end

node_collector(("Collector"))

node_collector -->|"uses"| node_app
node_app -->|"records coins"| node_coinform
node_coinform -->|"fills coin details"| node_catalogdata
node_collector -->|"builds albums"| node_albums
node_albums -->|"looks up albums"| node_albumcatalog
node_albums -->|"builds date spots"| node_bookfacts
node_collector -->|"organizes coins"| node_storage
node_collector -->|"tracks wants"| node_wants
node_collector -->|"records sales"| node_selling
node_app -->|"shows collection"| node_views
node_views -.->|"filters coins"| node_filters
node_collector -->|"reviews values"| node_values
node_values -.->|"uses book values"| node_pricebook
node_values -.->|"uses modern values"| node_modernprices
node_values -->|"calculates melt"| node_pricing
node_collector -->|"reviews sales"| node_salesreport
node_collector -->|"creates report"| node_insurance
node_collector -->|"exchanges data"| node_sheets
node_collector -->|"shares snapshot"| node_snapshot
node_collector -->|"backs up data"| node_backup
node_app -->|"writes records"| node_localstore
node_app -->|"deletes records"| node_localstore

click node_app "https://github.com/waddelljmw/coinshelftest/blob/main/app.js"
click node_coinform "https://github.com/waddelljmw/coinshelftest/blob/main/coinform.js"
click node_catalogdata "https://github.com/waddelljmw/coinshelftest/blob/main/catalog/data.js"
click node_albums "https://github.com/waddelljmw/coinshelftest/blob/main/albums.js"
click node_albumcatalog "https://github.com/waddelljmw/coinshelftest/blob/main/catalog/albums.js"
click node_bookfacts "https://github.com/waddelljmw/coinshelftest/blob/main/catalog/bookfacts.js"
click node_storage "https://github.com/waddelljmw/coinshelftest/blob/main/boxes.js"
click node_wants "https://github.com/waddelljmw/coinshelftest/blob/main/wants.js"
click node_filters "https://github.com/waddelljmw/coinshelftest/blob/main/filters.js"
click node_values "https://github.com/waddelljmw/coinshelftest/blob/main/values.js"
click node_pricebook "https://github.com/waddelljmw/coinshelftest/blob/main/catalog/pricebook.js"
click node_modernprices "https://github.com/waddelljmw/coinshelftest/blob/main/catalog/pricebook-modern.js"
click node_pricing "https://github.com/waddelljmw/coinshelftest/blob/main/pricing.js"
click node_selling "https://github.com/waddelljmw/coinshelftest/blob/main/selling.js"
click node_salesreport "https://github.com/waddelljmw/coinshelftest/blob/main/salesreport.js"
click node_views "https://github.com/waddelljmw/coinshelftest/blob/main/views.js"
click node_insurance "https://github.com/waddelljmw/coinshelftest/blob/main/report.js"
click node_sheets "https://github.com/waddelljmw/coinshelftest/blob/main/sheets.js"
click node_snapshot "https://github.com/waddelljmw/coinshelftest/blob/main/snapshot.js"
click node_backup "https://github.com/waddelljmw/coinshelftest/blob/main/backup.js"
click node_localstore "https://github.com/waddelljmw/coinshelftest/blob/main/local.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_coinform,node_albums,node_storage,node_wants,node_filters toneBlue
class node_catalogdata,node_albumcatalog,node_bookfacts,node_pricebook,node_modernprices toneAmber
class node_values,node_pricing,node_selling,node_salesreport toneMint
class node_insurance,node_sheets,node_snapshot,node_backup toneRose
class node_app,node_views,node_localstore,node_collector toneIndigo
```

## Components

### Collection management

- [Coin entry](https://github.com/waddelljmw/coinshelftest/blob/main/coinform.js): `coinform.js`
- [Album building](https://github.com/waddelljmw/coinshelftest/blob/main/albums.js): `albums.js`
- [Boxes and locations](https://github.com/waddelljmw/coinshelftest/blob/main/boxes.js): `boxes.js`
- [Want lists](https://github.com/waddelljmw/coinshelftest/blob/main/wants.js): `wants.js`
- [Collection filters](https://github.com/waddelljmw/coinshelftest/blob/main/filters.js): `filters.js`

### Coin reference

- [Coin type data](https://github.com/waddelljmw/coinshelftest/blob/main/catalog/data.js): `catalog/data.js`
- [Album catalog](https://github.com/waddelljmw/coinshelftest/blob/main/catalog/albums.js): `catalog/albums.js`
- [Date and mint facts](https://github.com/waddelljmw/coinshelftest/blob/main/catalog/bookfacts.js): `catalog/bookfacts.js`
- [Red Book prices](https://github.com/waddelljmw/coinshelftest/blob/main/catalog/pricebook.js): `catalog/pricebook.js`
- [Modern prices](https://github.com/waddelljmw/coinshelftest/blob/main/catalog/pricebook-modern.js): `catalog/pricebook-modern.js`

### Values and sales

- [Value calculations](https://github.com/waddelljmw/coinshelftest/blob/main/values.js): `values.js`
- [Metal pricing](https://github.com/waddelljmw/coinshelftest/blob/main/pricing.js): `pricing.js`
- [Sales tracking](https://github.com/waddelljmw/coinshelftest/blob/main/selling.js): `selling.js`
- [Sales reports](https://github.com/waddelljmw/coinshelftest/blob/main/salesreport.js): `salesreport.js`

### Reports and data

- [Insurance report](https://github.com/waddelljmw/coinshelftest/blob/main/report.js): `report.js`
- [Spreadsheet exchange](https://github.com/waddelljmw/coinshelftest/blob/main/sheets.js): `sheets.js`
- [View-only snapshot](https://github.com/waddelljmw/coinshelftest/blob/main/snapshot.js): `snapshot.js`
- [Backup and restore](https://github.com/waddelljmw/coinshelftest/blob/main/backup.js): `backup.js`

### App and persistence

- [App runtime](https://github.com/waddelljmw/coinshelftest/blob/main/app.js): `app.js`
- [Collection views](https://github.com/waddelljmw/coinshelftest/blob/main/views.js): `views.js`
- [Browser storage](https://github.com/waddelljmw/coinshelftest/blob/main/local.js): `local.js`

### Other components

- **Collector**

## Connections

- Collector → App runtime: uses (evidence: `README.md`)
- App runtime → Coin entry: records coins (evidence: `README.md`)
- Coin entry → Coin type data: fills coin details (evidence: `README.md`)
- Collector → Album building: builds albums (evidence: `README.md`)
- Album building → Album catalog: looks up albums (evidence: `README.md`)
- Album building → Date and mint facts: builds date spots (evidence: `catalog/bookfacts.js`)
- Collector → Boxes and locations: organizes coins (evidence: `README.md`)
- Collector → Want lists: tracks wants (evidence: `README.md`)
- Collector → Sales tracking: records sales (evidence: `README.md`)
- App runtime → Collection views: shows collection (evidence: `README.md`)
- Collection views → Collection filters: filters coins
- Collector → Value calculations: reviews values (evidence: `README.md`)
- Value calculations → Red Book prices: uses book values
- Value calculations → Modern prices: uses modern values
- Value calculations → Metal pricing: calculates melt (evidence: `README.md`)
- Collector → Sales reports: reviews sales (evidence: `README.md`)
- Collector → Insurance report: creates report (evidence: `README.md`)
- Collector → Spreadsheet exchange: exchanges data (evidence: `README.md`)
- Collector → View-only snapshot: shares snapshot (evidence: `README.md`)
- Collector → Backup and restore: backs up data (evidence: `README.md`)
- App runtime → Browser storage: writes records (evidence: `app.js`)
- App runtime → Browser storage: deletes records (evidence: `app.js`)
