# whoisarte/quarrel architecture

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

- Interactive diagram: https://gitdiagram.com/whoisarte/quarrel
- Repository: https://github.com/whoisarte/quarrel

## Overview

Quarrel is a UIKit raffle-registration app: a user views 100 numbered entries, assigns an entry to a person, records payment, and sees its paid, partially paid, or unpaid status. The README identifies MVVM, Firestore-backed number data, and UserDefaults for local values. The supplied tree contains no Quarrel application source, so application paths and finer-grained call ownership cannot be verified; those nodes use null paths and edges reflect only documented responsibilities.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Raffle screens"]
  node_screens["UIKit screens"]
  node_number_grid["100-number grid"]
end

subgraph group_domain["Registration data"]
  node_view_model["MVVM view model"]
  node_number_records["Number records"]
  node_payment_status["Payment status"]
end

subgraph group_persistence["Data persistence"]
  node_firestore[("Firestore")]
  node_user_defaults[("UserDefaults")]
end

node_user(("Raffle organizer"))

node_user -->|"uses"| node_screens
node_screens -->|"shows"| node_number_grid
node_screens -->|"presents"| node_view_model
node_view_model -->|"builds and modifies"| node_number_records
node_view_model -->|"fetches and saves"| node_firestore
node_view_model -->|"saves local values"| node_user_defaults
node_number_records -->|"determines"| node_payment_status
node_number_grid -->|"displays colors"| node_payment_status

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_screens,node_number_grid toneBlue
class node_view_model,node_number_records,node_payment_status toneAmber
class node_firestore,node_user_defaults toneMint
class node_user toneIndigo
```

## Components

### Raffle screens

- **UIKit screens**
- **100-number grid**

### Registration data

- **MVVM view model**
- **Number records**
- **Payment status**

### Data persistence

- **Firestore**
- **UserDefaults**

### Other components

- **Raffle organizer**

## Connections

- Raffle organizer → UIKit screens: uses
- UIKit screens → 100-number grid: shows
- UIKit screens → MVVM view model: presents
- MVVM view model → Number records: builds and modifies
- MVVM view model → Firestore: fetches and saves
- MVVM view model → UserDefaults: saves local values
- Number records → Payment status: determines
- 100-number grid → Payment status: displays colors
