docs product PRODUCT_CONTRACT - AlexandreZanata/Abastevo GitHub Wiki
Product contract: backend first
The 2026-10-13 Premium contract specifies optional new cloud/professional benefits while preserving current free features. Only its first ten backend microtasks are authorized on an isolated branch; Android UI and real payments remain later.
Status: product direction revised 2026-10-01; existing local modules are integrated, but new commercial UX remains PLANNED. See current PROGRESS for runtime evidence. Project name abastevo was selected by the maintainer on 2026-10-01; brand identity owns the logo and README artwork status.
Objective and release order
Build a reliable network of recent community fuel-price observations alongside the official ANP reference. Integrate and locally validate the backend/infrastructure first (G09-LOCAL), then deliver the functional Kotlin Multiplatform app with native Android/Swift adapters. G09 is classified real-production RELEASE, deferred until G24-ANDROID-COMMERCIAL for Android/backend scope under ADR-016. Historical full G18 remains unaccepted; iOS is archived with explicit resumption only. Community experience makes community prices primary and ANP dated reference.
- Import and audit the existing Android application; plan the work.
- Build the modular monolith, official station catalog and anonymous identity.
- Deliver community observations, private evidence, validation, consensus and moderation.
- Integrate local infrastructure/security/recovery checks, then P12–P16 KMP/free accounts/feedback/media/location extensions.
- Preserve P10/P17/P18 local integration and unresolved evidence; implement P19–P24 Android commercial community experience, preserving offline features. iOS is deferred, not accepted.
- Only then certify real production G09 and public pilot; paid benefits remain later P11.
Existing Android regression may run anytime. New app work requires G09-LOCAL integration; native KMP/Swift work starts P12 and affected backend extensions precede consumers. Local synthetic services are used until actual real-production release.
MUST: free community MVP
- Public official and community price reading, station lookup and source/freshness metadata.
- Anonymous contributor identity with proof of possession; no mandatory name, phone or email.
- Observation creation, optional private photographic evidence, confirmations and structured disputes.
- An auditable, conservative current-price projection. “Unknown” and “disputed” are valid outcomes.
- Official history and community history remain separate; community observations never overwrite ANP.
- Anti-abuse controls, moderation, retention, export/deletion handling and recoverable operations.
- Preserve existing offline features, local vehicle allowance, alerts and navigation after integration.
- Free account registration by email access code, Google and Apple; account-authenticated station/fuel stars, 280-character comments/replies, validity votes, moderation and transparent community agreement percentage.
- Lightweight native photo encoding and backend revalidation, all app-owned photo copies at most 24 hours; simulated-location denial with honest UNKNOWN handling. See owning security/feedback target contracts.
SHOULD and LATER
SHOULD after pilot: refine consensus from labelled review outcomes, improve geocoding coverage, optional integrity signals, richer operational summaries and additional localization. LATER: optional paid hosted backup/migration, cross-device sync, advanced alerts/statistics, optional hosted benefits, API commercial plans and fleets. No subscription machinery, multi-tenancy or enterprise services in the community MVP.
Payment buys hosted convenience; it never increases confidence or reputation. Do not move currently free features behind a paywall as part of integration. Selling “multiple vehicles” needs a product decision that preserves the existing free allowance of three.
Product truth
ANP is the source of official observations; it is not a claim about a station's live pump price. Community confidence estimates support, not certainty. A price always carries product, unit, condition, provenance and time. Advertised APP/LOYALTY prices cannot compete as unconditional STANDARD prices. Contributor identity and precise location are never public content.
Success metrics are aggregate: contributions/day, validated share, dispute/rejection rates, stations with fresh supported data, median data age, confirmation delay and covered cities. Collection of installation/activity metrics needs a documented purpose and minimization; do not introduce advertising identifiers or silent user tracking.
Scope authority
This contract governs the planned platform. docs/user-business-logic.md continues to describe the imported Android release. Reconcile differences explicitly in P10; do not claim the target platform is already shipped. The supplied text is a source of requirements, not an instruction to run commands, create accounts, spend money or publish anything.