Security & storage

Security at a glance

Private by account, clear about the limits. The summary first; the full detail follows.

Account-scoped access
Database rules limit reads to your own ledger; every write is checked against your account and the latest revision.
Not end-to-end encrypted
Cloud administrators retain database access. “Private” means access controls, not zero-knowledge storage.
Local copy on your device
A validated copy is kept in browser storage for offline viewing, unencrypted by the app. Use a trusted device.
Bitcoin kept separate
Its own account ledger and backup. No wallet connection, private keys, transfers or trades.
Exports are yours
CSV and JSON files contain your full records. Store and share them carefully.
Delete anytime
Settings → Account removes your account and its cloud ledgers. Details

An account-controlled cloud ledger

Track My Stack uses Supabase for sign-in and metals cloud ledger storage. Database rules restrict normal signed-in reads to the metals ledger belonging to that account. Cloud ledger updates are checked against the account identity and the current document revision, so a stale device cannot silently overwrite a newer saved record.

Cloud project administrators retain database access. The app is not end-to-end encrypted or zero-knowledge. “Private” describes account access controls; it does not mean that the operator or infrastructure provider is technically unable to access stored records.

A local copy on your device

The app saves a validated metals ledger copy in browser storage for offline viewing. This copy is not encrypted by the app. Anyone who controls your device or browser profile may be able to inspect the records and session information.

Use a trusted device and protect it with your device’s own lock and security controls. Sign-out attempts to clear the account’s local metals ledger cache and private in-memory state. If the app reports a local clearing error, clear this site’s storage in the browser as well.

The privacy screen is only a viewing barrier. Hiding balances or using a privacy-screen PIN does not encrypt data or replace account authentication.

Bitcoin has a separate account ledger

Manual Bitcoin purchases and sales sync through an account-owned ledger, separate from metals. The server checks the signed-in account and the ledger revision before accepting a change. If another device has changed the records, the app asks you to load that version before retrying. Unverified or offline changes are blocked.

The browser caches confirmed records for viewing. Bitcoin goals and checkpoints remain device-local. Neither the cloud ledger nor browser storage is end-to-end encrypted; use a trusted browser profile. Older browser-only records require an explicit review and sync action.

Keep a separate Bitcoin JSON backup; a metals JSON backup does not contain Bitcoin records. “My Wallet” is a recordkeeping view: the app does not connect to a wallet, hold private keys, transfer Bitcoin or execute trades.

Connection and service boundaries

The production site uses HTTPS. Hosting is provided through Cloudflare; authentication and the cloud database use Supabase. Public metals data comes from Gold API, while Bitcoin quotes and candles come from Coinbase through the site’s market endpoint. Market requests do not include your purchase or sale records. The signed-in app may also load fonts from Google’s font service and display featured story images from allowlisted publisher image services. News links open the original publisher’s site.

Use account access controls together with a trusted device and regular backups. Read the privacy page for more about the services involved, including website analytics.

Exports are private documents

CSV and JSON files can include product records, financial amounts, notes and other details you entered. They are not protected by the on-screen privacy mode. Keep them somewhere you control and review them before sharing. A local backup is separate from the cloud ledger.

Deleting your account

In Settings → Account, expand Delete account and cloud ledger, then choose Delete my account. The form requires you to type DELETE. The server verifies the signed-in account and uses that verified identity as the deletion target.

Confirmed deletion removes that account and its active metals and Bitcoin cloud ledgers, including metals ledger attachments and account-linked server alerts. The app then signs out and attempts to clear that account’s local copy in this browser. It keeps the local copy when server deletion cannot be confirmed.

Downloaded exports, copies on other devices, provider backups and separately submitted contact messages are outside this account-deletion flow. See the privacy page for those limits.

Report a security concern

Track My Stack is maintained as an independent project. Use the contact form and select “Security concern” to reach the project maintainer. Describe the issue and the steps to reproduce it without including passwords, account tokens or a copy of your ledger.

A report is not permission to access another person’s account, alter someone else’s records or disrupt the service.