With Backstrok.es on my mind, I realized I needed a solid Foursquare library. Looking around, I noticed there were few implementations, and most either were abandoned or lacked access to the endpoints I needed. So I decided to fork a library, Foursquare-on-node, that seemed the most complete and add functionality.
Inevitably, I refactored the fork well beyond a simple pull request. After contacting the author, I applied an MIT license and released my node-foursquare library in the npmjs repository for Node. It is currently listed on the Foursquare Developer site as the only library for using Foursquare within Node.
Since the Foursquare API is so well-documented, I was able to quickly add all “getter” endpoints to the library. There seems to be little demand for the “setter” endpoints, but I’m planning on adding them soon. I’m focusing on a good testing strategy for them first, (adding dummy data to Foursquare production in the process of testing simply doesn’t seem prudent).
This library conforms to Foursquare API v2 and uses log4js as a logging strategy. It has great configuration options, such as warnings vs. errors on deprecated endpoints and targeting specific API changelog numbers. I currently use it in my Backstrok.es project.