Skip to content


Prasad Talasila edited this page Jan 23, 2019 · 171 revisions

Reference Architectures

Submitty - an open source programming assignment submission system website, github (supports Java)
MIT tools:
    didit - github, web a classroom continuous build server
    collabode - github, web Collabode is a web-based Java IDE for close, synchronous collaboration between programmers.
    caesar - github Collaborative code review

Complementary Code Components

Codalab - platform for executing code for reproducible research; can use parts of this project in ours.
botpress - wordpress-like bot creation framework github
pkg - A packaging system to produce binary from node.js application. This can be used to simplify the deployment of all the AutolabJS components, especially the execution nodes.
parcel.js - A packaging system to deliver client-side assets of a web application. This can deliver the static assets of the website.
signal - an open source secure communication library and application github, signal-protocol-js, docs
dat - distributed, secure P2P file system node.js module, website, dat library and cli
IPFS - P2P secure hypermedia, file distribution system and name lookup system. A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.
git servers - gitolite, gitolite + ldap authentication, gitolite config via git repo-1,2, NodeJS-Git-Server
ionic framework - build native apps using web technologies
gittorrent - A decentralization of GitHub using BitTorrent and Bitcoin
carlo - Web view for Node applications via Google Chrome
electron - cross platform desktop apps (use for installation), GUI for autolabcli, review
Blockstack - Distributed P2P web with distributed DNS, PKI Blockstack-core, blockstack organization
docker-node: github, docker hub
Netflix Conductor - process workflow orchestrator for microservices,
typeahead - useful text box suggestions during install setup
Install Cloud9 locally - 1, 2, 3, 4
DB + Cache - Redis, review, EVCache
gogs - Gogs is a painless self-hosted Git service. github, api docs, nodejs-client
GitBlit - Java-based git server

zeroMQ - home, message matching, comparison with RabbitMQ, competitors, node.js library, review, Redis vs ZeroMQ
(Lesson: use zeroMQ for distributed messaging)
deepstream - real-time messaging library
JSON Web Tokens - tutorial1, tutorial2, node-jsonwebtoken, njwt, jsonwebtoken, jwt
Buildkite - OSS alternative to Gitlab CI-runner
libsodium, sodium announcement
gitlab - install tutorial, security
docker - survey
travis-ci has open-source components that are useful to our project. Especially, look at worker and travis-build
linkerd - another gateway to microservices, review, service mesh vs API gateway
Kong - NGNIX API Gateway with built-in authentication, review, website
Traefik - reverse proxy and load balancer for microservices and docker containers
Zuul - Load balancer and dynamic router from Netflix
gitinspector - The statistical analysis tool for git repositories
deployd - another API builder
muguet - DNS Server and Reverse proxy for Docker
GitLab may be heavily for some installations. For lightweight alternatives, see jgit-based gitblit
Gitiles - web-hosting of git repositories
loki.js - lightweight NoSQL DB for Node.js and Browser website and GitHub
Blessed - ncurses like terminal library for node.js.
plagiarism detector in python
fx - CLI json prettifier and explorer written in JS

Test Generators
Stackoverflow comparison
artillery - load testing of servers including and websocket servers; reviews - 1, 2

Docker, Vagrant, Ansible, Kubernetes
Docker Remote API - helpful for lifecycle management of docker containers
Core OS - wikipedia, website, container linux, rocket container engine, etcd, coreOS on vagrant, fleet process manager
weave - docker networking, DNS and load balancing
Docker swarm mode will be useful in deploying execution nodes
Tests for ansible scripts - 1, 2, 3, 4
Test Kitchen - testing framework for Ansible, review article, PPT Testing in ansible discussion
ServerSpec - another RSpec engine for testing Ansible scripts


process managers for node apps - pm2, hotel, alfred-hotel
Node.js tutorial

JS Libraries

