Skip to content
Ethan Smith edited this page Mar 25, 2015 · 7 revisions

The Stack

Product Version What it does How we use it
Hosting
DigitalOcean
Amazon S3
Databases
OrientDB 2.0.0 OrientDB is an Open Source NoSQL DBMS with the features of both Document and Graph DBMSs. OrientDB is AskNature's primary database, and is used to store and index everything except for some user information.
Platform
Node.js 0.12.1 Node.js® is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. Node provides the foundation of the AskNature application.
NPM Packages
async Async provides around 20 functions that include the usual 'functional' suspects (map, reduce, filter, each…) as well as some common patterns for asynchronous control flow (parallel, series, waterfall…). All these functions assume you follow the Node.js convention of providing a single callback as the last argument of your async function.
bcrypt-nodejs Native JS implementation of BCrypt (Bcrypt is a cross platform file encryption utility) for Node. Has the same functionality as node.bcrypt.js expect for a few tiny differences.
body-parser Body parsing middleware for singlepart bodies.
cached A simple caching library, inspired by the Play cache API and biased towards showing stale data instead of dog piling. The interface only exposes very limited functionality, there's no multi-get or deletion of cached data. The library is designed to support different caching backends, though right now only memcached is implemented.
colors Color and style in your node.js console.
compression Node.js compression middleware. The following compression codings are supported: deflate & gzip
cookie A basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.
cookie-parser Parse Cookie header and populate req.cookies with an object keyed by the cookie names. Optionally you may enable signed cookie support by passing a secret string, which assigns req.secret so it may be used by other middleware.
director A routing library that works in both the browser and node.js environments with as few differences as possible. Simplifies the development of Single Page Apps and Node.js applications. Dependency free (doesn't require jQuery or Express, etc).
ejs Embedded JavaScript templates.
Express.js Officially, Express.js is a "Fast, unopinionated, minimalist web framework for Node.js." This article provides a much more nuanced overview and is a great primer for Node & Express. Express adds a framework on top of Node that AskNature uses for routing, request handling, and a bunch of other cool stuff.
express-session Simple session middleware for Express.
flux An application architecture based on a unidirectional data flow.
form-serialize This module is based on ideas from jQuery serialize and the Form.serialize method from the prototype library. form-serialize supports two output formats, url encoded (default) or hash (js objects).
griddle-react Griddle is a simple grid Component for use with React. It depends on underscore.js and React.
intl Google have an implementation of this API that is available in recent versions of V8 and Chrome/Chromium 24 and later. Mozilla also have a working implementation in the current Firefox nightly builds. Intl.js fills the void of availability for this API. It will provide the framework as described by the specification, so that developers can take advantage of the native API in environments that support it, or Intl.js for legacy or unsupporting environments.
keymirror A simple utility for creating an object with values equal to its keys. Identical to react/lib/keyMirror
lodash The modern build of lodash exported as Node.js/io.js modules. A JavaScript utility library delivering consistency, modularity, performance, & extras.
lusca Web application security middleware for Express.
memcached memcached is a fully featured Memcached client for Node.js. memcached is built with scaling, high availability and exceptional performance in mind. We use consistent hashing to store the data across different nodes. Consistent hashing is a scheme that provides a hash table functionality in a way that adding or removing a server node does not significantly change the mapping of the keys to server nodes. The algorithm that is used for consistent hashing is the same as libketama.
method-override Lets you use HTTP verbs such as PUT or DELETE in places where the client doesn't support it.
morgan HTTP request logger middleware for node.js
node-jsx transparently require() jsx from node
nodemailer Easy as cake e-mail sending from your Node.js applications
nodemailer-sendgrid-transport This module is a transport plugin for Nodemailer that makes it possible to send through SendGrid's Web API!
object-assign ES6 Object.assign() ponyfill
Oriento Official node.js driver for OrientDB. Fast, lightweight, uses the binary protocol—which happens to be the fastest option available. Oriento lets our Node application talk to the database in the most efficient way possible.
Passport 0.2.1 Passport is authentication middleware for Node.js. Extremely flexible and modular, Passport can be unobtrusively dropped in to any Express-based web application. A comprehensive set of strategies support authentication using a username and password, Facebook, Twitter, and more. Passport provides authentication and session management for users with AskNature accounts as well as Google, Twitter, Facebook, and LinkedIn.
passport-facebook
passport-google-oauth
passport-linkedin-oauth2
passport-local
react
react-avatar
react-fontawesome
react-form-data
react-infinite-extended
react-intl
react-tap-event-plugin
react-widgets
scribe-editor
serve-favicon
superagent
Bower Components
consolelog
html5shiv
modernizr
normalize.css
es5-shim
bootswatch-dist
pace
animate.css
components-font-awesome
Dev Dependencies
bower
browserify
connect-livereload
deamdify
Grunt
imagemin
include-all
jshint
Karma
karma-chai
karma-mocha
karma-phantomjs-launcher
kss
minifyify
react-bootstrap
rimraf
time-grunt
underscore.string
External Services
Jenkins
Salesforce