Offline queue
PratikYedek mobile is a consumption shell (ADR-027). It does not run backups, so offline behaviour is limited to the actions you can take from the phone: approvals, device management, and viewing the most recent dashboard snapshot.
What works offline
| Action | Offline? |
|---|---|
| View last cached dashboard | ✅ Yes (last 24h cache) |
| View job list (last sync) | ✅ Yes |
| Approve restore / deletion | 🟡 Queued, sent when online |
| Trigger a backup | ❌ Desktop only |
| View live job progress | ❌ Requires connection |
How the queue works
- When you tap an action while offline, the request is stored in a local SQLite queue with a unique idempotency key.
- A status banner appears: "Queued — will be sent when online."
- When the phone reconnects, the queue worker flushes pending requests one by one, oldest first.
- If the server rejects a request (e.g. it was already approved from desktop), the queue worker marks it resolved-elsewhere and removes it.
Conflict resolution
If two devices act on the same approval at the same time, the server uses last-write-wins on approved_at. The losing device sees a banner: "This approval was completed from another device."
Privacy
The queue stores only request payloads — no master password, no key material, no backup contents. The queue file is encrypted at rest with a device-bound key.

