Tide times and safe-crossing windows for UK coastal paths. Tells you when a causeway is walkable and shouts at you before it is not.
ios/— SwiftUI client, SwiftPMandroid/— Kotlin client, coroutinesapi/— TypeScript service that serves predictions and manages crossing alerts
# API — typecheck and build
cd api && npm install && npm run typecheck && npm run build
# iOS — needs Swift 6.0 or newer, the tests use swift-testing
cd ios && swift build && swift test
# Android — plain Kotlin/JVM module, no Android Gradle plugin yet
cd android && gradle :app:testThe Android module is kotlin("jvm") rather than a full Android application, so
there is no Gradle wrapper checked in and no testDebugUnitTest task. Use a
locally installed gradle. Turning it into a real Android module is the obvious
next step and would bring the wrapper with it.
Each client talks to the same /v1/crossings endpoint and keeps a local cache
so a walker on a cliff path with no signal still sees the last known window.
The alert scheduler in the API is the only stateful piece.