
Projects and Case Studies
Technical and Personal Projects
Frog Ferry Mobile Application


Project Overview
Frog Ferry is a planned passenger ferry service operating in the Portland, Oregon metropolitan area, providing water-based transportation across the Willamette River between Cathedral Park and RiverPlace terminals. The service aims to reduce traffic congestion and offer a sustainable transit alternative for commuters and residents.
This mobile app is a booking and real-time vessel tracking system for passengers to search routes, book tickets, track vessels in real-time, and receive notifications, while operators manage trips and check-in passengers via QR codes. The system handles the complete booking lifecycle: discovery, payment, ticketing, and tracking. Future expansion includes safety features like emergency manifests, capacity enforcement, and weather-based trip cancellations.
Design Process
The design process began with extensive research, including existing ferry apps, operations and stakeholder consultations. Based on the insights gathered, I created wireframes and interactive prototypes to visualize the user flow and interface.
Phase 1 (Auth and Profile)
- Environment configuration (dev, staging/testing, production)
- React Native / Expo / EAS setup
- GitHub code repo setup
- Supabase setup - PostgreSQL tables
- Authentication and RBAC setup in Supabase
- Login & Profiles Screen development
- External links
Phase 2 (Booking and Vessel Tracking)
- Route search & browsing
- Booking & payment
- PostGIS & Mapbox configuration
- Basic vessel tracking (POC mocked service)
Phase 3 (Operator and Advanced Features)
- QR code check-in
- Push notifications
- I18n multi-language architecture setup
- Testing and launch prep
Technical Architecture and Decision Making
While the initial phases focused on core functionality, significant attention was given to scalability and performance to ensure the system could handle a growing user base effectively.
BACKEND: SUPABASE
PostgreSQL + PostGIS + Real-time subscriptions + Row Level Security
MOBILE: EXPO + REACT NATIVE
Cross-platform iOS/Android with over-the-air updates and EAS Build
MAPPING: MAPBOX
Real-time tracking, route visualization, offline maps, custom styling
Technical Challenges and Solutions
Identified and architected solutions for critical system vulnerabilities that could impact operations, revenue, and passenger safety.
Challenge 1: Race Conditions in Bookings
Problem: Multiple users booking the last seat simultaneously could cause overbooking.
Solution: PostgreSQL functions with SELECT FOR UPDATE locks ensure atomic capacity checks:
- Check capacity atomically
- Update seats_booked only if space available
Challenge 2: Ticket Fraud
Problem: QR codes can be screenshot and reused.
Solution: Multi-layered security:
- AES-256 encrypted ticket data
- Time-window validation (only valid 30 min before departure)
- One-time use with scan logging
- Nonce tracking to prevent replay attacks
- Geofencing (must scan near departure terminal)
Challenge 3: GPS Spoofing and Location Fraud
Problem: Malicious operators could send fake vessel locations, disrupting passenger tracking.
Solution: Physics-Based Validation:
Outcome
The final design of the Frog Ferry Mobile Application successfully addresses the needs of both passengers and operators, resulting in a user-friendly and efficient ferry booking and tracking system. The plan minimizes technical debt by using standard PostgreSQL (portable to any provider), open-source stack (no proprietary vendor lock-in), and a clear migration path to AWS RDS if enterprise scale requires it. The architecture prioritizes pragmatism over premature optimization.



