Skip to content

Get Started

Aaron Brethorst edited this page Feb 21, 2024 · 7 revisions

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

subgraph extensions ["App Extensions"]
  todayview[iOS Today View]
end

extensions --> business 

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. From the root of your project, run 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.

Questions?

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

Welcome

Public

Engineering

White-Label

Clone this wiki locally