SoGeo API
Designed to help developers build location-based, socially aware applications on top of a cloud infrastructure and POI database, the API was initially developed to serve white label mobile- and web-apps for partners, and has quickly matured in further support of Whatser’s own iPhone, Android, iOS, and web family.
With so many clients, it was easy to find common use-cases and create a set of features and endpoints generalized for location-based activity. Starting with OAuth 2 draft 6, supporting batch requests and customizable response data, anonymous users and progressive signup, neatly wrapping and exposing 3rd party APIs, tailing server logs for real-time analytics and detailed searching/funneling, and search across data associations with shortcut parameters for social graph objects (me, followers, nearby, etc), I tried to maintain a high standard of leading API design optimizing for both ease of use and power.
For storage I elected to use MySQL (versus a more trendy NoSQL solution), but strategically de-normalized and running behind a Sphinx search layer with carefully crafted indexes for the more expressive geospatial and social queries.
Without a big team, I had to rely on test driven development from the begging and, then later, performance and stress tests reach the stability and scalability requirements of an open, data-heavy API. At last count the system had 1:1.8 test/code ratio and was happily outperforming competitors in search response times.
Colophon: Ruby, Rails, Rack, Sphinx, API design, REST, serialization, data partitioning, TDD, OAuth 1/2, client/server architecture, data consistency and queuing, analytics, Amazon S3, MySQL, Points of Interst, identity resolution, geospatial
