City-level mobility pressure signal for taxis and ride-hailing demand.
Public demo link is intentionally omitted until a stable deployment is published.
Route quote tools answer the price of one trip. They do not tell a rider, operator, or city observer whether the local ride market is broadly favorable, normal, or under pressure right now.
Ride Pressure Widget turns live weather, geolocation, route-friction observation, and transparent provider support states into a city-level pressure view. It is designed as a widget-like product surface, not a fare estimator.
- Manual city search plus automatic location detection
- City-level market classification: favorable, normal, or rough
- Weather, traffic, and demand breakdowns behind the score
- Provider support states that stay neutral when live pricing is not trustworthy
- Persisted observed snapshots in SQLite for recent city baselines
- Mobile-first
/widgetroute and installable web-app metadata - Native SwiftUI iPhone app and WidgetKit companion project
- Open-Meteo for current and forecast weather
- Nominatim for reverse geocoding
- ipwho.is for IP-based city fallback
- Public Uber route probes for route-friction observation
- SQLite via
better-sqlite3for local snapshot persistence
- City search and reverse geocoding
- Current and forecast weather
- Real observed snapshots written to SQLite
- Uber public-web route timing signals when probes succeed
- Hourly and daily outlook curves
- Demand pressure layering when direct provider pricing is limited
If a city falls back to inferred signals, the UI says so instead of pretending direct provider coverage exists.
- Next.js 16, React 19, TypeScript
- Tailwind CSS 4
- Recharts
- SQLite via
better-sqlite3
src/app/api/exposes search, reverse geocoding, and market payload endpoints.src/lib/server/sources/handles weather and geocoding.src/lib/server/providers/contains provider adapters.src/lib/server/market.tscomputes pressure, freshness, and chart outputs.src/lib/server/snapshots.tsstores and reads local observed baselines.src/components/market-widget.tsxandsrc/components/pressure-chart.tsxdrive the main UI.
npm install
npm run devOpen http://localhost:3000 for the full app or http://localhost:3000/widget for the compact widget view.
The app creates a local SQLite file at data/ride-pressure.sqlite.
ios/RidePressureIOScontains the SwiftUI app and WidgetKit extension.- The iPhone project uses the same real-data posture as the web app.
- Generate the Xcode project with
xcodegen generateinsideios/RidePressureIOS. - Local build verification on this machine still requires the Xcode license to be accepted.
- Build passes for the web application
- Provider support is intentionally conservative and explicit
- Strongest coverage currently comes from weather plus Uber route-friction observation
- This build does not claim reliable live price access for Bolt, Cabify, or FREE NOW.
- Some cities will fall back to weather plus inferred demand until more provider adapters are added.
- The charts are outlooks built from current signals, not fabricated historical archives.