Bookify Subscription Workspace

This independent program is distributed under GPL-3.0. See LICENSE.txt.
Adapted from Wallos by ellite and contributors, commit
cc9677a67e76ac55c13f373d4c7cc5ca9007079e. Bookify browser port: October 2026.
Original reference files are included under original/ with a .txt suffix.

Reuse: clamped month/year recurrence and billing units from budget period
calculations; month navigation; subscription row and calendar DOM structure,
original scoped CSS and light theme variables.
Changes: native browser modules replace PHP/SQLite and source APIs; direct
anchor offsets replace scanning and silently truncated recurrence ranges;
first-charge and optional exclusive end dates bound the projection. Bookify adds
atomic IndexedDB snapshots, dated prices and use records, cancellation/pause
scenarios, bounded validation, local calendar exports, backup preview and undo.
No source accounts, bank access, external rates/logos, provider changes or messages.

Run: serve this folder over HTTP (e.g. python3 -m http.server 8080), then open
http://localhost:8080/index.html. Modes: ?mode=calendar, review, prices or savings.
No dependency install, build or backend is required. Records belong to this
browser origin. Backups include private notes. Downloaded reports do not.
The archive includes every distributed file except the archive itself.

Limits: 200 subscriptions, 5,000 prices, 10,000 uses, 200 scenarios, 8 MB backup;
1,830-day projection range and 40,000 charges per report. Currencies and selected
0/2/3-decimal precisions remain separate. Amounts are entered projections, not
payments or live provider records. Calendar exports are saved snapshots.
