← Back to Work

CoastCast

CH Studios · Apple Developer Academy Challenge 5

Live on App Store SwiftUI CoreML Python FastAPI WeatherKit WidgetKit App Intents Live Activities MapKit iOS 17+
54 Michigan Beaches
5 Great Lakes
40yr ML Training Data
6+ Live Data Sources

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.