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
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:
- Set and functional relationship creation (v1.1) — API mutations are not yet implemented; the app currently renders these relationships as read-only.
- Tag transfer, unassign, and tag roles — reassigning a physical tag from one object to another, or marking a tag as retired, is a future workflow.
- Offline bidirectional sync — the current write-behind queue handles outbound changes; full two-way sync (pulling remote changes while offline) is future work.
- Object-first tagging — creating an object first and assigning a physical tag later (the reverse of the current scan-first flow).
- Batch sessions — processing a set of untagged objects in one session (UC-501/502).