Application engineering / browser storage

Offline service notes

A local field-service application with a Node/SQLite API and an IndexedDB client. Notes and queued operations are committed in one browser transaction. The interface shows pending changes, server confirmations, rejected writes, and conflicting versions.

15/15 API checks passed in this run. A separate browser run passed 16/16 IndexedDB checks and completed save/sync and two-workspace conflict resolution against the running server.

Service notes interface showing a confirmed inspection note for the synthetic AHU-014 visit
Recorded browser workflow: the local note was accepted as server version 2.

What was implemented

The client stores notes, operations, and conflict history in IndexedDB. A draft save and its outgoing operation share a transaction. Unsent edits coalesce; once an operation has been attempted, its identity and payload remain fixed for retry. Each server write checks the technician's current assignment, compares the base version, and stores the update and response in a single SQLite transaction.

A response can be lost after a commit. Retrying the same operation returns its recorded outcome without another version increment. If another technician has already changed the record, the client retains both versions for review. Choosing the server copy archives the local draft; keeping a reviewed draft creates a new operation against the displayed server version.

Executed verification

Check groupResultMethod
HTTP API and database15/15 passedReal local HTTP requests and temporary SQLite databases
Browser storage16/16 passedReal IndexedDB transactions with injected protocol responses
Application interfaceSave/sync and conflict resolution passedObserved in the managed Chrome preview against the running Node API
Offline page reload13 synthetic worker-source checks passedActual worker source with modeled lifecycle, CacheStorage and network. Chrome secure-context registration is not claimed.

The API suite covers response loss and replay, reused operation IDs, two-device version conflicts, reviewed resolution, stale conflict replays, revoked assignments, expired tokens, roles, malformed requests, and cross-origin rejection. Browser and API tests are separate; the browser harness uses simulated transport responses rather than claiming end-to-end network faults.

Run locally

node server.mjs
# Visit http://localhost:8787
node verify.mjs

No npm installation is needed. Open the application's browser storage checks to rerun the IndexedDB suite and download its results. Localhost is a secure browser context, which also permits service-worker testing. The executed substitute for the HTTP preview limitation is in the extended verification report.

Limits

This is a localhost-only demonstration with synthetic visits and three public fixture identities. It has no production identity provider, encrypted browser database, photo attachments, automatic background sync, or hosted data-retention service. Its supported deployment is a local Node service; the remote deployment assessment is theoretical. The API uses SQLite, not PostgreSQL. Cached records can be cleared or evicted by the browser; export or sync records that need to be retained. The service-worker shell has executed synthetic lifecycle and offline-navigation evidence. The provided HTTP preview cannot establish secure-context browser installation. Snapshot, restore and theoretical deployment runs are included.

Runtime: Node v24.22.1, SQLite 3.53.4. API record generated 2026-10-27T23:45:26.585Z.

Verification JSON · API test log · Browser observation · Run instructions