Skip to content
linxcat edited this page Jan 30, 2015 · 1 revision

File-Side Server:

  • Stores serialized Linked Lists that represent the Form Layout specification for each channel. These are sent to the android app so that it can dynamically create the proper form.
  • These Linked Lists contain Enum constants that represent each of the several types of data fields that we may choose to support (String, Picture, Video, Audio, Geotag, Timestamp etc.)
  • Also stores an ordered Linked List of the unique names (from a channel perspective) for each data field. This is used to pull the return values in the correct order from the Dictionary returned by the Android "post-to-channel" activity, which are keyed using these names.
  • Keeps the actual Media files referenced by the database in their compressed format (to be sent to whatever display and decompressed).

Database Server:

  • Stores a list of Channels, which contains the creator of the channel and links to each of their Form Layouts which can be sent in serialized form to an android app that requests them. Channels should also store additional admins if there are any, and tags that are placed on the Channel.
  • Each Channel has its own table containing posts made to that channel. These tables have the fields of the post titled by the keys in that channel's File-Side Name List, as well as the poster's ID.
  • The table may have more columns, of data that is no longer represented in the specification, but we leave outdated posts as they were originally validated. (this may be added to posts display in various ways).

Android App:

  • Has a menu bar of some sort, which is overlayed on a web view of our Polymer site, the primary data stream that is global across platforms.
  • The menu bar allows access to the hardware functionality of the phone, and is used for making posts using the keyboard, camera, and GPSn unit.
  • Constructs Forms for a post based on a request to the server, which returns the Linked List of that channel's Form Layout to be deserialized and parsed into the proper layout.
  • Sends completed posts as entries in a dictionary, keyed by the (String) field name the data is meant to fill. (These names are retrieved, in the correct order, from File-Side by way of the "Field Names" Linked List)

Polymer Site:

  • Has the ability to create channels, view a map with pins of nearby posts, and see a feed of all the local, favourite, or filtered posts for a particular user.
  • Can transition to viewing any feed fullscreen, or an individual post or channel in the same manner.
  • Supports account management from both a user-level and admin-level perspective.
  • Ability to edit and administrate channels.

Major Thoughts:

  • Polymer does almost everything involving display for our project. The app is solely the interface that facilitates making posts (which are reliant on phone hardware) to the server which populates the polymer site for users.
  • We are able to keep "junk" data in a channel's posts table because we know the fields to validate due to the "Field Names" Linked List which will tell us which columns need to have data when a new post comes in.
  • If we just don't print null values, we can print posts regardless of their content so long as we know they were validated at first post. However, we need to worry about where to print fields that were once required, and filled, but are no longer in the Form Layout.

Clone this wiki locally