Blacktide
Blacktide is a lightweight back-end framework with optimization in security and based on Express.
Notes
* Beta version, not yet ready for production
* Works great stand alone, works better with the blacktide-cli tool
* For quick development
* REST
* No static content
* No sessions
Installation
$ npm i -S blacktide
Configuration
See blacktide-cli for more information about the cli tool to aid development in Blacktide.
How to run with pm2
$ NODE_ENV=production pm2 start services/ --name 'myapp'
Getting started (with blacktide-cli)
Lets create a very simple alerts API, first we create the folder for the project and enter it:
$ mkdir alerts && cd alerts
Creating the app, remember to select to use mongoose
$ blacktide generate app alerts
We are going to need a model for that
$ blacktide generate model alerts
After all that is done, dont forget to install everything, before this step is a very good time to install aditional dependencies!
$ npm i
We have all we need to get started editing some code:
'use strict'; const blacktide = require( 'blacktide' ); blacktide .service( '', { // the / is optional create: ( req, res, next ) => { blacktide .db .models .alerts .create( { type: 'info', text: req.body.text }, ( err, doc ) => { if ( err ) { return next( err ); } res.json( doc ); } ); } } );
With that done we can create alerts on our database!
Usage
Simple
const blacktide = require( 'blacktide' ); blacktide .service( '/hello', { // the / is optional get: ( req, res, next ) => { 'use strict'; res.json( { content: 'hello world' } ); } } );
At root or /
const blacktide = require( 'blacktide' ); blacktide .service( '', { // to attach to / just leave the service name empty get: ( req, res, next ) => { 'use strict'; res.json( { content: 'hello world' } ); } } );
You can also access Express via:
const blacktide = require( 'blacktide' ); blacktide .app .use( ( req, res, next ) => { } );
Example of a full service:
const blacktide = require( 'blacktide' ); blacktide .service( 'users', { // Called before all routes. before ( req, res, next ) { 'use strict'; req.passing = true; next(); }, // /users/1 get ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // /users find ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // /users create ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // /users/1 put ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // /users/1 patch ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // /users/1 delete ( req, res ) { 'use strict'; res.json( { body: req.body, params: req.params, query: req.query } ); }, // Called after all routes. after ( req, res, next ) { 'use strict'; console.log( req.passing ); next(); } } );
Run some tests
npm test
License
MIT