Commercial model
IndicaView is a hosted SaaS web application. There is nothing to install and nothing to self-host — the product is reached over the network.
Its future commercial model meters usage in credits. The model is decided. The economics are not: there is no plan, no price, no credit cost, no currency and no payment provider, and nothing in the product invents one.
What happens when metering is switched on
The seams are already in place, so turning metering on is a configuration change rather than a rewrite:
| Piece | Where | State |
|---|---|---|
| Commercial configuration | app/js/brand/product-config.js | The canonical place: model, status, currency, plans, checkout, billing |
| Credit balance | profiles.credits_balance on the account profile | Column reserved; nullable; nothing populates it |
| Credit accessor | app/js/commercial/credits.js | Reports “unavailable” today; reads the balance once a server reports one |
| Billing page | — | Does not exist yet |
| Purchase history | — | Named in the configuration, disabled, no source |
Two things are deliberately absent, and stay absent until they are decided:
- A price. No plan, no tier, no credit cost, no currency. Publishing one before it is agreed would be publishing a commercial offer.
- Client-side metering. A browser cannot be trusted to report its own consumption, so the balance has to be written server-side. That is why the accessor reads a balance and never computes one.
Accounts and credits
An account is optional today: the chart, the optimizer and the analysis workspace are all reachable as a guest with no session at all. See Authentication.
When metering is switched on, the account is where the credit balance and billing details will live. Until then it manages a profile and a security tab — nothing more, and nothing less.
For developers
The full detail — the configuration reference, the accessor’s contract, the
database seam and the checklist a billing feature has to satisfy — is in
docs/commercial-model.md in the repository. The build fails if a price-like
value appears in the commercial configuration, so the “not decided yet” state
cannot drift silently into a published offer.