StackRank’s Technology Stack
The StackRank app’s technology stack is made up of the following: Swift > Node.js > MongoDB > Ubuntu > DigitalOcean.
StackRank’s iOS client was created as a native app using Apple’s Swift programming language. We make use of AlamoFire (for networking), AlomoFireImage (image transfers) and SwiftyJSON (JSON parsing). We use Cocoa Pods as our client plug-in framework. StackRank also integrates with Twitter’s Fabric framework making use mostly of Crashlytic’s for crash monitoring.
The StackRank client interacts with the StackRank Rest API built using Node.js. Principle Node.js modules utilized include: Express.js (app framework), Passport (auth), Mongoose (db schema). Bootstrap and EJS was used for the marketing site and admin Web pages. Mailgun was used for password reset emails. Bcrypt and Crypto were used for password cryptography. APN was used for connecting to iOS Notifications Server. Other modules include: Async, Body-parser, Compression, Connect-mongo, Cookie-parser, Ejs, Express-session, Morgan, Multer, Passport-local, Short-id.
MongoDB, is used as StackRank’s data store.
StackRank’s backend is hosted in Digital Ocean’s cloud making use of a virtual Ubuntu machine with an Nginx server as a reverse proxy. Node.js processes are run using PM2 to provide robust process management and monitoring.
As StackRank starts to scale we will look to migrate the backend to a more full-service app platform such as Heroku. Also, we will need to start development for Android and anWeb client possibly looking into a hybrid framework such Facebook’s React-Native.