Node.js ES6 framework for reactive, data-driven apps and APIs

npm i -g waigo

Build data-driven APIs, apps and reactive websites.
Uses Koa and RethinkDB.

  • Koa and RethinkDB
    Waigo builds on Koa, the ES6-based spiritual successor to Express. Elegantly compose complex middleware patterns. Use RethinkDB to build fully end-to-end reactive applications.
  • Plugin architecture
    Extend or override any part of the core framework as you see fit. Only use what you need. Publish your customizations as plugins (NPM modules) to re-use across your other Waigo projects.
  • Form handling
    Declaratively build forms with automatic sanitization and validation. Initialize and submit forms from any part of your application. Output a form's configuration as JSON. CSRF-prevention comes built-in.
  • Routing and APIs
    Powerful route configuration with intelligent nesting and per-route and per-HTTP-method middleware customization. All routes double-up as JSON API endpoints. Control the output format of any route using query parameters. Easily add your own custom output formats.
  • Frontend is yours
    Effortlessly build basic HTML using Pug templating and the built-in template helpers. Use whatever Javascript frameworks (e.g. Angular/React) and CSS languages you want the rest of the way.
  • Users and Roles
    Built-in user accounts. Authenticate users via password, OAuth or custom mechanisms. Assign roles to users, and elegantly control who gets access to what via the Access Control List (ACL).
  • Email notifications
    Built-in configurable notifications via email and Slack. Target notifications to specific users or roles and trigger them asynchronously. Send emails to console, using SMTP or a provider (e.g. Mailgun).
  • Scheduled Tasks
    Built-in Cron system for task scheduling. Tasks run within the full application context, giving you access to all your data and other parts of the app. Programmatically start, stop and run tasks.
  • Quick Setup
    Create and run a skeleton app in seconds using the command-line client. Generate gulp scripts to enable live-reload in the browser during development. Install the Admin interface for easy data management.

Quick start

$ npm init
$ waigo init
$ waigo init-gulp
$ gulp

Visit http://localhost:3000 in your browser to see it.

Now start editing files and the browser page will auto-reload!