Overall Design

This page proposes overall design concepts for the Zyre project, based on the goal of presenting a simple, tangible, but extensible set of spaces for the target audience.

Assumptions

We assume that the Zyre client application is running on a smartphone with GPS, camera, soft keyboard, Internet, and high-resolution screen.

Abstractions

A group is the term for a Zyre application. We build groups of objects. The people who help build a group are owners. The people who follow a group passively are users. Every group has at least one owner, the person who started the group.

Zyre groups are all public, though we may offer private groups later as a paid service. Any person can add an object to a group. This person becomes the owner of the object. An object consists of descriptive information and at least one photo. Any person can add photos to an existing object. This person becomes the owner of that photo.

Groups are grouped under places. A place is a large geographic area, i.e. a city or region or perhaps country. Cities are the primary places, since most Zyre users will live in and be interested in cities. We may be able to import a database of places into Zyre, since there is little benefit in making this user-contributed data.

Groups are thus regional and local. A group of statues in New York is independent from a group of statues in Brussels. Places form a natural container for linguistic and cultural variation.

Ownership and Collaboration

All entities (groups, objects, and photos) are owned by the person who created that entity. Other people may modify an entity (e.g. its description). Only the owner may delete an entity. Entities that contain other entities with different owners cannot be deleted.

Notifications

Users receive personalized notifications that keep them informed of people and events they are interested in. Notifications are analogous to Facebook updates or a Twitter stream. Zyre provides these notifications:

  • To the owner of a group, when another person adds an object to it.
  • To the owner of an object, when another person adds a photo to it.
  • To the owner of a group, object, or photo, when another person modifies that entity in any way.
  • To anyone following an entity, when another person adds to that entity or modifies it.
  • To any user, when another user sends them a message.

Security

All users identify themselves with login and password. Zyre allows instant registration online. Users can sign in using their mobile phone number, email address, or nickname. If a user provides an email this is verified out-of-band via a confirmation email and web callback.

Karma

All users have karma, which is the sum of all upratings they receive from other users, plus number of objects added to their groups. Initially, karma is used only to show “most popular” users but later karma will be used to limit who can up and down rate, so that spammers and astroturfers cannot uprate each other. User compete for karma, and this is one reason to want to create a successful group.

Anti-Spam Measures

We assume Zyre will become attractive to spammers. We observe that users are very protective of their work, and thus the primary anti-spam measure is the notification to an owner when another person adds to, or modifies an entity they own.

Additionally, we allow (some or all) users to rate other users’ creations up or down. Down-rated entities will disappear from view unless explicitly asked for. Up-rated entities will become more visible.

User Interface

The Zyre user interface changes over time as users learn to use Zyre and groups.

Initially, the user interface shows “places close by”, on a map or list. The user can select a place, and then see groups in that place. The user can then select a group, and then see objects in that group, on a map or a list.

The user can mark individual groups as “favourites”, at which point the group appears on the user’s Zyre main page. As the user selects more and more favourites, their Zyre main page starts to look like an application grid.

This is a walk-through of the Zyre pages:

  • Main page: shows favourite groups, and a list of places near by. The user can switch to a map view, or select a group, or a place.
  • Places map: shows places near by, as points on a Google map. The user can switch to the list view, or select a place.
  • Place main page: shows the list of groups in the page, each with an icon or picture. The user can select a group, start a new group.
  • Start a group: allows the user to specify a new group.
  • Group main page: shows the list of objects in the group, near by. Objects are shown with thumbnail photos, description, and distance. The user can switch to a map view, select an object, or add a new object. If the group has no objects from other users, the group owner can delete the group. The user can rate the group from 0 to 5 stars.
  • Group map: shows objects near by, as points on a Google map. The user can switch to the list view, select an object, or add a new object (at the current GPS position).
  • Delete group: allows the user to confirm deletion of the group and all objects it contains.
  • Add an object: allows the user to specify a new object, including taking a photograph, which automatically becomes the main photograph of the object.
  • Object detail: shows a single object, with a list of photos as icons plus information. The user can add a new object, add a photograph. If the object has no photos from other users, the object owner can delete the group.
  • Delete an object: allows the user to confirm deletion of the object and all photos.
  • Add a photo: allows the user to take a new photo and add it to the current object.
  • Photo detail: shows a single photo. The user can add a photograph, or delete the photo (if they are the owner).
  • Delete a photo: allows the user to confirm deletion of the photo.
  • Search Places: lets the user look for places.
  • User profile: when clicking on a user name, this page shows that user’s profile picture, and other details they want to share.
  • Search Groups: lets the user search for groups in the current place or all places.
  • Search Objects: lets the user search for objects in the current group or all groups.
  • Settings: lets the user configure their preferences, including how to handle notifications, their profile information and photo, etc., the minimum rating for showing objects, etc.

