# sullaspqr/pizza.swift architecture

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

- Interactive diagram: https://gitdiagram.com/sullaspqr/pizza.swift
- Repository: https://github.com/sullaspqr/pizza.swift

## Overview

This SwiftUI iOS app lets users browse pizzas and create, inspect, edit, or delete them through a remote REST API. The app launches into a navigation-based list; list cards open the relevant workflows, whose views make their own network requests and decode or encode pizza data. Pizza records are represented by a Codable model. Image URLs are rendered with SwiftUI’s AsyncImage. The excerpts show these direct integrations; no separate persistence or networking layer is present.

Main entry points: [`pizza/PizzaListPage.swift`](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaListPage.swift) (Pizza list), [`pizza/PizzaModPage.swift`](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaModPage.swift) (Edit pizza), [`pizza/PizzaDelPage.swift`](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaDelPage.swift) (Delete pizza), [`pizza/PizzaSinglePage.swift`](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaSinglePage.swift) (Pizza details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry and navigation"]
  node_app_entry["App launch<br/>[pizzaApp.swift]"]
  node_root_view["Root navigation<br/>[ContentView.swift]"]
end

subgraph group_workflows["Pizza workflows"]
  node_pizza_list["Pizza list"]
  node_pizza_create["Create pizza"]
  node_pizza_detail["Pizza details"]
  node_pizza_edit["Edit pizza<br/>[PizzaModPage.swift]"]
  node_pizza_delete["Delete pizza<br/>[PizzaDelPage.swift]"]
end

subgraph group_integration["Remote data and media"]
  node_pizza_model["Pizza model<br/>[Pizza.swift]"]
  node_pizza_api{{"Pizza REST API"}}
  node_image_service{{"Image URLs"}}
end

node_user(("User"))

node_user -->|"launches"| node_app_entry
node_app_entry -->|"opens"| node_root_view
node_root_view -->|"shows"| node_pizza_list
node_user -->|"browses"| node_pizza_list
node_pizza_list -->|"opens create"| node_pizza_create
node_pizza_list -->|"opens details"| node_pizza_detail
node_pizza_list -->|"opens edit"| node_pizza_edit
node_pizza_list -->|"opens delete"| node_pizza_delete
node_pizza_list -->|"GETs list"| node_pizza_api
node_pizza_api -->|"returns pizzas"| node_pizza_list
node_pizza_list -->|"decodes pizzas"| node_pizza_model
node_pizza_create -->|"POSTs pizza"| node_pizza_api
node_pizza_edit -->|"GETs pizza"| node_pizza_api
node_pizza_api -->|"returns pizza"| node_pizza_edit
node_pizza_edit -->|"decodes and encodes"| node_pizza_model
node_pizza_edit -->|"PUTs pizza"| node_pizza_api
node_pizza_detail -->|"GETs pizza"| node_pizza_api
node_pizza_api -->|"returns pizza"| node_pizza_detail
node_pizza_detail -->|"decodes pizza"| node_pizza_model
node_pizza_delete -->|"GETs pizza"| node_pizza_api
node_pizza_api -->|"returns pizza"| node_pizza_delete
node_pizza_delete -->|"decodes pizza"| node_pizza_model
node_pizza_delete -->|"DELETEs pizza"| node_pizza_api
node_pizza_list -->|"loads images"| node_image_service
node_pizza_detail -->|"loads images"| node_image_service
node_pizza_edit -->|"previews images"| node_image_service
node_pizza_delete -->|"shows image"| node_image_service

click node_app_entry "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/pizzaApp.swift"
click node_root_view "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/ContentView.swift"
click node_pizza_list "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaListPage.swift"
click node_pizza_create "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaCreatePage.swift"
click node_pizza_detail "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaSinglePage.swift"
click node_pizza_edit "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaModPage.swift"
click node_pizza_delete "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaDelPage.swift"
click node_pizza_model "https://github.com/sullaspqr/pizza.swift/blob/main/pizza/Pizza.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_entry,node_root_view,node_user toneBlue
class node_pizza_list,node_pizza_create,node_pizza_detail,node_pizza_edit,node_pizza_delete toneAmber
class node_pizza_model,node_pizza_api,node_image_service toneMint
```

## Components

### App entry and navigation

- [App launch](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/pizzaApp.swift): `pizza/pizzaApp.swift`
- [Root navigation](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/ContentView.swift): `pizza/ContentView.swift`

### Pizza workflows

- [Pizza list](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaListPage.swift): `pizza/PizzaListPage.swift`
- [Create pizza](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaCreatePage.swift): `pizza/PizzaCreatePage.swift`
- [Pizza details](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaSinglePage.swift): `pizza/PizzaSinglePage.swift`
- [Edit pizza](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaModPage.swift): `pizza/PizzaModPage.swift`
- [Delete pizza](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/PizzaDelPage.swift): `pizza/PizzaDelPage.swift`

### Remote data and media

- [Pizza model](https://github.com/sullaspqr/pizza.swift/blob/main/pizza/Pizza.swift): `pizza/Pizza.swift`
- **Pizza REST API**
- **Image URLs**

### Other components

- **User**

## Connections

- User → App launch: launches (evidence: `pizza/pizzaApp.swift`)
- App launch → Root navigation: opens (evidence: `pizza/pizzaApp.swift`)
- Root navigation → Pizza list: shows (evidence: `pizza/ContentView.swift`)
- User → Pizza list: browses
- Pizza list → Create pizza: opens create (evidence: `pizza/PizzaListPage.swift`)
- Pizza list → Pizza details: opens details (evidence: `pizza/PizzaListPage.swift`)
- Pizza list → Edit pizza: opens edit (evidence: `pizza/PizzaListPage.swift`)
- Pizza list → Delete pizza: opens delete (evidence: `pizza/PizzaListPage.swift`)
- Pizza list → Pizza REST API: GETs list (evidence: `pizza/PizzaListPage.swift`)
- Pizza REST API → Pizza list: returns pizzas (evidence: `pizza/PizzaListPage.swift`)
- Pizza list → Pizza model: decodes pizzas (evidence: `pizza/PizzaListPage.swift`)
- Create pizza → Pizza REST API: POSTs pizza (evidence: `pizza/PizzaCreatePage.swift`)
- Edit pizza → Pizza REST API: GETs pizza (evidence: `pizza/PizzaModPage.swift`)
- Pizza REST API → Edit pizza: returns pizza (evidence: `pizza/PizzaModPage.swift`)
- Edit pizza → Pizza model: decodes and encodes (evidence: `pizza/PizzaModPage.swift`)
- Edit pizza → Pizza REST API: PUTs pizza (evidence: `pizza/PizzaModPage.swift`)
- Pizza details → Pizza REST API: GETs pizza (evidence: `pizza/PizzaSinglePage.swift`)
- Pizza REST API → Pizza details: returns pizza (evidence: `pizza/PizzaSinglePage.swift`)
- Pizza details → Pizza model: decodes pizza (evidence: `pizza/PizzaSinglePage.swift`)
- Delete pizza → Pizza REST API: GETs pizza (evidence: `pizza/PizzaDelPage.swift`)
- Pizza REST API → Delete pizza: returns pizza (evidence: `pizza/PizzaDelPage.swift`)
- Delete pizza → Pizza model: decodes pizza (evidence: `pizza/PizzaDelPage.swift`)
- Delete pizza → Pizza REST API: DELETEs pizza (evidence: `pizza/PizzaDelPage.swift`)
- Pizza list → Image URLs: loads images (evidence: `pizza/PizzaListPage.swift`)
- Pizza details → Image URLs: loads images (evidence: `pizza/PizzaSinglePage.swift`)
- Edit pizza → Image URLs: previews images (evidence: `pizza/PizzaModPage.swift`)
- Delete pizza → Image URLs: shows image (evidence: `pizza/PizzaDelPage.swift`)
