Mobi is evolving from a public mobile architecture reference into a public
platform proof of concept for living documentation.
The long-term target is broader than a mobile sample app. The repository should eventually demonstrate how capability-driven specifications, architecture documentation, and runnable code can stay aligned across mobile, backend, and web-facing surfaces. The mobile app remains the current implementation focus, but it should now be framed as the first serious slice of a larger car-sharing platform.
The reference product is a consumer-facing car-sharing platform operating under simulated but realistic conditions.
That means the system should model real product constraints such as:
- rider location and proximity-based vehicle discovery
- changing fleet availability over time
- stale snapshots and transient network failures
- reservation holds and expirations
- trip lifecycle rules
- range, energy, and readiness signals
The repository does not need real vehicles or production infrastructure to be credible. It does need realistic state transitions, realistic failure modes, and documentation that explains those behaviors clearly.
OpenSpec is the preferred way to describe product capabilities once they are sharp enough to state in behavioral terms.
The intended layering is:
- direction documents explain long-lived project framing and sequencing
- capability backlog entries capture future work that is still being shaped
- OpenSpec specs define durable capability behavior
- OpenSpec changes capture concrete planned modifications to those capabilities
Until a dedicated GitHub project or issue taxonomy is set up, this document can serve as the durable backlog index for future capability exploration.
The current implementation focus stays on the mobile architecture.
That focus should still reinforce the broader platform story:
- capability language should be product-oriented, not module-oriented
- shared Kotlin should own business rules and typed feature state
- Android and iOS should keep native presentation ownership
- shared UI should remain optional and justified feature by feature
- realistic simulation is preferred over toy demo behavior
These items are intentionally sequenced from narrower mobile-facing behavior toward broader platform behavior.
nearby-vehicle-map: show rider location and a refreshable map snapshot of nearby vehicles
vehicle-list-discovery: provide a non-map discovery surface over the same fleet snapshotvehicle-detail-preview: let a rider inspect a selected vehicle before acting on itvehicle-reservation: allow a rider to hold an available vehiclereservation-expiry: model countdown, expiry, and loss of a held vehicletrip-start: begin a trip from an eligible reserved vehicleactive-trip: represent an in-progress trip with realistic state changestrip-end: end a trip under realistic completion rulestrip-history: review completed trips and their outcomes
fleet-availability: simulate and reason about vehicle status changesvehicle-state-simulation: represent readiness, range, and vehicle condition changes over timepricing: calculate trip cost under realistic rulesdriver-readiness: represent account and eligibility requirements before a rider can take certain actionsincident-reporting: capture problems that arise before or during a tripoperations-views: expose platform-facing operational workflows in later surfaces beyond the mobile app
The first capability should stay narrow enough to be explained clearly in docs
and enforced clearly in specs. That is why the current scope begins with
nearby-vehicle-map instead of the broader vehicle-discovery umbrella.
Clustering, rich vehicle details, and reservation behavior are explicitly deferred until the basic map snapshot lifecycle is specified cleanly.