-
Notifications
You must be signed in to change notification settings - Fork 44
Get Started
🚧 This page is work in progress 🚧 |
---|
This page is intended for contributors to the OneBusAway iOS app. For white-label instructions, please refer to White Label.
The iOS codebase is a white-label product, with a well-layered software architecture.
graph TD
subgraph business ["🧰 OBAKitCore.framework"]
end
subgraph userinterface ["🧰 OBAKit.framework"]
end
subgraph whitelabelapps ["📱 White-Labeled App"]
onebusawayapp[OneBusAway.app]
style onebusawayapp fill:green,color:white
kiedybusapp[KiedyBus.app]
style kiedybusapp fill:blue,color:white
end
userinterface --> business
whitelabelapps --> userinterface
subgraph thirdparty ["📦 Third-party dependencies"]
spm[Swift Package Manager]
style spm fill:orange
end
In general:
-
OBAKit
is responsible for the user-interface and other iOS-specific logic. -
OBAKitCore
is responsible for networking, data models and storage, location services, and region management.
Code in OBAKitCore
and OBAKit
should be written in a generic sense (i.e. agency-agnostic). For more information, please refer to White Label.
- Xcode
- Download from https://developer.apple.com/xcode or the Mac App Store
- XcodeGen
- Download from /~https://github.com/yonaskolb/XcodeGen or
brew install xcodegen
- Download from /~https://github.com/yonaskolb/XcodeGen or
- SwiftLint (optional, but required for PRs)
- Download from /~https://github.com/realm/SwiftLint or
brew install swiftlint
- Download from /~https://github.com/realm/SwiftLint or
- Ruby (already installed with macOS)
OBAKit uses XcodeGen to create the xcodeproj
project file. We include a helper script that creates OneBusAway app, using the following command:
scripts/generate_project OneBusAway
This creates an OBAKit.xcodeproj
in the root project directory. Open it, Xcode will automatically download dependencies using the Swift Package Manager.
For more information on how scripts/generate_project
works, please refer to White Label.
Open a GitHub Issue with your question, we will do our best to help :)