Original Idea
Food Truck Location Map A mobile app map with live location, menus, and pre-orders.
Product Requirements Document (PRD): StreetEats Tracker
1. Executive Summary
StreetEats Tracker is a dual-sided mobile ecosystem designed to bridge the gap between mobile food vendors and street food enthusiasts. By leveraging high-precision, real-time geolocation and modern "order-ahead" workflows, the platform eliminates the frustration of finding mobile trucks and the friction of long waiting lines. Built on a 2026-standard tech stack, it provides vendors with institutional-grade tools for location reporting and payment management while offering customers a seamless map-centric discovery experience.
2. Problem Statement
Food truck enthusiasts currently rely on fragmented social media updates to find truck locations, which are often inaccurate or delayed. This leads to missed sales for vendors and frustration for customers. Furthermore, food truck operations are hampered by unpredictable walk-up volumes, leading to long queues that deter time-sensitive customers (e.g., office workers).
3. Goals & Success Metrics
- Goal 1: Provide 99% accuracy in live truck positioning.
- Goal 2: Reduce average customer wait time at trucks by 40% via pre-orders.
- Goal 3: Enable vendors to go "Live" with zero-trust location security to prevent "spot squatting" and fraud.
- Success Metrics:
- Monthly Active Users (MAU): 50k in the first 6 months.
- Order Conversion Rate: 15% of map views leading to a pre-order.
- Location Latency: Sub-200ms updates from vendor to map.
4. User Personas
4.1. Hungry Office Worker (Alex)
- Needs: Quick lunch, dietary filters (Gluten-Free), knows exactly when food is ready.
- Behavior: Checks the app at 11:30 AM, orders from a truck 2 blocks away, walks over when notified.
4.2. Food Truck Owner (Maria)
- Needs: Easy menu updates, secure payments, accurate location broadcasting without draining phone battery.
- Behavior: Toggles "Live" status upon parking, manages a queue of digital and walk-up orders.
5. User Stories
- As a Customer, I want to see a live map of nearby food trucks so I can choose my lunch without walking aimlessly.
- As a Customer, I want to pre-order and pay in-app so I can skip the line during peak hours.
- As a Vendor, I want to broadcast my live location automatically when I move so customers always know where I am.
- As a Vendor, I want to "Manual Capture" payments only when I confirm I have the ingredients, so I don't have to process refunds for sold-out items.
6. Functional Requirements
6.1. Real-Time Map & Discovery
- Clustered Map View: Display trucks based on real-time GPS.
- Adaptive Search: Filter by cuisine type, dietary restrictions, and "Open Now."
- Dynamic Geofencing: Send push notifications via OneSignal/Radar when a "Favorited" truck enters a 5-minute walking isochrone of the user.
6.2. Ordering & Payments
- Digital Menu: Live inventory status ("Sold Out" toggle).
- Stripe Pre-Order: Support for Manual Capture (auth-and-hold) to ensure ingredient availability.
- Tap to Pay: Integrated Stripe Terminal SDK for in-person pickups and upselling.
6.3. Vendor Operations
- Location Toggle: Manual "Go Live/Go Offline" with background "Stationary Geofence" logic to save battery.
- Order Management: Dashboard with "New," "Preparing," and "Ready" statuses.
7. Technical Requirements
7.1. Core Tech Stack (2026 Standards)
- Frontend: React Native 0.83 (utilizing React 19.2 and Fabric Architecture).
- Backend: Node.js v24.13.0 (Krypton LTS) using HyperExpress and uWebSockets.js for high-frequency location streaming.
- Database: PostgreSQL 18.1 with PostGIS 3.6.1 (optimized for SP-GiST indexing).
- Infrastructure: AWS Amplify Gen 2 with RDS Proxy for serverless connection pooling.
7.2. Critical Integrations
- Geolocation: Transistorsoft Background Geolocation for motion-triggered tracking.
- Payments: Stripe SDK (@stripe/stripe-react-native) supporting Manual Capture and Terminal.
- Notifications: OneSignal v5+ integrated with Radar.io for isochrone-based triggers.
8. Data Model
| Entity | Attributes | Relationships |
| :--- | :--- | :--- |
| User | userId, email, favVendors[], homeGeohash | 1:N with Orders |
| Vendor | vendorId, businessName, cuisine, isLive | 1:N with MenuItems |
| LocationLog | vendorId, coords (Geometry), timestamp | Unlogged Table for speed |
| MenuItem | itemId, vendorId, price, stockStatus | Part of Order |
| Order | orderId, stripeIntentId, status, total | N:1 with Vendor/User |
9. API Specification
9.1. Location Stream (WebSocket/uWebSockets.js)
- Topic:
/vendor/:id/location - Payload (Protobuf):
message LocationUpdate { string vendorId = 1; double lat = 2; double lng = 3; int64 timestamp = 4; }
9.2. Order Creation
- Endpoint:
POST /v1/orders - Request:
{ vendorId, items[], paymentMethodId, captureMethod: 'manual' } - Response:
201 CreatedwithstripeClientSecret.
10. UI/UX Requirements
- Map Centricity: The home screen must be 80% map view with a bottom-sheet for truck details.
- Live Activities (iOS 18/19): Implement
ActivityKitto show "Order Preparation" progress and "Distance to Truck" on the lock screen. - Vendor Mode: High-contrast "Kitchen Mode" for the order dashboard to ensure readability in bright outdoor sunlight.
11. Non-Functional Requirements
- Performance: Geospatial proximity queries must return in <50ms using
<->operators. - Security:
- Zero-Trust Location: Mandatory 5G NR Positioning and Galileo OSNMA verification for vendor reporting.
- Compliance: PCI-DSS SAQ A for payment handling.
- Battery: Background tracking must consume <3% battery per 8-hour shift using adaptive motion detection.
12. Out of Scope
- Third-party delivery fleet integration (e.g., DoorDash).
- Table management for food trucks with seating.
- Global shipping for vendor merchandise.
13. Risks & Mitigations
- Risk: GPS Spoofing by vendors to appear in high-traffic zones.
- Mitigation: Cross-verify GPS with terrestrial 5G base station signals (TDoA).
- Risk: Database connection exhaustion during peak lunch hours.
- Mitigation: Use AWS RDS Proxy and HyperExpress for asynchronous I/O handling.
14. Implementation Tasks
Phase 1: Infrastructure & Project Setup
- [ ] Initialize React Native 0.83 project with New Architecture enabled.
- [ ] Provision AWS Amplify Gen 2 environment with PostgreSQL 18.1.
- [ ] Install PostGIS 3.6.1 extension and configure SP-GiST indices on
vendor_locations. - [ ] Set up HyperExpress server with Node.js v24.13.0.
Phase 2: Location & Mapping
- [ ] Integrate Transistorsoft Background Geolocation with motion-trigger logic.
- [ ] Implement Google Maps Platform for the frontend map view.
- [ ] Build WebSocket server for real-time coordinate broadcasting using Protobuf.
- [ ] Implement Galileo OSNMA signal verification for vendor location reporting.
Phase 3: Commerce & Ordering
- [ ] Integrate Stripe PaymentSheet with
capture_method: manual. - [ ] Build backend webhook listener for
payment_intent.succeeded. - [ ] Implement "Tap to Pay" using Stripe Terminal SDK for vendor pickups.
- [ ] Create vendor menu management UI with "Sold Out" toggles.
Phase 4: Notifications & UX
- [ ] Configure Radar.io isochrone geofences (5-minute walk).
- [ ] Connect Radar.io to OneSignal for proximity push triggers.
- [ ] Implement iOS Live Activities for real-time order tracking.
- [ ] Build "User Favorites" logic with push notification opt-ins.
Phase 5: Security & Scaling
- [ ] Implement 5G NR Positioning cross-verification for anti-spoofing.
- [ ] Configure
UNLOGGEDtables for high-frequency location breadcrumbs. - [ ] Conduct load testing using k6 for 10,000 concurrent WebSocket connections.
- [ ] Final PCI-DSS SAQ A compliance audit.