Node.js ES6 framework for reactive, data-driven apps and APIs
Build data-driven APIs, apps and reactive websites.
Uses Koa and RethinkDB.
- Koa and RethinkDBWaigo 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 architectureExtend 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 handlingDeclaratively 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 APIsPowerful 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.
- Users and RolesBuilt-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 notificationsBuilt-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 TasksBuilt-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 SetupCreate 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.
$ 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!