Data Model

This is a sketch of a data model.

A place has these properties:

  • Id, which is a unique generated identifier.
  • Name, which does not have to be unique.
  • Text, which is a textual description of the group.
  • Type, which is city, region, or country.
  • Location, which is a longitude and latitude.

A group has these properties:

  • Id, which is a unique generated identifier.
  • Place, which is the ID of the place holding the container.
  • Owner, which is the ID of the person who created the group.
  • Name, which is unique within the place.
  • Text, which is a textual description of the group.
  • Picture, which is an icon or small photo.
  • Object, name of “object” this group.
  • Objects, name of “objects” (plural) in this group.
  • Size, the number of objects in the group.
  • Activity, the date and time of last activity (object, or photo).
  • Ranking, a calculated figure based on size, freshness, and number of visitors.
  • Rating, an average of a 0-to-5 rating given by users.
  • Tags, a string of tags.

A person has these properties:

  • Id, which is a unique generated identifier.
  • Phone, which holds the user phone number if they want to share it.
  • Email, which holds the user’s email if they want to supply it.
  • Login, which is the user’s Zyre login.
  • Name, which is the user’s name.
  • Text, which is arbitrary text the user can write about themselves.
  • Photo, which is the user’s photo, if uploaded.
  • Age, which is the user’s age, if provided.
  • Gender, which is the user’s gender, if provided.

An object has these properties:

  • Id, which is a unique generated identifier.
  • Group, which is the ID of the group holding the object.
  • Owner, which is the ID of the person who created the object.
  • Name, which is unique within the place.
  • Text, which is a textual description of the object.
  • Picture, which is an icon or small photo.
  • Location, which is the longitude and latitude of the object.
  • Activity, the date and time of last activity (change, or photo).
  • Ranking, a calculated figure based on total rating value.
  • Rating, an average of a 0-to-5 rating given by users.
  • Tags, a string of tags.

A photo has these properties:

  • Id, which is a unique generated identifier.
  • Object, which is the ID of the object for the photo.
  • Owner, which is the ID of the person who created the photo.
  • Text, which is a textual description of the photo.
  • Source, which is a hyperlink to the photograph image.
  • Location, which is the longitude and latitude of the photo.
  • Ranking, a calculated figure based on total rating value.
  • Rating, an average of a 0-to-5 rating given by users.
  • Tags, a string of tags.

A rating has these properties:

  • Type, group, object, or photo.
  • Entity, the ID of the entity being rated.
  • Owner, the ID of the person making the rating.
  • Rating, 0 to 5.
  • Comment, a text comment from the rating user.

Queries and Searches

On places:

  • All, ordered by distance from current location.
  • With matching on type, ordered by distance from current location.
  • With matching on name, ordered by distance from current location.

On groups:

  • All, ordered by descending ranking.
  • Within place, ordered by name.
  • Within place, ordered by descending ranking.
  • Within place, ordered by descending size.
  • Within place, ordered by descending activity.
  • With matching on name, ordered by descending ranking.
  • With matching on tags, ordered by descending ranking.
  • With matching on owner, ordered by descending ranking.

On objects:

  • Within group, ordered by distance from current location.
  • Within group, ordered by descending ranking.
  • Within group, ordered by descending activity.
  • Within group, with matching on name, ordered by distance from current location.
  • Within group, with matching on tags, ordered by distance from current location.
  • With matching on name, ordered by distance from current location.
  • With matching on text, ordered by distance from current location.
  • With matching on tags, ordered by distance from current location.
  • With matching on owner, ordered by descending ranking.

On photos:

  • Within object, ordered by descending ranking.
  • With matching on text, ordered by descending ranking.
  • With matching on tags, ordered by descending ranking.
  • With matching on owner, ordered by descending ranking.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License