As Jon and I will be busy throughout the months of June and July, we have dedicated the past few weeks to work full-time on Feedbaker. In a short span of 3 weeks, we spent a total of more than 250 hours working on Feedbaker.
In building Feedbaker, we learnt and made use of many technologies and components that helped simplify coding and collaboration. The rest of this post will be a summary of the components we used, some of which may have been mentioned in previous posts with greater detail.
Our team has a git repository hosted at Github. This helps us to collaborate as we work together on different parts of the app and also logs each change made so that the other team member is aware.
AngularJS allowed us write cleaner and more efficient code by separating the logic layer from the presentation layer. It also enabled the reuse of UI components — which means we do not have to edit multiple files if, for example, we would like to add an additional item to the common navigation bar.
Sass (Syntactically Awesome Style Sheets) is an extension of CSS3 which adds nested rules, mixins and more. Feedbaker uses the SCSS syntax for Sass.
Feedbaker uses the Sass-powered version of Bootstrap. With Bootstrap, our team is able to easily extend the base theme to develop a responsive web application without having to deal with too much CSS media queries.
Express is a web application framework for node. Feedbaker uses express to serve both static pages and dynamic content.
Our team also configured Nginx as a reverse proxy for our web application. This allows us to host multiple node applications on a single server.
To enable real-time display of poll results, Feedbaker uses WebSockets to allow for low-latency bi-directional connection between client and server. Socket.IO helps establish a WebSocket connection and allows data to be pushed to the client when fresh data is available.
MongoDB is a NoSQL database. Feedbaker uses MongoDB to store user data and cache session information.
Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Our team used Mongoose to interface with MongoDB, simplifying things such as validation of models.
Forever is a simple CLI tool for ensuring that a given script runs continuously. Our team makes use of this node module in our production server to keep the Feedbaker application running.
Bower is a package manager for front-end packages. It eliminates the need to commit vendor codes into the repository. Bower maintains a list of front-end packages the app needs in a file called bower.json. Dependencies are resolved automatically and are downloaded straight from the package maintainer’s git repository.
npm is the official package manager for Node.js. Similar to Bower, npm takes care of all the packages needed to build, test and deploy the webapp. npm also tracks these packages in the app’s package.json.