
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
backend-js
Advanced tools
Backend-js is a layer built above expressjs to enable behaviours framework for nodejs applications.

Backend-js is a layer built above expressjs and socket.io to enable the Behaviours Framework for Node.js applications.
npm install backend-js
var backend = require('backend-js');
var App = backend.app(__dirname + '/behaviours', {
path: '/api/v1',
parser: 'json',
port: 8383,
origins: '*'
});
var App = app(path, options)| Parameter | Type | Description |
|---|---|---|
path | string | Path to the behaviours directory. |
options | object | App configuration options. |
options.path | string | Prefix path appended to the beginning of routes. |
options.parser | string | Supports json, text, raw, or urlencoded. Parses request/response body accordingly. |
options.parserOptions | object | Options for body-parser. |
options.port | number | Port of the server. |
options.origins | string | Allowed AJAX origins (comma-separated or "*" for all). |
options.static | object | Options for serving static files. |
options.static.route | string | Virtual route for static content. |
options.static.path | string | Path to directory containing static files. |
| Returns | Type | Description |
|---|---|---|
App | function | Express app instance (API reference). |
var backend = require('backend-js');
var model = backend.model();
var User = model({
name: 'User'
}, {
username: String,
password: String
});
var ModelEntity = model(options, attributes, plugins)| Parameter | Type | Description |
|---|---|---|
options | string | object | Model name or full configuration object. |
options.name | string | Name of the model. |
options.features | object | Custom model features passed to the data access layer. |
options.query | array | Default query represented by QueryExpression. |
attributes | object | Schema attributes (String, Number, Date). Supports nested objects or arrays. |
plugins | array | Array of mongoose plugins. |
| Returns | Type | Description |
|---|---|---|
ModelEntity | function | Constructor for the defined model entity. |
var QueryExpression = backend.QueryExpression;
var ComparisonOperators = {
EQUAL: '=',
NE: '$ne'
};
var LogicalOperators = {
AND: '$and',
OR: '$or',
NOT: '$not'
};
backend.setComparisonOperators(ComparisonOperators);
backend.setLogicalOperators(LogicalOperators);
var query = [
new QueryExpression({
fieldName: 'username',
comparisonOperator: ComparisonOperators.EQUAL,
fieldValue: 'name'
}),
new QueryExpression({
fieldName: 'password',
comparisonOperator: ComparisonOperators.EQUAL,
fieldValue: 'pass',
logicalOperator: LogicalOperators.AND,
contextualLevel: 0
})
];
setComparisonOperators(operators) / setLogicalOperators(operators)| Parameter | Type | Description |
|---|---|---|
operators | object | Key-value pairs mapping to database engine operators (used by data access). |
var expression = new QueryExpression(options)| Parameter | Type | Description |
|---|---|---|
options.fieldName | string | Field name in the model. |
options.comparisonOperator | string | Comparison operator (=, $ne, etc.). |
options.fieldValue | any | Value to compare against the field. |
options.logicalOperator | string | Logical operator ($and, $or, $not). |
options.contextualLevel | number | Nesting level of conditions (for grouping). |
| Returns | Type | Description |
|---|---|---|
expression | object | Query expression object used in queries. |
var ModelEntity = backend.ModelEntity;
var entity = new ModelEntity({});
var model = entity.getObjectConstructor();
var schema = entity.getObjectAttributes();
var features = entity.getObjectFeatures();
var query = entity.getObjectQuery();
var entity = new ModelEntity(features)| Parameter | Type | Description |
|---|---|---|
features | object | Special model functionalities passed to the data access layer. |
| Returns | Type | Description |
|---|---|---|
entity | object | Holds model metadata and schema. |
Entity Methods:
getObjectConstructor() – returns model constructorgetObjectAttributes() – returns schema fieldsgetObjectFeatures() – returns model featuresgetObjectQuery() – returns default query arrayvar getUsers = behaviour({
name: 'GetUsers',
version: '1',
path: '/users',
method: 'GET'
}, function(init) {
return function() {
var self = init.apply(this, arguments).self();
self.begin('Query', function(key, businessController, operation) {
operation
.entity(new User())
.append(true)
.apply();
});
};
});
var Behavior = behaviour(option, constructor)| Parameter | Type | Description |
|---|---|---|
option | object | API metadata (name, version, path, method, params, returns). |
constructor | function | Business logic with database or response mapping functionality. |
Define your own data access layer like below:
var backend = require('backend-js');
var ModelController = function () {
self.removeObjects = function (queryExprs, entity, callback) {
// do remove
};
self.addObjects = function (objsAttributes, entity, callback) {
// do add new
};
self.getObjects = function (queryExprs, entity, callback) {
// do select
};
self.save = function (callback, oldSession) {
// do save
};
};
ModelController.defineEntity = function (name, attributes) {
// define entity
return entity;
};
ModelController.prototype.constructor = ModelController;
backend.setModelController(new ModelController());
Explore the official starter to learn Backend-JS with examples:
🔗 https://github.com/QuaNode/BeamJS-Start
FAQs
Backend-js is a layer built above expressjs to enable behaviours framework for nodejs applications.
The npm package backend-js receives a total of 2 weekly downloads. As such, backend-js popularity was classified as not popular.
We found that backend-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.