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.

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 group | Result | Method |
|---|---|---|
| HTTP API and database | 15/15 passed | Real local HTTP requests and temporary SQLite databases |
| Browser storage | 16/16 passed | Real IndexedDB transactions with injected protocol responses |
| Application interface | Save/sync and conflict resolution passed | Observed in the managed Chrome preview against the running Node API |
| Offline page reload | 13 synthetic worker-source checks passed | Actual 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.
- Assigned visit is cached
- Note and outbox commit together
- Aborted transaction leaves neither partial update
- Committed draft survives closing and reopening the database
- Two unsent saves coalesce into one operation
- Attempted operation is immutable when a new edit is saved
- Lost connection preserves an attempted operation for replay
- Confirmation removes the outbox item and records server version
- Old acknowledgement does not overwrite a newer local draft
- Conflict preserves both the local draft and server record
- Choosing the server copy archives the local draft
- Reviewed local copy receives a new operation against the shown version
- Revoked access keeps an exportable rejected draft
- Expired session is visible and retry remains possible
- Refreshing assignments cannot overwrite a pending draft
- Two isolated device databases resolve a version conflict
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