Skip to content

Get Started

Alan Chu edited this page Feb 5, 2023 · 7 revisions
🚧 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.

Architecture

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
Loading

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.

Get Started

Software Requirements

Creating the Xcode Project

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.

Questions?

Open a GitHub Issue with your question, we will do our best to help :)

Welcome

Public

Engineering

White-Label

Clone this wiki locally