# zardasht-2018/zip-wifi-qr-decoder architecture

> Architecture diagram of the GitHub repository zardasht-2018/zip-wifi-qr-decoder, 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/zardasht-2018/zip-wifi-qr-decoder
- Repository: https://github.com/zardasht-2018/zip-wifi-qr-decoder

## Overview

ZIP QR is a bilingual, browser-local Wi-Fi QR decoder PWA. Users scan with a camera or upload an image, decode and parse the QR payload, review network details, and optionally save scans for local history or copy/export results. Settings and history support Kurdish Sorani and English; the PWA also provides offline caching and update behavior. The production workflow is documented around `src/templates/runtime.js`; service-level call wiring is not shown in the excerpts, so uncertain links are dashed.

Main entry points: [`ZIP-WIFI-QR-DECODER-GITHUB/src/templates/runtime.js`](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/runtime.js) (App Runtime), [`ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts`](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts) (Camera Control), [`ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts`](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts) (Scan History), [`ZIP-WIFI-QR-DECODER-GITHUB/public/sw.js`](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/public/sw.js) (Service Worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_runtime["App Runtime<br/>[runtime.js]"]
  node_markup["Screen Markup<br/>[body.html]"]
  node_styles["App Styles<br/>[app.css]"]
  node_translations["Translations<br/>[translations.ts]"]
end

subgraph group_decode["Scan and Decode"]
  node_camera["Camera Control<br/>[cameraService.ts]"]
  node_qr["QR Recognition<br/>[qrDecoder.ts]"]
  node_parser["Payload Parser<br/>[wifiParser.ts]"]
end

subgraph group_local["Local Data"]
  node_storage[("Scan History<br/>[storageService.ts]")]
  node_types["Domain Types<br/>[index.ts]"]
  node_export["Copy and Export"]
end

subgraph group_pwa["PWA"]
  node_worker["Service Worker<br/>[sw.js]"]
  node_manifest["PWA Manifest<br/>[manifest.json]"]
end

node_user(("User"))
node_browser["Browser APIs"]

node_user -->|"uses"| node_runtime
node_runtime -.->|"controls scanning"| node_camera
node_runtime -.->|"requests recognition"| node_qr
node_runtime -.->|"parses payloads"| node_parser
node_runtime -.->|"manages history"| node_storage
node_runtime -.->|"copies or exports"| node_export
node_runtime -.->|"localizes interface"| node_translations
node_runtime -->|"renders screens"| node_markup
node_runtime -->|"uses styles"| node_styles
node_camera -->|"requests camera"| node_browser
node_storage -->|"stores locally"| node_browser
node_runtime -->|"checks updates"| node_worker
node_worker -->|"caches assets"| node_browser
node_runtime -->|"provides PWA metadata"| node_manifest

click node_runtime "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/runtime.js"
click node_markup "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/body.html"
click node_styles "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/app.css"
click node_camera "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts"
click node_qr "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/qrDecoder.ts"
click node_parser "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/wifiParser.ts"
click node_storage "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts"
click node_types "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/types/index.ts"
click node_export "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/utils/clipboardAndExport.ts"
click node_translations "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/i18n/translations.ts"
click node_worker "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/public/sw.js"
click node_manifest "https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/public/manifest.json"

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_runtime,node_markup,node_styles,node_translations,node_user,node_browser toneBlue
class node_camera,node_qr,node_parser toneAmber
class node_storage,node_types,node_export toneMint
class node_worker,node_manifest toneRose
```

## Components

### Application

- [App Runtime](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/runtime.js): `ZIP-WIFI-QR-DECODER-GITHUB/src/templates/runtime.js`
- [Screen Markup](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/body.html): `ZIP-WIFI-QR-DECODER-GITHUB/src/templates/body.html`
- [App Styles](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/templates/app.css): `ZIP-WIFI-QR-DECODER-GITHUB/src/templates/app.css`
- [Translations](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/i18n/translations.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/i18n/translations.ts`

### Scan and Decode

- [Camera Control](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts`
- [QR Recognition](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/qrDecoder.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/services/qrDecoder.ts`
- [Payload Parser](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/wifiParser.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/services/wifiParser.ts`

### Local Data

- [Scan History](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts`
- [Domain Types](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/types/index.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/types/index.ts`
- [Copy and Export](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/src/utils/clipboardAndExport.ts): `ZIP-WIFI-QR-DECODER-GITHUB/src/utils/clipboardAndExport.ts`

### PWA

- [Service Worker](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/public/sw.js): `ZIP-WIFI-QR-DECODER-GITHUB/public/sw.js`
- [PWA Manifest](https://github.com/zardasht-2018/zip-wifi-qr-decoder/blob/main/ZIP-WIFI-QR-DECODER-GITHUB/public/manifest.json): `ZIP-WIFI-QR-DECODER-GITHUB/public/manifest.json`

### Other components

- **User**
- **Browser APIs**

## Connections

- User → App Runtime: uses (evidence: `README.md`)
- App Runtime → Camera Control: controls scanning
- App Runtime → QR Recognition: requests recognition
- App Runtime → Payload Parser: parses payloads
- App Runtime → Scan History: manages history
- App Runtime → Copy and Export: copies or exports
- App Runtime → Translations: localizes interface
- App Runtime → Screen Markup: renders screens (evidence: `README.md`)
- App Runtime → App Styles: uses styles (evidence: `README.md`)
- Camera Control → Browser APIs: requests camera (evidence: `ZIP-WIFI-QR-DECODER-GITHUB/src/services/cameraService.ts`)
- Scan History → Browser APIs: stores locally (evidence: `ZIP-WIFI-QR-DECODER-GITHUB/src/services/storageService.ts`)
- App Runtime → Service Worker: checks updates (evidence: `README.md`)
- Service Worker → Browser APIs: caches assets (evidence: `README.md`)
- App Runtime → PWA Manifest: provides PWA metadata (evidence: `README.md`)
