American Whitewater
App Store
The AllTrails for the river community. An offline-capable React Native app that provides an interactive way to explore rivers, access guide information, and view real-time river conditions to help paddlers plan their next trip.
Role: Volunteer Engineer
The Challenge
American Whitewater’s technology infrastructure had accumulated significant technical debt over two decades. The legacy PHP/Laravel monolith was expensive to host, difficult to maintain, and couldn’t scale to meet the organization’s growing user base. For a non-profit operating on limited resources, the ~$1,000/month hosting bill was unsustainable.
The existing mobile app was outdated and lacked offline support—a critical feature for paddlers who often find themselves in remote areas without cell service. River conditions change rapidly, and having access to gauge data, put-in/take-out locations, and safety information offline can be the difference between a great day on the water and a dangerous situation.
Technical Approach
I led a complete rewrite of the technology stack, migrating from the legacy PHP monolith to a modern JavaScript/TypeScript ecosystem:
- Serverless Backend: Replaced the monolithic architecture with AWS Lambda functions, reducing infrastructure costs by 90% (from ~$1,000 to ~$100/month)
- Monorepo Architecture: Created shared packages for schema definitions, validation, and common functionality across web and mobile clients
- Data Ingestion Pipeline: Built resilient data ingestion with robust error handling and retry logic for distributed gauge data systems across multiple government agencies
Mobile App Architecture
The React Native app was designed with offline-first principles:
- Local Database: SQLite-backed persistence for river guides, gauge data, and user preferences
- Background Sync: Intelligent sync strategy that updates data when connectivity is available
- Interactive Mapping: MapLibre integration with custom layers for river segments, access points, and gauge locations
- State Management: Zustand for lightweight, performant state management with persistence middleware
Key Technical Decisions
| Decision | Rationale |
|---|
| React Native + Expo | Cross-platform development with a small volunteer team; Expo’s managed workflow accelerates iteration |
| AWS Lambda | Pay-per-use pricing aligns with non-profit budget constraints; scales automatically during peak usage |
| MapLibre over Mapbox | Open-source alternative eliminates per-user licensing costs |
| Zustand over Redux | Simpler API reduces onboarding friction for volunteer contributors |
Impact
- 90% reduction in hosting costs — from ~$1,000/month to ~$100/month, freeing funds for conservation work
- Offline-first mobile experience — paddlers can access critical safety information without cell service
- Modernized codebase — easier to maintain and extend, lowering the barrier for future volunteer contributors
- Decommissioned legacy systems — eliminated maintenance burden of outdated infrastructure
About American Whitewater
Founded in 1954, American Whitewater is a national non-profit organization with a mission “to conserve and restore America’s whitewater resources and to enhance opportunities to enjoy them safely.” The organization represents a broad diversity of individual whitewater enthusiasts, river conservationists, and more than 100 local paddling club affiliates across America.
Credits