We have deployed our Node.js
stack for many clients
and internal apps and achieved good results!
It works well and we have not had any issues with "performance"
or "scaling" deploying to AWS.
For an example of app built using our Node.js Stack
see: https://github.com/TheScienceMuseum/collectionsonline
There's no "reason" to "rewrite"
any of our existing projects to any other "stack".
Node.js
works perfectly well
and will continue to be supported
for the lifetime
of the project(s)
See: "tl;dr" section below if you are interested in why we decided to "evolve" to "PETAL" for new projects...
The following diagram is an overview of our Node.js
stack:
Note: To edit/improve this diagram: #1
We have produced a complete beginners guide for each of the components in our stack. (see below)
We craft code to scratch our own itch and everything we do is always Open Source
Project | Used For | Build Status | Test Coverage | Dependency Status | Tutorial |
---|---|---|---|---|---|
env2 | Loading Environment Variables | learn-environment-variables | |||
esta | ElasticSearch CRUD | learn-elasticsearch | |||
goodparts | Consistent Code (Linting & Style) | goodparts#why | |||
hapi-auth-jwt2 | Authentication & Sessions | learn-json-web-tokens | |||
hapi-error | Human-Friendly Error Messages | hapi-error#why | |||
hapi-login | User Login | learn-hapi | |||
hapi-postgres-connection | Postgres Connection Pooling | learn-postgresql | |||
hapi-redis-connection | Simplify Redis Connection | learn-redis | |||
hapi-register | User Registration | learn-hapi | |||
hapi-riot | Server-side (Fast) Rendering of Riot Tags | learn-riot |
Note: to update this table, use the script:
generate_dependency_table.js
- Node.js - the most popular JavaScript runtime for easily building fast,
scalablesimple network applications. Lightweight and efficient, perfect for data-intensive real-time apps. https://nodejs.org/ - Hapi.js - A rich web framework for building applications and services. https://github.com/dwyl/learn-hapi
- Socket.io - a JavaScript library for realtime web applications. It enables realtime, bi-directional communication between web clients and server. Socket.io lets us send data to/from everyone connected to our app(s) without having to refresh the web page. https://socket.io/
- Riot.js - is the most light-weight user-interface (UI) framework available which is compatible with IE 8/9 and has good server-side rendering (which means pages load faster for slow devices like budget smart phones). see: https://github.com/dwyl/learn-riot
- Redis - the most popular in-memory data store which is essential
for building the fastest possible apps. read more: https://github.com/dwyl/learn-redis - ElasticSearch - the most feature-rich search engine. we use it to find things fast. Learn more: https://github.com/dwyl/learn-elasticsearch
We carefully select and only use well-maintained "pure" JavaScript modules in our development toolchain:
-
Tape for testing: https://github.com/dwyl/learn-tape
-
Istanbul for Code Coverage: https://github.com/dwyl/learn-istanbul
-
Pre-commit for ensuring all commits pass strict quality checks
before
being pushed to GitHub. see: https://github.com/dwyl/learn-pre-commit -
GoodParts "linting" and checking code style is consistent: https://github.com/dwyl/goodparts
-
CodeCov for detailed test/code coverage stats https://github.com/dwyl/learn-istanbul#tracking-coverage-as-a-service
-
CodeClimate for tracking code quality: https://github.com/dwyl/learn-codeclimate