blacktide

1.0.0-beta.6 • Public • Published

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

Package Sidebar

Install

npm i blacktide

Weekly Downloads

2

Version

1.0.0-beta.6

License

MIT

Last publish

Collaborators

  • victorph