docs: add MotorSignal product roadmap
This commit is contained in:
parent
0e13422cd1
commit
95e1ddcc72
|
|
@ -0,0 +1,763 @@
|
||||||
|
# MotorSignal Product Roadmap
|
||||||
|
|
||||||
|
**Status:** Planning baseline
|
||||||
|
**Date:** 2026-09-01
|
||||||
|
**Product:** MotorSignal motorcycle telemetry, ride analysis, cloud, and riding platform
|
||||||
|
|
||||||
|
## Vision
|
||||||
|
|
||||||
|
MotorSignal should evolve from a motorcycle telemetry app into a reliable riding platform:
|
||||||
|
|
||||||
|
> Create account → Add motorcycle → Ride → Analyze → Automatically sync → Build riding history → Connect with friends → Plan rides → Ride together.
|
||||||
|
|
||||||
|
The application should remain **offline-first**. Cloud and social features should extend the core riding experience rather than make basic recording dependent on an internet connection.
|
||||||
|
|
||||||
|
## Roadmap Principles
|
||||||
|
|
||||||
|
1. Stabilize existing functionality before adding major new features.
|
||||||
|
2. Design cloud storage and identity early so later social features do not require a backend redesign.
|
||||||
|
3. Keep Free genuinely useful.
|
||||||
|
4. Make Pro valuable through advanced capabilities, cloud convenience, and deeper analysis.
|
||||||
|
5. Treat Google Play purchase state as the authority for paid entitlement.
|
||||||
|
6. Keep user location and ride data private by default.
|
||||||
|
7. Never expose sensitive home/start/end locations unnecessarily.
|
||||||
|
8. Build offline-first synchronization with clear conflict handling.
|
||||||
|
9. Prefer incremental, testable phases over a large rewrite.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 0 — Current Build Stabilization
|
||||||
|
|
||||||
|
**Goal:** Make the existing MotorSignal experience reliable before monetization.
|
||||||
|
|
||||||
|
### Garage
|
||||||
|
|
||||||
|
- [x] Real motorcycle image on main Garage page.
|
||||||
|
- [x] Real motorcycle image during motorcycle creation.
|
||||||
|
- [ ] Replace old render on Technical Details page.
|
||||||
|
- [ ] Replace old render in Evolution detail view.
|
||||||
|
- [ ] Audit every other motorcycle-image location.
|
||||||
|
- [ ] Ensure selected year/make/model remains consistent throughout the UI.
|
||||||
|
- [ ] Verify editing a motorcycle preserves its identity/image.
|
||||||
|
|
||||||
|
### Ride Pipeline
|
||||||
|
|
||||||
|
- [ ] Verify ride recording.
|
||||||
|
- [ ] Verify ride persistence.
|
||||||
|
- [ ] Verify ride history.
|
||||||
|
- [ ] Verify route preview.
|
||||||
|
- [ ] Fix/verify acceleration layer.
|
||||||
|
- [ ] Fix/verify braking layer.
|
||||||
|
- [ ] Verify lean layer.
|
||||||
|
- [ ] Verify ride summary.
|
||||||
|
- [ ] Verify CSV/PDF exports.
|
||||||
|
- [ ] Verify ride processing after app restart.
|
||||||
|
|
||||||
|
### Authentication / Existing Cloud Behavior
|
||||||
|
|
||||||
|
- [ ] Google login → History → select ride → Upload Now.
|
||||||
|
- [ ] Settings → Back up all.
|
||||||
|
- [ ] Verify authentication state consistency.
|
||||||
|
- [ ] Verify logout/login behavior.
|
||||||
|
- [ ] Verify offline operation and later synchronization.
|
||||||
|
|
||||||
|
### Reliability Tests
|
||||||
|
|
||||||
|
- [ ] Screen off.
|
||||||
|
- [ ] App backgrounded.
|
||||||
|
- [ ] Phone locked.
|
||||||
|
- [ ] Incoming call/interruption.
|
||||||
|
- [ ] Bluetooth disconnect/reconnect.
|
||||||
|
- [ ] GPS loss/recovery.
|
||||||
|
- [ ] OBD disconnect/reconnect.
|
||||||
|
- [ ] Low battery.
|
||||||
|
- [ ] Low storage.
|
||||||
|
- [ ] App restart.
|
||||||
|
|
||||||
|
### Exit Criteria
|
||||||
|
|
||||||
|
A user can:
|
||||||
|
|
||||||
|
> Add motorcycle → record ride → stop → view ride → analyze ride → close app → reopen → ride remains available.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 1 — Account & User Identity
|
||||||
|
|
||||||
|
**Goal:** Establish the user identity that all cloud and social features can build upon.
|
||||||
|
|
||||||
|
### Account
|
||||||
|
|
||||||
|
- [ ] User profile model.
|
||||||
|
- [ ] Stable internal user ID.
|
||||||
|
- [ ] Google authentication.
|
||||||
|
- [ ] Persistent sessions.
|
||||||
|
- [ ] Sign out.
|
||||||
|
- [ ] Account deletion.
|
||||||
|
- [ ] Re-authentication where required.
|
||||||
|
- [ ] Data export.
|
||||||
|
|
||||||
|
### Profile
|
||||||
|
|
||||||
|
- [ ] Profile photo.
|
||||||
|
- [ ] Display name.
|
||||||
|
- [ ] Unique username.
|
||||||
|
- [ ] Bio.
|
||||||
|
- [ ] Optional location.
|
||||||
|
- [ ] Riding statistics.
|
||||||
|
- [ ] Public/private profile setting.
|
||||||
|
|
||||||
|
### Privacy
|
||||||
|
|
||||||
|
Add independent visibility controls for:
|
||||||
|
|
||||||
|
- Profile.
|
||||||
|
- Garage.
|
||||||
|
- Ride history.
|
||||||
|
- Statistics.
|
||||||
|
- Location.
|
||||||
|
- Friend requests.
|
||||||
|
|
||||||
|
Do not use the public username as the underlying account identity.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2 — Cloud Data Architecture
|
||||||
|
|
||||||
|
**Goal:** Establish a scalable, secure cloud model without abandoning local storage.
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
|
||||||
|
```text
|
||||||
|
MotorSignal
|
||||||
|
│
|
||||||
|
┌──────────┴──────────┐
|
||||||
|
│ │
|
||||||
|
Local Database Cloud
|
||||||
|
(offline) (Firebase)
|
||||||
|
│ │
|
||||||
|
└──────────┬──────────┘
|
||||||
|
│
|
||||||
|
Sync Engine
|
||||||
|
```
|
||||||
|
|
||||||
|
### Primary Cloud Objects
|
||||||
|
|
||||||
|
```text
|
||||||
|
users/{userId}
|
||||||
|
users/{userId}/motorcycles/{motorcycleId}
|
||||||
|
users/{userId}/rides/{rideId}
|
||||||
|
users/{userId}/trips/{tripId}
|
||||||
|
users/{userId}/events/{eventId}
|
||||||
|
users/{userId}/friends/{friendId}
|
||||||
|
```
|
||||||
|
|
||||||
|
Group rides can later use a dedicated top-level collection if required by query/security requirements.
|
||||||
|
|
||||||
|
### Common Object Metadata
|
||||||
|
|
||||||
|
Every synchronizable object should have a consistent strategy for:
|
||||||
|
|
||||||
|
- Stable ID.
|
||||||
|
- Owner ID.
|
||||||
|
- Created timestamp.
|
||||||
|
- Updated timestamp.
|
||||||
|
- Soft-delete timestamp where appropriate.
|
||||||
|
- Sync state.
|
||||||
|
- Version/conflict metadata where necessary.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3 — Offline-First Sync Engine
|
||||||
|
|
||||||
|
**Goal:** Make cloud synchronization reliable instead of treating backup as a manual upload.
|
||||||
|
|
||||||
|
### Sync States
|
||||||
|
|
||||||
|
- `LOCAL_ONLY`
|
||||||
|
- `PENDING_UPLOAD`
|
||||||
|
- `SYNCED`
|
||||||
|
- `PENDING_DELETE`
|
||||||
|
- `CONFLICT`
|
||||||
|
|
||||||
|
### Required Behavior
|
||||||
|
|
||||||
|
- Record rides without internet.
|
||||||
|
- Queue cloud operations locally.
|
||||||
|
- Automatically synchronize when connectivity returns.
|
||||||
|
- Retry failed operations safely.
|
||||||
|
- Avoid duplicate rides/uploads.
|
||||||
|
- Handle partial synchronization.
|
||||||
|
- Detect conflicts.
|
||||||
|
- Never silently delete local user data.
|
||||||
|
- Show synchronization status to the user.
|
||||||
|
|
||||||
|
### User Experience
|
||||||
|
|
||||||
|
Provide a clear cloud status such as:
|
||||||
|
|
||||||
|
> ☁️ Everything is synced
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
> ☁️ 3 rides waiting to sync
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 4 — Cloud Backup & Restore
|
||||||
|
|
||||||
|
**Goal:** Make a user's MotorSignal history portable across devices.
|
||||||
|
|
||||||
|
### Pro Cloud Features
|
||||||
|
|
||||||
|
- Unlimited ride backup.
|
||||||
|
- Automatic synchronization.
|
||||||
|
- Motorcycle synchronization.
|
||||||
|
- Routes.
|
||||||
|
- Ride statistics.
|
||||||
|
- Reports.
|
||||||
|
- Settings/preferences where appropriate.
|
||||||
|
- Multi-device restore.
|
||||||
|
|
||||||
|
### Settings
|
||||||
|
|
||||||
|
Add a dedicated Cloud Sync area containing:
|
||||||
|
|
||||||
|
- Account identity.
|
||||||
|
- Sync status.
|
||||||
|
- Last successful sync.
|
||||||
|
- Sync Now.
|
||||||
|
- Automatic Sync toggle.
|
||||||
|
- Optional Wi-Fi-only setting.
|
||||||
|
- Restore Data.
|
||||||
|
- Export My Data.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 5 — Monetization Architecture
|
||||||
|
|
||||||
|
**Goal:** Create a durable entitlement system before placing feature gates throughout the application.
|
||||||
|
|
||||||
|
### Entitlements
|
||||||
|
|
||||||
|
Use centralized product/entitlement states:
|
||||||
|
|
||||||
|
- `FREE`
|
||||||
|
- `PRO_MONTHLY`
|
||||||
|
- `PRO_LIFETIME`
|
||||||
|
|
||||||
|
The entitlement layer should expose feature capabilities rather than encourage scattered `isPremium` checks.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
- `canCloudBackup`
|
||||||
|
- `canAdvancedTelemetry`
|
||||||
|
- `canExport`
|
||||||
|
- `canTripPlanning`
|
||||||
|
- `canGroupRides`
|
||||||
|
- `canAdvancedAnalytics`
|
||||||
|
- `canUseMultipleMotorcycles`
|
||||||
|
|
||||||
|
### Rules
|
||||||
|
|
||||||
|
- Google Play purchase state is authoritative for Play purchases.
|
||||||
|
- Firebase account identity must not be the sole source of Pro entitlement.
|
||||||
|
- Local entitlement state may be cached for usability, but must reconcile with authoritative billing state.
|
||||||
|
- Restore must work after reinstall and on another device.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 6 — Google Play Products
|
||||||
|
|
||||||
|
**Goal:** Ship stable Free, Monthly, and Lifetime offerings.
|
||||||
|
|
||||||
|
### Products
|
||||||
|
|
||||||
|
- MotorSignal Pro Monthly — subscription.
|
||||||
|
- MotorSignal Pro Lifetime — non-consumable one-time purchase.
|
||||||
|
|
||||||
|
Do not hard-code prices in the application. Read current product information from Google Play.
|
||||||
|
|
||||||
|
### Required Billing Tests
|
||||||
|
|
||||||
|
- Fresh install.
|
||||||
|
- Free user.
|
||||||
|
- Monthly purchase.
|
||||||
|
- Restore purchase.
|
||||||
|
- Renewal.
|
||||||
|
- Cancellation.
|
||||||
|
- Grace period.
|
||||||
|
- Account hold.
|
||||||
|
- Expiration.
|
||||||
|
- Reinstall.
|
||||||
|
- Second device.
|
||||||
|
- Lifetime purchase.
|
||||||
|
- Lifetime restore.
|
||||||
|
- Already-owned product.
|
||||||
|
- Purchase cancellation.
|
||||||
|
- Billing/network failure.
|
||||||
|
- Play Store unavailable.
|
||||||
|
- Product unavailable.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 7 — Paywall & Pro UX
|
||||||
|
|
||||||
|
**Goal:** Clearly communicate the value of Pro without crippling Free.
|
||||||
|
|
||||||
|
### Paywall
|
||||||
|
|
||||||
|
Present:
|
||||||
|
|
||||||
|
- Cloud backup.
|
||||||
|
- Advanced analytics.
|
||||||
|
- Advanced route layers.
|
||||||
|
- Unlimited ride history.
|
||||||
|
- Multiple motorcycles.
|
||||||
|
- Trip planning.
|
||||||
|
- Group rides.
|
||||||
|
- Advanced statistics.
|
||||||
|
- Future premium features.
|
||||||
|
|
||||||
|
Include:
|
||||||
|
|
||||||
|
- Monthly option.
|
||||||
|
- Lifetime option.
|
||||||
|
- Restore Purchases.
|
||||||
|
- Terms/privacy access where appropriate.
|
||||||
|
|
||||||
|
### In-App Upgrade UX
|
||||||
|
|
||||||
|
Use consistent PRO labels/locks and route users to the paywall when they attempt a premium feature.
|
||||||
|
|
||||||
|
### Settings
|
||||||
|
|
||||||
|
Show:
|
||||||
|
|
||||||
|
- Current plan.
|
||||||
|
- Renewal/expiration information where applicable.
|
||||||
|
- Restore Purchases.
|
||||||
|
- Manage Subscription.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 8 — Friends & Social Identity
|
||||||
|
|
||||||
|
**Goal:** Add a controlled rider network without immediately becoming a general-purpose social network.
|
||||||
|
|
||||||
|
### Username
|
||||||
|
|
||||||
|
- Unique.
|
||||||
|
- Case-insensitive.
|
||||||
|
- Searchable.
|
||||||
|
- Changeable with reasonable restrictions.
|
||||||
|
- Reserved-word protection.
|
||||||
|
|
||||||
|
### Friends
|
||||||
|
|
||||||
|
- Find riders.
|
||||||
|
- Friend requests.
|
||||||
|
- Accept/decline.
|
||||||
|
- Friends list.
|
||||||
|
- Remove friend.
|
||||||
|
- Block user.
|
||||||
|
- Report user.
|
||||||
|
|
||||||
|
Keep profile/friend functionality available to Free users to encourage network growth.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 9 — Motorcycle Profiles
|
||||||
|
|
||||||
|
**Goal:** Make motorcycles part of the rider's identity.
|
||||||
|
|
||||||
|
For each motorcycle, support optional public presentation of:
|
||||||
|
|
||||||
|
- Year/make/model.
|
||||||
|
- Motorcycle photo.
|
||||||
|
- Nickname.
|
||||||
|
- Mileage.
|
||||||
|
- Ride count.
|
||||||
|
- Modifications.
|
||||||
|
- Statistics.
|
||||||
|
|
||||||
|
Visibility should follow the user's privacy settings.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 10 — Planned Rides
|
||||||
|
|
||||||
|
**Goal:** Let users organize future rides.
|
||||||
|
|
||||||
|
### Planned Ride Model
|
||||||
|
|
||||||
|
Support:
|
||||||
|
|
||||||
|
- Name.
|
||||||
|
- Date.
|
||||||
|
- Meeting time.
|
||||||
|
- Departure time.
|
||||||
|
- Meeting location.
|
||||||
|
- Destination.
|
||||||
|
- Route.
|
||||||
|
- Description.
|
||||||
|
- Waypoints.
|
||||||
|
- Fuel stops.
|
||||||
|
- Food/rest stops.
|
||||||
|
- Scenic stops.
|
||||||
|
- Motorcycle-related stops.
|
||||||
|
|
||||||
|
A planned ride can remain private or be shared with friends/group members.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 11 — Events & Meetups
|
||||||
|
|
||||||
|
**Goal:** Separate casual motorcycle gatherings from actual rides.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
> Sunday Coffee & Motorcycles — 9:00 AM
|
||||||
|
|
||||||
|
Support:
|
||||||
|
|
||||||
|
- Event creation.
|
||||||
|
- Location.
|
||||||
|
- Date/time.
|
||||||
|
- Description.
|
||||||
|
- Attendee list.
|
||||||
|
- Join/maybe/can't attend.
|
||||||
|
- Organizer controls.
|
||||||
|
- Optional conversion from meetup to group ride.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 12 — Group Rides
|
||||||
|
|
||||||
|
**Goal:** Make coordinated motorcycle riding a signature MotorSignal feature.
|
||||||
|
|
||||||
|
### Group Ride
|
||||||
|
|
||||||
|
- Organizer.
|
||||||
|
- Rider list.
|
||||||
|
- Route.
|
||||||
|
- Meeting point.
|
||||||
|
- Departure time.
|
||||||
|
- Route progress.
|
||||||
|
- Group ride status.
|
||||||
|
- Ride completion.
|
||||||
|
- Individual ride telemetry.
|
||||||
|
|
||||||
|
Each rider should retain their own ride record while the group ride creates a shared event context.
|
||||||
|
|
||||||
|
Conceptually:
|
||||||
|
|
||||||
|
```text
|
||||||
|
User → Motorcycle → Ride → Group Ride
|
||||||
|
```
|
||||||
|
|
||||||
|
A solo ride does not require a Group Ride relationship.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 13 — Group Ride Location & Safety
|
||||||
|
|
||||||
|
**Goal:** Add live group awareness while protecting rider privacy.
|
||||||
|
|
||||||
|
### Location Sharing
|
||||||
|
|
||||||
|
- Off by default outside active group rides.
|
||||||
|
- Explicit consent before sharing during a group ride.
|
||||||
|
- Automatically stop sharing when the group ride ends.
|
||||||
|
- Show last-known position when appropriate rather than claiming continuous tracking.
|
||||||
|
- Avoid exposing home/start/end locations unnecessarily.
|
||||||
|
|
||||||
|
Potential future capabilities:
|
||||||
|
|
||||||
|
- Rider separated from group.
|
||||||
|
- Rider stopped unexpectedly.
|
||||||
|
- Group split detection.
|
||||||
|
- Last-known location.
|
||||||
|
- Emergency assistance.
|
||||||
|
|
||||||
|
Safety features must never encourage riders to interact with the screen while moving.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 14 — Multi-Day Trip Planning
|
||||||
|
|
||||||
|
**Goal:** Support complete motorcycle trips rather than individual rides.
|
||||||
|
|
||||||
|
### Trip
|
||||||
|
|
||||||
|
- Trip name.
|
||||||
|
- Start/end dates.
|
||||||
|
- Multiple days.
|
||||||
|
- Daily routes.
|
||||||
|
- Waypoints.
|
||||||
|
- Fuel stops.
|
||||||
|
- Rest stops.
|
||||||
|
- Food.
|
||||||
|
- Hotels.
|
||||||
|
- Scenic locations.
|
||||||
|
- Notes.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Tail of the Dragon Weekend
|
||||||
|
|
||||||
|
Day 1: Atlanta → Cherokee
|
||||||
|
Day 2: Cherokee → Deals Gap → Gatlinburg
|
||||||
|
Day 3: Gatlinburg → Atlanta
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 15 — Collaborative Trips
|
||||||
|
|
||||||
|
**Goal:** Allow invited riders to participate in trip planning.
|
||||||
|
|
||||||
|
Support:
|
||||||
|
|
||||||
|
- Trip organizer.
|
||||||
|
- Invited riders.
|
||||||
|
- Shared routes.
|
||||||
|
- Shared stops.
|
||||||
|
- Shared notes.
|
||||||
|
- Trip-specific events.
|
||||||
|
- Group ride association.
|
||||||
|
- Trip history after completion.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 16 — Ride Sharing
|
||||||
|
|
||||||
|
**Goal:** Turn completed rides into shareable summaries while protecting raw data.
|
||||||
|
|
||||||
|
A shared ride summary can include:
|
||||||
|
|
||||||
|
- Distance.
|
||||||
|
- Duration.
|
||||||
|
- Top speed.
|
||||||
|
- Maximum lean.
|
||||||
|
- Acceleration records.
|
||||||
|
- Personal bests.
|
||||||
|
- Route preview.
|
||||||
|
- Motorcycle.
|
||||||
|
- Photos where permitted.
|
||||||
|
|
||||||
|
Visibility choices:
|
||||||
|
|
||||||
|
- Private.
|
||||||
|
- Friends.
|
||||||
|
- Public.
|
||||||
|
|
||||||
|
Raw GPS telemetry should not automatically become public merely because a ride is shared.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 17 — Achievements & Riding History
|
||||||
|
|
||||||
|
**Goal:** Make the accumulated ride history meaningful.
|
||||||
|
|
||||||
|
Potential achievements:
|
||||||
|
|
||||||
|
- First Ride.
|
||||||
|
- 1,000 Miles.
|
||||||
|
- 100 Rides.
|
||||||
|
- 10,000 Miles.
|
||||||
|
- Night Rider.
|
||||||
|
- Mountain Rider.
|
||||||
|
- First Group Ride.
|
||||||
|
- First Trip.
|
||||||
|
- Personal Best.
|
||||||
|
|
||||||
|
Achievements should be derived from recorded/verified ride data rather than freely editable user values.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 18 — Future Social/Discovery Layer
|
||||||
|
|
||||||
|
**Goal:** Expand only after the core platform is proven.
|
||||||
|
|
||||||
|
Potential future features:
|
||||||
|
|
||||||
|
- Activity feed.
|
||||||
|
- Comments.
|
||||||
|
- Likes.
|
||||||
|
- Public routes.
|
||||||
|
- Local riding groups.
|
||||||
|
- Clubs.
|
||||||
|
- Public meetups.
|
||||||
|
- Route discovery.
|
||||||
|
- Ride recommendations.
|
||||||
|
- Messaging.
|
||||||
|
|
||||||
|
These are explicitly **not launch blockers** for the first Pro release.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Proposed Navigation Evolution
|
||||||
|
|
||||||
|
Eventually the primary navigation can evolve toward:
|
||||||
|
|
||||||
|
```text
|
||||||
|
HOME
|
||||||
|
GARAGE
|
||||||
|
RIDES
|
||||||
|
EXPLORE
|
||||||
|
PROFILE
|
||||||
|
```
|
||||||
|
|
||||||
|
### Home
|
||||||
|
|
||||||
|
Current motorcycle, ride status, quick start, important alerts.
|
||||||
|
|
||||||
|
### Garage
|
||||||
|
|
||||||
|
Motorcycles and motorcycle details.
|
||||||
|
|
||||||
|
### Rides
|
||||||
|
|
||||||
|
Ride history, planned rides, trips, and group rides.
|
||||||
|
|
||||||
|
### Explore
|
||||||
|
|
||||||
|
Friends, events, public rides, public routes, and later local discovery.
|
||||||
|
|
||||||
|
### Profile
|
||||||
|
|
||||||
|
Identity, statistics, achievements, motorcycles, and privacy.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Initial Free / Pro / Lifetime Direction
|
||||||
|
|
||||||
|
| Feature | Free | Pro Monthly | Pro Lifetime |
|
||||||
|
|---|:---:|:---:|:---:|
|
||||||
|
| Motorcycle Garage | ✓ | ✓ | ✓ |
|
||||||
|
| Basic Ride Recording | ✓ | ✓ | ✓ |
|
||||||
|
| Basic Ride History | ✓ | ✓ | ✓ |
|
||||||
|
| Basic Telemetry | ✓ | ✓ | ✓ |
|
||||||
|
| Basic Route View | ✓ | ✓ | ✓ |
|
||||||
|
| User Account | ✓ | ✓ | ✓ |
|
||||||
|
| Profile | ✓ | ✓ | ✓ |
|
||||||
|
| Friends | ✓ | ✓ | ✓ |
|
||||||
|
| Limited Cloud Backup | ✓ | — | — |
|
||||||
|
| Unlimited Cloud Backup | — | ✓ | ✓ |
|
||||||
|
| Advanced Analytics | — | ✓ | ✓ |
|
||||||
|
| Advanced Route Layers | — | ✓ | ✓ |
|
||||||
|
| Unlimited Ride History | — | ✓ | ✓ |
|
||||||
|
| PDF/CSV Export | — | ✓ | ✓ |
|
||||||
|
| Multiple Motorcycles | Limited | ✓ | ✓ |
|
||||||
|
| Trip Planning | — | ✓ | ✓ |
|
||||||
|
| Group Rides | — | ✓ | ✓ |
|
||||||
|
| Advanced Statistics | — | ✓ | ✓ |
|
||||||
|
| Future Premium Features | — | ✓ | ✓ |
|
||||||
|
|
||||||
|
**This matrix is a planning baseline, not the final commercial contract.** Every row should be reconciled against the actual implemented feature set before Play Store launch.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Release Gates
|
||||||
|
|
||||||
|
## Gate 1 — Technical Readiness
|
||||||
|
|
||||||
|
- Existing ride pipeline stable.
|
||||||
|
- Critical bugs resolved.
|
||||||
|
- Release build succeeds.
|
||||||
|
- No known data-loss bugs.
|
||||||
|
|
||||||
|
## Gate 2 — Cloud Readiness
|
||||||
|
|
||||||
|
- Firebase security rules audited.
|
||||||
|
- User ownership enforced.
|
||||||
|
- Offline sync tested.
|
||||||
|
- Backup/restore tested.
|
||||||
|
- Account deletion tested.
|
||||||
|
- Data export tested.
|
||||||
|
|
||||||
|
## Gate 3 — Monetization Readiness
|
||||||
|
|
||||||
|
- Monthly product configured.
|
||||||
|
- Lifetime product configured.
|
||||||
|
- Entitlements centralized.
|
||||||
|
- Restore tested.
|
||||||
|
- Subscription lifecycle tested.
|
||||||
|
- Paywall complete.
|
||||||
|
|
||||||
|
## Gate 4 — Beta Readiness
|
||||||
|
|
||||||
|
- Internal testing complete.
|
||||||
|
- Closed testing complete.
|
||||||
|
- Crash/error monitoring reviewed.
|
||||||
|
- Real-device motorcycle testing complete.
|
||||||
|
- Privacy/Terms/Data Safety requirements completed.
|
||||||
|
|
||||||
|
## Gate 5 — Production
|
||||||
|
|
||||||
|
- Store listing finalized.
|
||||||
|
- Release signing verified.
|
||||||
|
- Production billing products verified.
|
||||||
|
- Production Firebase configuration verified.
|
||||||
|
- Backup/restore verified on production build.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Immediate Development Priority
|
||||||
|
|
||||||
|
The recommended order from the current state is:
|
||||||
|
|
||||||
|
1. Finish Technical Details motorcycle image consistency.
|
||||||
|
2. Audit all existing motorcycle/ride UI for stale rendering paths.
|
||||||
|
3. Finish and verify acceleration/braking/lean analysis.
|
||||||
|
4. Verify the complete ride lifecycle.
|
||||||
|
5. Resolve the History → Upload Now authentication issue.
|
||||||
|
6. Audit Firebase security and cloud ownership.
|
||||||
|
7. Define the final cloud data model.
|
||||||
|
8. Implement the offline-first sync layer.
|
||||||
|
9. Implement profile/account architecture.
|
||||||
|
10. Implement backup/restore.
|
||||||
|
11. Lock the Free/Pro feature matrix.
|
||||||
|
12. Implement centralized entitlements.
|
||||||
|
13. Configure Monthly and Lifetime products.
|
||||||
|
14. Implement paywall and subscription management.
|
||||||
|
15. Test billing thoroughly.
|
||||||
|
16. Release to internal/closed testing.
|
||||||
|
17. Build Friends.
|
||||||
|
18. Build Planned Rides.
|
||||||
|
19. Build Events/Meetups.
|
||||||
|
20. Build Group Rides.
|
||||||
|
21. Build multi-day Trips.
|
||||||
|
22. Add advanced social/discovery features later.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Product Definition
|
||||||
|
|
||||||
|
MotorSignal should not be treated as three unrelated products called Free, Monthly, and Lifetime.
|
||||||
|
|
||||||
|
There should be **one MotorSignal application and one account/data model**, with different entitlement levels.
|
||||||
|
|
||||||
|
The long-term architecture should support:
|
||||||
|
|
||||||
|
```text
|
||||||
|
MotorSignal
|
||||||
|
│
|
||||||
|
┌───────────────┴───────────────┐
|
||||||
|
│ │
|
||||||
|
Core Riding Rider Network
|
||||||
|
│ │
|
||||||
|
┌───────┼────────┐ ┌───────┼────────┐
|
||||||
|
│ │ │ │ │ │
|
||||||
|
Garage Rides Telemetry Friends Events Trips
|
||||||
|
│ │ │ │ │ │
|
||||||
|
└───────┴────────┴──────────────┴───────┴────────┘
|
||||||
|
│
|
||||||
|
Cloud + Sync
|
||||||
|
│
|
||||||
|
Free / Pro Entitlement
|
||||||
|
```
|
||||||
|
|
||||||
|
The immediate objective is **reliability**. The next objective is **cloud identity and synchronization**. Monetization then sits on top of that foundation, followed by the social/group-riding platform.
|
||||||
Loading…
Reference in New Issue