Pedal for iOS
Native iOS app for checking real-time bike and e-bike availability at bike-sharing stations worldwide, with Apple Watch app, widgets, and map integration. Coming soon to the App Store.
Coming soon to the App Store.
Pedal for iOS is a native iOS app for checking real-time availability of bikes and e-bikes at bike-sharing stations worldwide. Built entirely in SwiftUI, it supports Apple Watch, home screen widgets, and iCloud sync. The mobile companion to Pedal for Raycast.
Features
- Real-time station data with color-coded availability indicators (green/orange/red)
- Favorites management — save stations into groups for quick access
- Integrated map with station annotations and clustering
- Location-based sorting — find nearest stations via GPS
- Custom station names — rename any station for easy identification
- Apple Watch app — check availability from your wrist
- Home screen widgets — favorite groups, nearby stations, network overview, commute, and quick glance widgets
- iCloud sync — favorites and custom names synced across devices
- Multi-network support — works with bike-sharing systems worldwide via CityBikes API
- Appearance settings — customisable icons, colours, thresholds, and font scale
Architecture
The app follows a modern SwiftUI architecture with Combine for reactive state management:
CityBikes/
├── Models/ # Station, Network, FavoriteGroup, Appearance
├── Services/ # API client, LocationManager, WatchConnectivity
├── Views/ # 13+ SwiftUI view components
Widgets/ # 5 widget types with timeline providers
Watch App/ # watchOS companion
Tests/ # 131+ unit tests
Tech Stack
| Layer | Technology |
|---|---|
| Language | Swift 5.9 |
| UI | SwiftUI |
| State | Combine, ObservableObject |
| Maps | MapKit (custom MKMapView wrapper) |
| Location | CoreLocation |
| Widgets | WidgetKit |
| Watch | WatchConnectivity |
| Storage | UserDefaults, iCloud KVS |
| API | CityBikes API |
| Target | iOS 17.0+ |