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.
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).
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.
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.
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):
- We are here. Core API mostly implemented, plus an example widget that talks to the API.
- 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
- Icons for kingdom/phylum of species
- Query species by viewport
- Support for activities
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 optionsMobile 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