Monday, February 15, 2016

w6d1 - Planning the CatFinder

The cat finder project is moving ahead a bit:  I have user stories, a database scheme, some wireframes (that tail off into rudimentary...) and a Google Maps api key.  Woo.

Here's the super short Draw.io flow.  Each site user can register a sighting of a cat.  There may be many sightings that pertain to a single cat, so each cat "object" in Django will potentially have many sightings.  Ideally, each sighting will have just one user and just one cat.  The cat it refers to can change based on further information.  There is no independent verification of any particular cat's existence, so the first new sighting of a cat will be a new cat instance.  A sighting of an already existing cat will count as an additional review/sighting for that cat.





The sighting will be the primary data entry: user (foreign key), text description, rating, friendliness, distinguishing characteristics, location, timestamp of sighting.

Photos will go in a separate table since each sighting could include multiple photos/videos.  Each photo will have a foreign key to link it to a unique sighting.

When a user logs in and has found a cat:

they will be prompted to enter a location (using google maps geolocate or a physical address).  They will then be asked if their sighting refers to a cat already in the database (based on existing sightings within 0.5 miles):

If a previous sighting of this cat exists, they can add a new sighting linked to the existing cat.  (yeah, this one is pretty rudimentary but it has the essential information for populating a table, along with auto-generated time stamp and the geolocation info from the initial entry.)


If not, the new sighting will count as a new cat.  Each cat will have a page with all the pictures from the sightings that refer to the same cat (much like a restaurant can have multiple reviews on a review site.).


There will also be "flag this entry/photo" options throughout to allow users to report spam and inappropriate content (like pictures of dogs).  I'm hoping for a reddit-style moderation system with volunteer moderators for local areas and a few admins (i.e. me) who can appoint moderators and resolve bigger conflicts.  Moderators would be able to join sightings that were reported to be of unique cats, but are really of the same animal.  Or, the reverse (split sightings inappropriately tagged as the same animal).  Finally, if I'm able to impelement a "lost pet bulletin" a local moderator would have to approve an email sent out to site members who have opted in to the "Orange-Collar Alert"

Finally, users can create a profile for themselves, with photos, social media integration (of course!), and stats on how many cats and how many sightings they are responsible for.

Finally, finally, a user can search for cats near a specific location.  The location of any particular cat will be approximate (to a half mile or so) to avoid making it too easy to find friendly cats.  The exact location will be available to the person who uploaded it, but to no one else.

__

As I'm writing this up, I realize that I could use the same basic format for birders, or a catalog of plants in a city park (or crowd sourcing street tree data for a city).  A cat finder is inherently silly, and perilously close to the dreaded "facebook for ferrets".  It's contained, though, and of a scope I can imagine completing (as in it will have rudimentary functionality for limited users) in the next few weeks.  In the process, I'll learn to set up my own Django project with interconnected sql tables, I'll design some basic UI and forms, I'll apply some simple Javascript, and I'll learn some Google api mechanics.  There is a lot of room for science education and crowd-sourced science initiatives and I think this project will be a good ramp up to a larger project.




No comments:

Post a Comment