Skip to content

fistlabs/fist

Repository files navigation

fist the framework Build Status

Fist is a nodejs framework designed to help create scalable server applications.

##What do I get?

#####Plugin system Modular application structure. Automatic project files loading.

fist_plugins/
    models/
        user.info.js
        news.list.js
        news.available_list.js
    controllers/
        news_page.js

#####Loosely coupled architecture Focus on unit development. Encapsulated business logic.

app.unit({
    name: 'news.available_list',
    deps: ['news.list', 'user.info'],

#####Data models Simple and intuitive data structures. Unobtrusive data typing.

{
    errors: {},
    result: {
        news: {
            available_list: [
                {
                    type: "post",
                    visibility: "all",

#####Thin controllers Just check that your models are valid.

app.unit({
    name: 'news_page',
    deps: ['news.available_list'],
    main: function (track, context) {
        if (context.e('news.available_list')) {
            track.status(500).send();

#####Built-in logging tools Always clear what happening and where. More reliability.

app.unit({
    name: 'user.info',
    main: function (track, context) {
        context.logger.debug('Checking user by sessid\n"%s"', track.cookie('sessid'));

#####Built-in cache Just specify what parts of your program can be cached. Less loading. More responsiveness.

app.unit({
    name: 'news.list',
    maxAge: 5000,

##Hello, world!

$ npm install fist

app.js:

var fist = require('fist');
var app = fist();
app.listen(1337);

fist_plugins/routes.js:

module.exports = function (app) {
    app.route('GET /hello/(<name>/)', 'hello_page');
};

fist_plugins/controllers/hello_page.js:

module.exports = function (app) {
    app.unit({
        name: 'hello_page',
        deps: ['greeting_data'],
        main: function (track, context) {
            track.send(context.r('greeting_data.helloText'));
        }
    });
};

fist_plugins/models/greeting_data.js:

module.exports = function (app) {
    app.unit({
        name: 'greeting_data',
        main: function (track, context) {
            return {
                helloText: 'Hello, ' + context.p('name')
            };
        },
        params: {
            name: 'what is your name?'
        }
    });
};
$ node app.js

See the full example code

###Quick start

##Docs


LICENSE MIT

About

NodeJS application framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •