CoastCast
CH Studios · Apple Developer Academy Challenge 5
Overview
CoastCast is a full-platform iOS beach conditions app covering 54 Michigan beaches across all five Great Lakes. Water temperature, crowd predictions, weekly weather forecasts, active weather alerts, and water quality data — all in one place, so you know if a beach is worth the drive before you leave. An on-device CoreML model predicts crowd levels with zero latency and no internet required.
The Problem
Michigan has some of the best freshwater beaches in the world and no reliable way to know if conditions are worth the drive. Weather apps don't show water temperature or wave height. Beach websites are outdated. There's no way to know how crowded a beach will be before you arrive. CoastCast was built to answer one question in under 30 seconds: is it worth going to the beach today?
Our Role
CH Studios owned the full product: Python FastAPI backend, CoreML model training and on-device integration, SwiftUI frontend, and all native iOS platform features — WidgetKit, Live Activities, App Intents, and BGTaskScheduler.
Platform Features
On-Device ML
XGBoost crowd prediction model trained on 40 years of state park attendance data, converted to CoreML. Zero latency, no internet required. Cyclical month encoding, holiday detection, and historical water temperature fallback.
Smart Map
Hand-built clustering algorithm — no library. Zoom-adaptive grid bucketing shows beach counts from altitude and individual pins up close. Card strip updates in real time as the user pans across Michigan.
Beach Scoring Engine
Weighted algorithm evaluates temperature, wind, precipitation, UV index, proximity, crowd tolerance, and favorites status to rank suggestions for today and the upcoming weekend.
Siri Shortcuts
Two App Intents — one opens a beach in the app, one fetches live conditions and speaks them back through Siri without opening the app at all.
Live Activities
Dynamic Island and Lock Screen tracker with compact, expanded, and minimal regions. Shows crowd level, water temp, and UV index while driving to the beach.
Smart Notifications
Three tiers: daily best beach scored at delivery time, threshold alerts when a favorite exceeds a score of 70, and NWS severe weather push. All powered by hourly BGTaskScheduler refresh.
System Architecture
| Layer | Technology | Purpose |
|---|---|---|
| Weather | WeatherKit | Current conditions, 10-day forecast, hourly |
| Buoy Data | NOAA NDBC via FastAPI | Water temp, wave height, wave period |
| Water Quality | Beach monitor via FastAPI | E. coli levels and swim safety status |
| Alerts | NWS via FastAPI | Severity, urgency, and expiry |
| Traffic | TomTom via FastAPI | Road speed and closures near each beach |
| Crowd ML | CoreML (XGBoost) | On-device — low, moderate, busy |
| Persistence | SwiftData | Favorites and user preferences |
| Home Screen | WidgetKit + ActivityKit | Small/medium widgets and Dynamic Island |
Outcome
CoastCast is live on the App Store. On-device CoreML inference eliminated backend compute costs for crowd prediction entirely. The app surfaces beach intelligence across every surface of the iPhone — home screen widget, Dynamic Island, Siri, and Lock Screen notifications — without requiring the app to be open.