American Whitewater

Full-stack platform modernization and offline-first mobile app for the nation's leading whitewater conservation organization

View project

Info

Client: American Whitewater
Year: 2024

Tech Stack

React Native

TypeScript

Expo

Zustand

MapLibre

AWS Lambda

Node.js

American Whitewater - Mobile app for whitewater enthusiasts

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

Platform Modernization

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

DecisionRationale
React Native + ExpoCross-platform development with a small volunteer team; Expo’s managed workflow accelerates iteration
AWS LambdaPay-per-use pricing aligns with non-profit budget constraints; scales automatically during peak usage
MapLibre over MapboxOpen-source alternative eliminates per-user licensing costs
Zustand over ReduxSimpler 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

More work

View all work
Commerce Chrome Extension

Commerce Chrome Extension

Complete rewrite of a legacy browser extension with modern tooling and improved developer experience

Sovrn Commerce iOS

Sovrn Commerce iOS

Native iOS app enabling content creators to manage affiliate links on mobile, generating new revenue for the platform

Commerce JS

Commerce JS

A next-generation JavaScript ecosystem that modernized how Sovrn Commerce builds client-side applications.