Git Product home page Git Product logo

kites-engine's Introduction

kites-engine

Core Engine of Kites

Join the chat at https://gitter.im/nodevn/kites npm version npm downloads Travis

Kites is a framework providing dynamic applications assembling and API routing. It contains a lot of templates and extensions help build up applications quickly.

The engine is a core component that is responsible for connecting extensions and initializing in order to launch the Web application.

Simplest Example

Here below is TypeScript version: The application simply prints out a greeting: Hello World!

import engine from '@kites/engine';

async function bootstrap() {
    const app = await engine().init();
    app.logger.info('Hello World!');
}

bootstrap();

Node/JavaScript version:

const engine = require('@kites/engine');

// init the kites engine
engine().init().then((core) => {
    core.logger.info('Hello World!')
})

API Usage

Extensions auto discovery

Kites engine has an option to allow the application auto discover extensions in the directory tree. This means kites will searches for files kites.config.js which describes the extensions and applies all the extensions that are found automatically.

This is fundamental principle for allowing extensions as plugins to be automatically plugged into the system. The application completed with minimalist lines of code, but very powerful!

import engine from '@kites/engine';

async function bootstrap() {
    // let kites autodiscover the extensions
    const app = await engine(true).init();
    app.logger.info('A new kites engine started!');
}

bootstrap();

Kites extensions auto discovery might slows down the startup and can be explicitly override by using use function. The following code has a slightly complicated configuration for each extensions.

import engine from '@kites/engine';
import express from '@kites/express';
import roomrtc from '@kites/roomrtc';

async function bootstrap() {
    const app = await engine()
        .use(express())
        .use(roomrtc())
        .init();

    app.logger.info('A new kites engine started!');
}

bootstrap();

Extensions

You are welcome to write your own extension or even publish it to the community. Please check test/extensions to see an example.

TODO:

  • Write an article for implementing custom kites extension

Logging

kites leverages winston 2 logging abstraction together with debug utility. To output logs in the console just simply set the DEBUG environment variable

DEBUG=kites node app.js

on windows:

set DEBUG=kites & node app.js

kites exposes logger property which can be used to adapt the logging as you like. You can for example just add winston console transport and filter in only important log messages into console.

import engine from '@kites/engine';
import winston from 'winston';

const app = engine();
app.logger.add(winston.transports.Console, { level: 'info' });

kites-engine's People

Contributors

vunb avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

kites-engine's Issues

Kites 2.0 - New programming style for develpment

Kites 2.0 goals:

  • Build backend applications grow into larger size, complex and easy to debug & maintain
  • Enforce strong typed contracts across fields, method’s arguments & return type
  • Use typescript for development

Custom option discover

Kites should allow discover as an input option with data-types: boolean for auto discovery, string for a folder, or object for listed extensions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.