# empty-developer/calculator-ios-app-swiftui architecture

> Architecture diagram of the GitHub repository empty-developer/calculator-ios-app-swiftui, 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/empty-developer/calculator-ios-app-swiftui
- Repository: https://github.com/empty-developer/calculator-ios-app-swiftui

## Overview

This is a small SwiftUI calculator. The main workflow is button input in the calculator view, dispatch to the observable view model, calculation and state updates there, then reactive display of the result and expression. The README also documents adaptive button sizing and custom Orbitron styling. The sampled source supports the app’s state injection and view-model behavior; the resource asset contents and unsampled implementation details are not mapped.

Main entry points: [`Calculator/Calculator/View/Calculator.swift`](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/View/Calculator.swift) (Calculator view), [`Calculator/Calculator/ViewModel/ViewModelCalculator.swift`](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/ViewModel/ViewModelCalculator.swift) (Calculator state), [`Calculator/Calculator/Application/CalculatorApp.swift`](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Application/CalculatorApp.swift) (App entry), [`Calculator/Calculator/Extension/ExtensionFont.swift`](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Extension/ExtensionFont.swift) (Font styling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interface"]
  node_app["App entry"]
  node_view["Calculator view<br/>[Calculator.swift]"]
end

subgraph group_logic["Calculator logic"]
  node_viewmodel["Calculator state"]
end

subgraph group_presentation["Presentation models"]
  node_symbols["Button symbols<br/>[ModelSymbols.swift]"]
  node_operations["Operation types"]
  node_font["Font styling"]
  node_fonttypes["Font names<br/>[ModelFont.swift]"]
end

node_user(("User"))

node_app -->|"creates and injects"| node_viewmodel
node_app -->|"presents"| node_view
node_user -->|"taps buttons"| node_view
node_view -->|"dispatches taps"| node_viewmodel
node_view -->|"reads published state"| node_viewmodel
node_viewmodel -->|"uses button cases"| node_symbols
node_viewmodel -->|"tracks operation"| node_operations
node_view -->|"renders labels and colors"| node_symbols
node_view -->|"applies font modifier"| node_font
node_font -->|"selects font name"| node_fonttypes

click node_app "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Application/CalculatorApp.swift"
click node_view "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/View/Calculator.swift"
click node_viewmodel "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/ViewModel/ViewModelCalculator.swift"
click node_symbols "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelSymbols.swift"
click node_operations "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelOperation.swift"
click node_font "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Extension/ExtensionFont.swift"
click node_fonttypes "https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelFont.swift"

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_app,node_view,node_user toneBlue
class node_viewmodel toneAmber
class node_symbols,node_operations,node_font,node_fonttypes toneMint
```

## Components

### User interface

- [App entry](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Application/CalculatorApp.swift): `Calculator/Calculator/Application/CalculatorApp.swift`
- [Calculator view](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/View/Calculator.swift): `Calculator/Calculator/View/Calculator.swift`

### Calculator logic

- [Calculator state](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/ViewModel/ViewModelCalculator.swift): `Calculator/Calculator/ViewModel/ViewModelCalculator.swift`

### Presentation models

- [Button symbols](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelSymbols.swift): `Calculator/Calculator/Model/ModelSymbols.swift`
- [Operation types](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelOperation.swift): `Calculator/Calculator/Model/ModelOperation.swift`
- [Font styling](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Extension/ExtensionFont.swift): `Calculator/Calculator/Extension/ExtensionFont.swift`
- [Font names](https://github.com/empty-developer/calculator-ios-app-swiftui/blob/main/Calculator/Calculator/Model/ModelFont.swift): `Calculator/Calculator/Model/ModelFont.swift`

### Other components

- **User**

## Connections

- App entry → Calculator state: creates and injects
- App entry → Calculator view: presents
- User → Calculator view: taps buttons
- Calculator view → Calculator state: dispatches taps
- Calculator view → Calculator state: reads published state
- Calculator state → Button symbols: uses button cases
- Calculator state → Operation types: tracks operation
- Calculator view → Button symbols: renders labels and colors
- Calculator view → Font styling: applies font modifier
- Font styling → Font names: selects font name
