Skip to content

SpotCheck Home

Nathan Inge edited this page Feb 16, 2018 · 3 revisions

SpotCheck wiki

Welcome to the wiki for SpotCheck! Please refer to README for quick links to reference material not related to system structure.

System Design

All data for SpotCheck is held in Firebase. Access to online Firebase console is restricted to current developers. The Firebase database is structured as a JSON tree with two main parents:

  • users
  • parking_spots

Under these parents, data is sorted according to a unique String ID (either a spot ID or a user ID depending on object). Under a unique ID contains all the data for that specific object. This is an effective and space efficient way to store data on the server, however data represented in a JSON tree is not easy to work with in a local setting (like when creating/editing/deleting local user and parking spot objects).

Because of this, SpotCheck has local object representations for both users and parking spots. They are simply Java classes. When displaying or facilitating interaction between user and/or parking spot objects, their local representation should always be user. Therefore, a local object must always be created from data from the server before it may be manipulated/displayed. The SCFirebase interface handles this conversion from server data to local object, back to server data.

More details of this system design and function is listed below.

Local

The local objects for SpotCheck exist as two Java classes:

  • SpotCheckUser
  • ParkingSpot

Interface

The SCFirebase interface bridges the gap between the local object representations and the Firebase server. Refer to the SCFirebase wiki page for documentation.

Remote

The backend server for SpotCheck is setup on Firebase and is structured as a JSON tree.

Clone this wiki locally