Inspiration
Cyprus Next Bus started from the desire to create a native stop bus experience to Apple users. I was inspired by Apple’s WWDC23 talk “Explore enhancements to App Intents,” especially the idea of a bus schedule experience that can surface the next bus through App Intents, Shortcuts, widgets, and system search instead of forcing people to open the app every time.
What it does
Cyprus Next Bus helps riders find nearby stops, browse routes, view stop lists on a map, save favorite stops and routes, check upcoming bus arrivals and live track their position in the bus. It exposes transit actions through App Intents so common tasks like opening a stop, opening a route, or asking Siri for the next bus can become part of iOS system experiences. It also offers widgets with bus arrivals on the home screen. Cyprus Next Bus also includes an Apple Watch app, so riders can check nearby stops, route progress, and on-bus information from their wrist without pulling out their phone.
How we built it
We built it as a native SwiftUI app with shared transit logic in a GtfsICloud package. The app uses GTFS data, CloudKit/iCloud-backed loading, GRDB local caching, MapKit for stop and route maps, SwiftData for favorites, and App Intents for Siri, Shortcuts, Spotlight, and app shortcuts.
Challenges we ran into
The hardest part was keeping stop selection, map selection, route selection, and “next bus” state separate without letting one screen accidentally overwrite another. Transit data also has many edge cases: missing timetables, duplicated stops across trips, different agencies, offline cache freshness, and selecting the correct trip for the current time.
Accomplishments that we're proud of
We are proud that Cyprus Next Bus feels like an actual daily utility, not just a route browser. It connects nearby stops, favorite stops, maps, schedules, real time feeds and system-level actions into one flow. The Watch experience and SIRI integration are especially satisfying because it is convenient for the user.
What we learned
We learned that transit apps are mostly about state clarity. A “selected stop” is not always the same thing as a highlighted map stop, a destination stop, or the next stop while riding. We also learned that App Intents are strongest when they reuse real app logic instead of becoming a separate shortcut-only layer.
What's next for Cyprus Next Bus
Next we want to make arrivals faster , add route planning, improve widgets and Live Activities, add richer Shortcut actions, polish Spotlight discovery, and continue tightening the Cyprus transit experience around real rider workflows: find my stop, show my route, tell me when to leave, and help me not miss the bus.
Log in or sign up for Devpost to join the conversation.