Commander - commandline interfaces in node.js
other CLI libraries for node.js - vorpal.js, vantage.js, caporal.js.
inquirer - A collection of common interactive command line user interfaces.
Node.js REPL module
SWIM - a distributed service discovery algorithm paper, js module, seneca-swim
micro - microservices framework for Node.js
seneca - microservices framework in js github, seneca-web, www, seneca-mesh, seneca-entity, seneca-mysql-store, seneca-load-balancer - learn from this module and redo it from scratch; don't use it, seneca-auth
A more popular framework that is similar to seneca.js is feathers.js - github, website, performance
Shelljs - portable UNIX shell in JS
execa - child process mgmt
Nesh - Node.js interactive shell
liftoff - Launch your command line tool with ease.
[history](Manage session history with JavaScript) - Manage session history with javascript
simple-git - light weight interface for running git commands in any node.js application.
nodegit - similar to simple-git, but much better website, github
[gitlab])( - Gitlab nodejs API Client; not an npm package
gitlab - npm, code gitlab api nodejs library
cli-gitlab - a GitLab CLI library; can learn much from this library code base
nitro - file and shell utils
pm2 - process manager
lodash - functional programming library; successor to underscore, see lodash review, lodash documentation
express-session - session manager for express.js server
forever node.js library
chalk - colored text on terminal
karma - test runner; wrapper around Mocha
Mocha - unit testing framework
chai - assertion library
mocking libraries - jsmockito, sinon, mock-socket, nock, json-server
Browser-based testing overview
phantomjs - headless webkit based browser
casperjs - junit-like wrapper around phantomjs
selenium server - real browser automation tool
webdriverIO - selenium driver for nodejs
cucumber github website - BDD tests written in plain english
protractor - E2E test framework for Angular apps
browser-perf - Performance Metrics for Web Browsers
protractor-perf - E2E test framework to check for performance regressions in Angular apps
node logging basics, log libraries comparison
winston - multi-transport logger
express-winston - winston logger for express server
good logging practices - from Java world, node.js world
debug - most popular JS logging module github npm, njsTrace
morgan - HTTP request logger
sequelize - ORM library
keyv - Simple key-value storage with support for cache, redis, mongo, sqlite, mysql, postgres
lowdb - JSON based DB storing to file system (perfect for configuration)
crypto-js - javascript library of crypto standards
node-sodium, libsodium - nodejs wrappers for NaCl library
OpenPGP in JS - code, website
Stanford Javascript Crypto Library - website, github, paper
Node.js crypto module
jsdoc - Javascript documentation generator
Comparison of documentation tools
validator.js - input validation library
ow - function arguement validator
Async, review
HTTP clients - request, request-promise, superagent
Delivery for file transfer to and from clients
yargs - option parser
Flightplan - Run sequences of shell commands against local and remote hosts. Flightplan is a node.js library for streamlining application deployment or systems administration tasks.
JS Promises - Bluebird
Top Node Packages
Most admired npm packages
npm documentation - commandline options, tutorial
State of Java Script survey
npmtrends - package popularity comparator
validator - string validation package
ipaddr - IP address manipulation and validation package
tldjs - DNS name validation and manipulation
microservices - microservices libraries for node js
awesome nodejs libraries
awesome serverless computing
ES6 modules
Babel - javascript compiler that turns the latest JS/ES code to earlier versions website, review
feathers - open source REST and realtime API layer
API Documentation tools --> swagger, APIdocs, slate, loopback, comparison
Cookies: nodejs - tough-cookie, cookies; browser - js-cookie, Cookies
Pure JS Webapp frameworks - Meteor, sails
express-limiter - express rate limiting package
Node.js frameworks - compilation, review, tutorial
load balancers - node-http-proxy, bouncy, websockets+node-http-proxy, scaling review, reddit opinions
Scaling node.js apps - slides, video, standard options
Service discovery - seaport
Find and list free ports - find-free-port, get-port, minihost
browserify - for having require in browser code
SQL libraries - sequelize, pg, mysql
highlight.js - LaTeX minted equivalent for node.js and browser
bluebird - a JS promises library
HTTP request client libraries - request, axios
node-monitor - remote monitoring of node.js apps
monit - a Linux process monitoring utility
node-config - node.js configuration library
node-cache - in-memory cache for node.js application
Review of Docker monitoring tools - 1, prometheus, collectd, 2, 3, docker blog, 4
base64 - base64 encoder and decoder in the browser
JSONParse - create and handle JSON streams
node plugin systems - Architect, comparison - 1, 2
async - async utilities for node and browser doc
preact - light-weight react framework in JS for browsers
webpack - code bundler and dynamic code loader for JS
architect - a plug-in management system for Node.js, tutorial, presentation
survey of node.js plugin frameworks
broadway - most-popular plug-in system for node.js.
defaults - A simple one level options merge utility
TOML - Simple ini-style config language github, toml-node
Comparison of config formats - review, editorial review, FAQ, toml vs yaml example
(lesson: use YAML for AutolabJS Config and let the custom ConfigParser read YAML and generate JSON config for all the AutolabJS components) isomorphic-git - pure JS implementation of git for node and browsers
js-git and js-github
assemble - a waf-like build tool for web projects
micromatch - regular expressions (regex) matching library for JS

Secure VMs
Secure Remote Password - key negotiation from password, SRP6a is the latest version
RFC5054 - Using the Secure Remote Password (SRP) Protocol for TLS Authentication
RFC2945 - The SRP Authentication and Key Exchange System
Also see chapter 14 of Cyptography Engineering, Bruce Schneier et al., 2010.
Stanford Javascript Crypto Library - website, github, paper
SRP on wiki - see the implementations section for useful node.js, client, java and other language implementations, why not use SRP
(, paper
GNU Crypto - A JAVA cryptographic library
Nimbus SRP - SRP implementation in Java and Javascript
Recommended ciphers and configuration for popular web servers - Cypher List, SSL Labs, OWASP, stackoverflow, Mozilla
libsodium - doc
david - dependency management tool, the badge
suggested security settings - keylength, OWASP, certificate pinning, assessment tools for security settings
HOWTO: tls on node.js
Free SSL certificates - Startcom, Let's Encrypt

code quality tools

codeclimate - website, config, remember to add the code coverage part to this report
eslint - website, config, google-rule-set, airbnb rule set
XO - clean wrapper around eslint
comparison of tools
StandardJS - no frills JS code linter and fixer
istanbul - code coverage tool website, use with coveralls
cucumber - BDD tool website, cucumber.js
overview - article
testling - a TAP compliant headless JS unit tests
ava - concurrent node.js test runner
Tests for web content layout in a browser. See reftests, web platform tests and wptrunner
ESLint config generator
flame graphs - 0x, cpu, node.js, Brendon Gregg's repo, node-stackvis
standard.js - JavaScript Style Guide, with linter & automatic code fixer
queue and job management - bull, kue, celery
flow - Static type checker for javascript web, github
unstated - state management for react apps


statsd - metrics collection server code, polyglot support
graphite - graphing of time series data collected by statsd
store.js - cross-browser storage engine
pkg - Package your Node.js project into an executable

Java Libraries

List of open source Java tools / libraries, see Code Analyzers, Code Beautifiers, Code Coverage Tools, Profilers

Useful Tools

Teamviewer for remote help during labs and office hours
Install gedit plug-ins; enable sidebar and bottom bar (commandline terminal)
GitHub markdown help
Rosetta Code - implementations of same problem in different programming languages
creating a deb package


Eloquent JavaScript
Head First JavaScript
JavaScript: The Good Parts - Crawford website, video
Pro Javascript Performance Monitoring and Visualization, Tom Barker
ES6 features
idiomatic js

Clone this wiki locally
You can’t perform that action at this time.