Species Invaders API

June 3, 2012 - 11:12 -- Scott Markoski
Summary: 

Our solution to the invasive species problem is basically a very flexible REST API and data storage scheme. The idea is that storing, accessing and aggregating the data involved in identifying and preventing/limiting invasive species is the most difficult part of solving the problem. By creating a generic API to access/update/modify/delete this data, we open up the possibility for all kinds of application developers on both sides of the problem to create unique application solutions. All applications use the same data set in an open, standard way. This means that anyone who uses the API (regardless of context) will effectively be helping to contribute to the data set.

 

For example:

Someone might want to create an iOS application that displays a map of invasive species in a particular location. The application (because it is on an iOS device) could take advantage of location information and use that in combination with the data fetched from our API to render the data in a meaningful and elegant way.

 

Someone else might create a mobile application that could scan special QR codes printed on invasive species warning signs posted at vulnerable locations. The application could then send that data back to the API to help build the database by adding a location that was previously not incorporated into the database.

 

There could be any number of administrative applications created to add/update/delete and otherwise manage the data from the perspective of a state fish and wildlife department or a state/national parks department.

 

One of the best parts about our solution is that while it allows anyone and everyone to create their own applications to access or administrate the data, all the data exists in one big chunk. This means that, for example, if two unknown people add two locations as invasive that happen to intersect, the API could realize this and automatically merge the polygons and maintain data integrity. This allows "crowd-sourcing" of the building of the data set (which could potentially be very large).

 

https://speakerdeck.com/u/morgant/p/species-invaders

 

 

Why we are working on this problem: 

We're both pretty concerned about the negative environmental impact invasive species have. Just one little mindless slip-up can wreak havoc on a fragile local ecosystem, and people would likely never transplant an invasive species on purpose. So really, the problem is one of education and awareness. Solving that aspect of the problem really drove our solution to be as flexible, dynamic and simple as possible. It allows a particular community or organization to define their specific customized needs that fit their resources.

What we accomplished during the event: 

We were able to accomplish creating and defining our API structure and best practices for how to access it. Much of the functionality is currently working including enough of the accessors to drive a simple demo widget.

Progress made since the event: 

Not applicable.

Traction: 

Not applicable

Next steps: 

The next steps would be securing somewhere to host the database and API server. The resources required for this are relatively minimal as we have been careful to limit the size of data being transferred by the API. The data should only exist in one place, but users of the API could manage their own devices, servers, applications, etc.

 

Here is our roadmap (also available on the Github page):

===========================================

Alpha Release
  • We are here. Core API mostly implemented, plus an example widget that talks to the API.
Beta ReleaseAPI:
  • Feature Complete GET & POST endpoints
  • Better common name management
  • Return Wikipedia data/links
  • Support for polygon merging
  • Pending/Approved status for species, location, and activity data
  • Require specific auth privileges to edit species, location, and activity data
  • OAUTH for authentication for POST
Widget:
  • Icons for kingdom/phylum of species
  • Query species by viewport
  • Support for activities
v1.0API:

Any additional features?

Web Admin Interface:

A web administration interface for managing the data, API authentication, etc.

Widget:

Developed into something easily embedded in an environmental action group or outdoor activities website w/basic config & theming options

Mobile Web App:

A mobile web app, built on the full feature set of the API that allows individuals (amateur or professionals) to search for invasive species information by:

  • Activity that they'd like to partake in (e.g. camping, fishing, swimming, gardening, etc.)
  • Traveling from point A to point B
  • A current location
  • A plant/animal that they've spotted

Also, the ability to post locations (both native & invading) and species from anywhere.

Other Partners:

Any other partners: web, desktop, and mobile app developers; professionals; scientific researchers; environmental activism organizations

Category: 
Status: 
Programming languages: 
Frameworks: 
End user environments: 
Server requirements: 
LAMP Stack, PHP 5.3+, MySQL 5.0+
What RHoK event this project is being submitted for: 
Images and Video: 
0
Your rating: None

UI/UX design support provided by Azavea