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, PostgreSQL, MySQL, DynamoDB, Cassandra, MongoDB, Redis with all basic operations behaving the same way allowing to switch databases without changing the code.
- Database drivers for LevelDB, LMDB, CouchDB, Riak, ElasticSearch support only a subset of all database operations
- Easily extendable to support any kind of database, provides a database driver on top of Redis with all supported methods.
- Provides accounts, connections, locations, messaging and icons APIs with basic functionality for a qucik start.
- Supports crontab and queue job processing by seperate workers.
- 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.
- Supports common database operations (Get, Put, Del, Update, Select) for all databases using the same DB API.
- ImageMagick is compiled as C++ module for in-process image scaling.
- REPL(command line) interface for debugging and looking into server internals.
- Geohash based location searches supported by all databases drivers.
- 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 or with the Express server.
- AWS supports 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
- Support 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.