Backend platform for node.js
General purpose backend framework. The primary goal is to have a scalable platform for running and managing node.js servers for Web services implementation.
This framework only covers the lower portion of the Web services system: node.js processes, HTTP servers, basic API functinality, database access, caching, messaging between processes, metrics and monitoring, a library of tools for developing node.js servers.
For the UI and presentation layer there are no restrictions what to use as long as it can run on top of the Express server.Features:
- Exposes a set of Web service APIs over HTTP(S) using Express framework.
- Database API supports SQLite, DynamoDB, ElasticSearch with all basic operations behaving the same way allowing you to switch databases without changing the code.
- Database operations (Get, Put, Del, Update, Select) for all supported databases using the same DB API.
- Experimental database drivers for PostreSQL, MySQL, Cassandra, Riak, CouchDB
- Experimental DynamoDB Streams processing in background worker processes
- Easily extensible to support any kind of database, provides a database driver on top of Redis with all supported methods as an example.
- Provides accounts, connections, locations, messaging and icons APIs with basic functionality for a quick start.
- Supports crontab and queue job processing by separate worker processes.
- Authentication is based on signed requests using API key and secret, similar to Amazon AWS signing requests.
- Runs web server as separate processes to utilize multiple CPU cores.
- Supports WebSockets connections and process them with the same Express routes as HTTP requests
- Supports several cache modes(Redis, Memcache, Hazelcast, LRU) for the database operations, multiple hosts support in the clients for failover.
- Supports several PUB/SUB modes of operations using Redis, RabbitMQ, Hazelcast.
- Supports async jobs processing using several work queue implementations on top of SQS, Redis, DB, RabbitMQ, Hazelcast.
- ImageMagick as a separate C++ module for in-process image scaling, see bkjs-wand on NPM.
- REPL (command line) interface for debugging and looking into server internals.
- Supports push notifications for mobile devices, APN and GCM/FCM.
- Supports HTTP(S) reverse proxy mode where multiple Web workers are load-balanced by the proxy server running in the master process instead of relying on the OS scheduling between processes listening on the same port.
- Can be used with any MVC, MVVC or other types of frameworks that work on top of, or with, the Express server.
- AWS support is very well integrated including EC2, S3, DynamoDB, SQS and more.
- Includes simple log watcher to monitor the log files including system errors.
- Supports i18n hooks for request/response objects, easily overriden with any real i18n implementation.
- Integrated very light unit testing facility which can be used to test modules and API requests
- Supports runtime metrics about the timing on database, requests, cache, memory and request rate limit control
- Hosted on [github](https://github.com/vseryakov/backendjs), BSD licensed.