Case study
BiteRoutes
Customers find nearby trucks on a map, browse menus, pay with Stripe, and track orders in real time over GraphQL subscriptions. Truck owners manage locations, menus, and subscriptions from their own dashboard.
Live
Web is live at biteroutes.com. The SwiftUI iOS app is in progress.

What it is
BiteRoutes helps people find food trucks and order ahead. Customers see nearby trucks on a map, browse their menus, pay with Stripe, and watch the order move from accepted to ready in real time. Truck owners get the other half of the platform: location management, menus, and subscription plans.
The real-time piece is the part I care about most. Order status rides GraphQL subscriptions from the API to every connected client, so the tracking screen updates the moment the truck does, no refresh.
How it is built
One codebase, four surfaces: an API, a web app, an iOS app, and the infrastructure, each in its own workspace.
Web
A Next.js and React 19 storefront: discovery, menus, cart, checkout, and live order tracking.
API
Apollo Server with GraphQL subscriptions, Prisma, and PostgreSQL. Stripe handles payments, Cognito handles auth.
iOS
A SwiftUI app with an order-tracking widget. In progress, not on the App Store yet.
Infrastructure
Terraform defines separate prod and dev environments on AWS: Cognito, S3, CloudFront, RDS, SES, and SNS with APNs for push.


How it ships
Everything lands through pull requests. GitHub Actions runs the web and API pipelines, Xcode Cloud builds the iOS app, and Playwright covers the web flows end to end, with unit and integration tests across API, web, and iOS.
Stack
- TypeScript
- Node.js
- Apollo Server
- GraphQL subscriptions
- Prisma
- PostgreSQL
- Next.js
- React 19
- SwiftUI
- Stripe
- AWS
- Terraform
- Playwright
- GitHub Actions
- Xcode Cloud