OpenDoor

It's like GET Mobile, but better for Northeastern students.

OpenDoor

OpenDoor is a simple, fast iOS app, natively written in Swift and SwiftUI, that aims to replicate the functionality of GET Mobile, at least, the parts that Northeastern supports. It also introduces new features that GET Mobile doesn't natively support, such as Apple Watch and iPhone Action Button support for opening doors, making it more convenient to use. Best of all, it uses the same sign in process as GET Mobile, so you can also sign in with your Northeastern student account, via Northeastern's Single Sign On (SSO) system, just like GET Mobile.

Home View
Location View
Activate Location
Account View
Settings

Why?

GET Mobile was slow. Like, really slow. It took seconds to launch the app, and then another few seconds to load the data into the app. As one can imagine, this isn't optimal if all you want is to open your dorm door, which would randomly fail in some cases, so you're just standing there, waiting for it to work, as it inexplicably fails to open the door. So, that's why OpenDoor was created. To fix the issues that GET Mobile had, and just make it more convenient to use.

Original Features

OpenDoor includes the following features, much like the original app:

  • Sign in with your Northeastern student account, via Northeastern's Single Sign On (SSO) system
  • View the list of locations you are authorized to access
  • Attempt to activate (unlock) a location from your phone
  • View the current status of all your virtual accounts attached to your Northeastern student account
    • This includes:
      • Meal Plan Swipes
      • Dining Dollars
      • Guest Swipes
      • Printing Dollars
  • View all transactions associated with any virtual account linked to your Northeastern student account
  • Scannable PDF417 barcodes, linked to your Northeastern student account, which can be used to spend meal swipes, dining dollars, or any on-campus purchase which works by scanning the barcode at the point of sale

Added Features

OpenDoor also introduces the following features, which are not present in the original app:

  • Apple Watch support for opening doors
  • iPhone Action Button support for opening doors
  • iOS Widget support for opening doors (which enables iOS Widgets on macOS too)

Fixes Added to the Original App

OpenDoor also fixes the following issues with the original app:

  • The proxy API properly validates the PIN set by the user.
  • Properly handles session management.
    • Instead of creating a new session upon every app launch, OpenDoor uses the same existing session until the token expires, in which case, it automatically renews the session. This avoids creating unnecessary new sessions upon every app launch even if the current session token is still valid, which GET Mobile does.
    • OpenDoor properly invalidates the active session token when the user signs out of the app. This behavior is not present in GET Mobile. Session tokens continue to be valid until they expire, even if the user has signed out of the app.

Tech Stack

OpenDoor is natively written in Swift and SwiftUI for iOS. This was done with the help of various AI models, as I was not too familiar with Swift or SwiftUI at the time of creating this project. The backend proxy API service was written in Node.js using an Express.js server, hosted on Railway. The majority of the functionality of the app was achieved through reverse engineering the original API service. Certain bugs in the original API service were also fixed in the proxy API service.