Glossary
Words that mean something specific in this project.
| Term | Meaning |
|---|---|
| Book | A separate set of accounts and money, like “Personal” or “Household”. Money never moves between books. A user can have several. |
| Shared book | A book with several members (owner, editor, viewer). In the database, not in the MVP’s screens. |
| Account | Where money sits: cash, checking, savings, investment, credit card, loan, money lent, other asset, other liability. One currency each. |
| Transaction | What the user sees: type, date, category, payee, note. |
| Entry | The money part of a transaction: a signed amount on one account. An expense has one entry, a transfer has two. |
| Minor units | Money stored as integers in the currency’s smallest unit: USD 12.34 is 1234, VND 50,000 is 50000 (VND has 0 decimals). Never floats. |
| Liability | An account where money is owed. Its balance is negative: a credit card with $450 owed is -45000. |
| Net worth | The sum of a book’s account balances in the book’s currency, except accounts left out with in_net_worth. |
| Opening balance | A transaction type that sets an account’s starting balance. |
| Adjustment | A transaction type that reconciles an account to a statement. |
| Transfer category | A category kind that only labels transfers (“Tiết kiệm”, “Trả nợ”). Never counts as spending. |
| Contact / person | Someone you lend to or borrow from, per book. Only a name and a note. |
| Starter categories | Categories created in the user’s language when a book is made (unless unticked). |
| RLS | Postgres row-level security. Every query only sees the books the signed-in user belongs to. |
app.user_id |
The Postgres setting the API sets per request (set_config(..., true)) so RLS knows who’s asking. |
| Role vs login | Migrations create roles (app_user, fx_updater…). The server creates logins in them (api_login) with passwords it makes on first start. |
| Purge | The daily job that deletes an account for good 30 days after it was closed. |
PURGE_LOG |
A file outside the database listing purged ids, so a restored backup can be purged again. |
dev (branch) |
Collects features for the next release. main is what was released; a version tag makes the release. |
| Instance | One running copy of MSaving: one docker-compose.yml, its database and its users, on the operator’s machine. Instances share nothing. |
| Operator | Whoever runs an instance (installs it, keeps it updated and backed up). Usually also its admin. |
| Admin | The account made with the setup code; invites people, resets passwords, changes server settings and updates. |
| Setup code | Printed in the server’s log while it has no admin; proves you installed it. |
| Invite | A one-use code (XXXX-XXXX), link or QR code from the admin that lets one person create an account. |
| Session token | What a client sends as Authorization: Bearer after signing in; the database keeps only its hash. |
/v1/instance |
What a server says about itself before sign-in: name, versions, sign-up mode, whether setup is needed. |
| OXR | Open Exchange Rates: optional, with the operator’s own key. The default rate source needs no key. |
| Recovery code | One of ten one-time codes that replace the authenticator’s code once, if the phone is lost. |
| Updater | The optional helper container that lets the admin update the server from the web app; it alone can reach Docker. |
| Project owner | Makes the product and technical decisions and owns the accounts (GitHub, Cloudflare). |