Created: Fri 12 Jun 2026 22:04:24 CEST Updated: Fri 12 Jun 2026 22:04:24 CEST - Initial document Document Version: 1.0 - Living overview of Plings-iOS flows and capability status Security Classification: Internal Technical Documentation Target Audience: iOS Developer, Product Owner Author: Paul Wisén


Plings-iOS — App Flows & Capabilities

The native iOS app implements a focused slice of the Plings system. The full requirements catalogue lives in the use-case catalogue; this document maps what the app actually does today, what is web-only, and what is future work.

Foundational principle — how identifiers and objects relate: see Identifier–Object Lifecycle.


Flow Map

flowchart TD A([App opens]) --> B[Scanner — home screen\ncontinuous QR + one-tap NFC] B --> C{Scan tag} C --> D[resolveIdentifier] D -->|Known tag| E[Object view] D -->|Unknown tag| F{Choice} E --> G[Move object] E --> H[Set normal location] G --> I{Pick destination} I --> J[Scan destination tag] I --> K[Pick from list] J --> L[Drag-to-place\nIN / ON / LEFT_OF / RIGHT_OF\nABOVE / UNDER / NEXT_TO / ATTACHED_TO] K --> L L --> M[Enqueue write-behind] H --> N[Set NORMAL_IN] N --> M F --> O[Create new object] F --> P[Link to existing object] P --> Q[Search / browse objects] Q --> R[Confirm selection] R --> M O --> S[Fill object details] S --> M M --> T([Done — background sync]) T -->|Terminal failure| U[[Needs-attention queue]]

Capability Table

Capability Use case iOS app Web Notes
Scan tag (QR/NFC) → resolve UC-401 scan-first home screen
Create object from unknown tag UC-201 tag pre-assigned
Assign tag to existing object UC-401 (Tag existing) ✅ (new) this feature
Show known object UC-401 cache-first, relationships read-only
Move object / placement UC-303 drag-to-place picker
Set normal location UC-305 NORMAL_IN
Search objects UC-402 ✅ (in assign flow) ⚠️ flat list + hierarchy browse
Inventory audit / misplacement UC-305 ⚠️ future
Batch create / process unfinished UC-501/502 ⚠️ future (“unprocessed” status)
Sets / functional relationships (create) ❌ (read-only) v1.1, API mutations missing
Tag transfer / unassign / roles future
Collections, bulk actions, ownership transfer UC-503/504/204 ⚠️ web/future

Architecture Note

The iOS app uses a write-behind queue and a read cache to ensure responsiveness regardless of network conditions.

Write-behind queue — captures user actions instantly without blocking the UI. Jobs are enqueued in FIFO order (createObject always before uploadImages for the same object), retried with exponential backoff on transient errors, and surfaced in the needs-attention queue on terminal failure so no work is silently lost.

Read cache with neighbor prefetch — object data is served from a local cache. When the user scans an object, the app prefetches its spatial neighbours in the background; scanning the next object on a shelf feels instant even on a slow connection.

For full design detail, see the Plings-iOS MVP spec.


Future / Not Yet Implemented

The following capabilities are out of scope for the current iOS release and tracked for future iterations: