Smarter Commutes: Real‑time Bus ETA & Queue Prediction
Most transport apps only tell you when a bus will arrive — but not whether you’ll be able to board it. At peak times, queues mean you might wait for the second (or third) bus, making those ETAs unreliable.
SpeeDD fixes this by combining:
- ✅ Real‑time bus ETAs
- ✅ Live queue length data
- ✅ Predictions of which bus you’ll actually board
This delivers a more accurate total journey time, including queueing.
Currently configured for:
🚌 HKUST South Gate → Choi Hung MTR (minibus route 11)
- Smarter ETAs – See upcoming buses and which one you can realistically board.
- Queue Awareness – Live number of people at the stop.
- Time Breakdown – Clear view of Queue Time, Travel Time, and Total Journey.
- Queue Tracking – Track position on an interactive
MapKitview, with manual updates available. - Automatic Adjustments – Queue shifts update when buses depart.
- SwiftUI Interface – Clean, modern design built natively with SwiftUI.
- UI: SwiftUI
- Language: Swift 5
- Architecture: MVVM (Model‑View‑ViewModel)
- Async Data: Combine
- Networking:
URLSession - State Management: SwiftUI (
@State,@ObservedObject,@Binding) - Maps:
MapKitintegration
You can try SpeeDD instantly in your browser via Appetize.io:
You can also launch the app directly here using the embedded iPhone 14 Pro simulator:
<iframe src="https://appetize.io/embed/b_6kednwnjvk5w5clzd5lisuok5e?device=iphone14pro&osVersion=18.2&scale=75&orientation=portrait&iosVersion=18.2" width="420" height="880" frameborder="0" scrolling="no"></iframe>- macOS 12.0+
- Xcode 14.0+
- Swift 5.7+
- Clone the repo
git clone https://github.com/your_username/SpeeDD.git cd SpeeDD - Open in Xcode
open SpeeDD.xcodeproj
- Run the app
- Choose an iOS Simulator (e.g. iPhone 15 Pro) or a connected device.
- Press
Cmd + Rto build and run.
http://yeet.esy.es/real_time.json
If the API is unavailable or changes format, predictions may not work.
SpeeDD/
├── SpeeDDApp.swift # App entry point, splash logic
│
├── Views/ # SwiftUI interfaces
│ ├── SearchResultsView.swift
│ ├── QueueTrackingView.swift
│ ├── UpdatePositionView.swift
│ └── HomeView.swift (archived concept)
│
├── ViewModels/
│ └── PredictionViewModel.swift # Data fetching + business logic
│
├── Models/
│ └── Prediction.swift # Codable API response model
│
└── Assets.xcassets/ # Images, icons, colors
We’d love your help! Contributions make the project stronger.
To contribute:
- Fork the repo
- Create a feature branch
git checkout -b feature/MyAmazingFeature
- Commit your changes
git commit -m "Add amazing feature" - Push to your branch
git push origin feature/MyAmazingFeature
- Open a Pull Request 🎉
Distributed under the MIT License. See LICENSE.txt for details.
Crafted with ❤️ for the SpeeDD Project

