Use the owner's Google Sheet as the only backend
Avoiding a server means the family keeps ownership of its data, can open or back up the sheet directly, and the product carries no hosting cost or data-retention liability.
A Bangla-language gift ledger for family events that keeps the record in the owner's own Google Sheet, works offline through a local IndexedDB copy, and lets relatives write to the same ledger by scanning a QR code.

Bangladeshi families track wedding, aqiqah, and birthday gifts in paper notebooks that are hard to search, easy to lose, and impossible for several relatives to update at once, while generic apps store the family's financial records on a third-party server and ignore Bangla numerals and lakh formatting.
The ledger must live in the owner's Google Drive with no application server or database, so the app may request only the drive.file scope and never see the rest of the Drive.
Gift entry happens at crowded events with unreliable connectivity, so writes must land locally first and reach the sheet later without duplicating rows.
Several family members edit the same sheet from different phones, so the sync rule has to be simple, predictable, and safe when two devices change the same row.
The sheet remains a spreadsheet that people may edit by hand, so the app must detect header changes and stop syncing instead of corrupting data.
The whole interface, including numerals, dates, currency, and validation errors, must read naturally in Bangla rather than relying on browser defaults in English.
A TanStack Start single-page PWA keeps a per-ledger Dexie database as the working copy, and a sync engine pulls, merges, and pushes rows against a three-tab Google Sheet whose columns are derived from Zod schemas.
Zod schemas for events, people, and gifts define both form validation and the exact column order of the sheet, with every record carrying updatedAt, updatedBy, and a soft-delete marker.
Each ledger gets its own Dexie IndexedDB database; a single repository module is the only write path, and live queries feed the pages so edits appear instantly across tabs.
A pull, merge, save, push cycle runs after writes, on an interval, and when the device comes back online, resolving conflicts by last-write-wins on updatedAt and guarding against duplicate appends.
Typed Drive, Sheets, Picker, and Identity adapters sit behind one interface with a localStorage mock, so the complete workflow runs and is tested without credentials.
Owners share a QR link that grants Drive permission on the sheet; members join through the link or Picker, and any event or the whole ledger exports to Excel or a print page.
Avoiding a server means the family keeps ownership of its data, can open or back up the sheet directly, and the product carries no hosting cost or data-retention liability.
Dexie holds the working copy so entries never block on the network; the navbar reports synced, syncing, offline with a pending count, or needs attention.
Family ledgers rarely see simultaneous edits of the same row, so a simple, explainable rule beat a merge system; deleted rows stay in the sheet with a deletedAt timestamp.
Only the schema's leading columns must match, so hand-added columns on the right are tolerated, while a renamed header halts sync with a clear Bangla banner instead of writing bad data.
Account chooser, Drive, Picker, and Sheets mocks make the entire product testable in a browser without an OAuth client and let two profiles rehearse the sharing flow.

Share your challenge, scope, and timeline to start a focused conversation.