Proposal - aaltowebapps/zouba GitHub Wiki

ZouBa

Overview

Zouba, Chinese for “Let's go”, will be an application that will allow the user to quickly determine the time and location of the next bus to a particular destination. The key feature is that the UI will be such that only a single key press is required to show the time for the next bus. More detailed information can be displayed the further into the UI the user goes, including routes later than the soonest one, and the legs for each route.

Definitions

  • Location: A place known to the user, to be used as either an Origin or a Destination. It will have a free-form name assigned by the user, and be defined by the user entering an address, bus stop number, and such like. Internally, it is defined by latitude and longitude.
  • Journey: A pair locations, one of which will be an Origin and the other a Destination, and between which the user wishes to travel. It will also have a free-form name assigned by the user.
  • Route: A set of Legs that lead from the Origin to the Destination.
  • Leg: Smallest part of a route where the user is traveling.
  • Waypoint: The points along a leg that represent the turns the user makes.

For example:

  • Location “Home”: “1 High Street, Helsinki”
  • Location “Work”: “2 World Trade Centre, Helsinki”
  • Journey “Home to Work”: Origin=”Home”, Destination=”Work”
  • Route Leg#0 = walk, leave home @ 08:10, arrive bus stop#15 @ 08:15 Leg#1 = bus 101, leave bus stop#15 @ 08:16, arrive bus stop#20 @ 09:22 Leg#2 = walk, leave bus stop#20 @09:22, arrive work @ 09:30

There shall be a special location that the user can select as an Origin (or Destination?) that will resolve to the user's current position by using the devices location sensor mechanism.

Page Structure

Under normal operation, when the application is launched, the user will be presented with a list of journeys that he/she has previously configured.

Journeys Page

He/she can then press the desired journey and the application will display the next several routes they need to take to make that journey – the user can immediately see how soon they need to leave, or if they wish they can choose to take a later route.

The user can select a route and they are taken to a page with the legs of the route.

On the header of the Journeys page, there is an 'Edit' settings button which takes the user to a page where journeys can be added and/or edited. On the journey edit page, the user can add/edit locations.

There is also a settings page (link TBD) where the user can set options such as the theme (eg dark/light) and whether to load/save the locations and journeys from/to a server, so that the user can easily switch devices without having to re-enter everything again.

Objects

  1. Location and Location factory
  2. Journey and Journey factory
  3. Route
  4. Leg
  5. Waypoint
  6. Settings
  7. Server

Other aspects need work : JSON parsing – Each Journey is resolved into multiple routes using the Reittiopas API provided by HSL. The information is supplied in JSON data format and this will need to be parsed into Routes, Legs and Waypoints.

Location parsing – When the user enters addresses/etc, this will have to be converted to Lat/Long. We can use the Reittiopas API for this too, which has the advantage of resolving bus stop numbers/etc.

Work Division

Work will be divided between team members based on the objects above.

  • Eva Rio – client objects and UI coding
  • Denti Mattio – client objects and UI coding
  • Max Waterman – client objects and UI coding
  • Vilen Looga – server entities and UX

Capabilities

We will use jQuery Mobile, and use phonegap apis for portability.

  1. location api
  2. networking
  3. getjson

Target Device

Primary development target : Google Chrome

We intend on attempting deployment to other targets, but we will decide later.

Future expansion

See dedicated wiki page.