Strongly Typed Express Server.


License
ISC
Install
npm install rupert@1.0.1

Documentation

Rupert

Your friendly full stack Javascript librarian. Rupert handles every piece of programming at the front edge, letting teams and developers quickly and efficiently write business code for browser clients and their backing HTTP APIs.

When a programmer today first comes across full-stack javascript development, it's daunting the number of technologies and libraries needed to build an application. From the bottom up, you likely have docker, node, npm, grunt, mocha, karma, chai, express, mongo, mongoose, passport, oauth, cucumber, angular, protractor, bootstrap, firebase and plugins for all of those. Rupert consolidates all of these into a single library. Rupert knows all the configurations, and all the little tips and tricks. It is configurable & extensible, with a well-documented API. Rupert is the go-to microservices stack, like Rails formalized the three-tier architecture.

Getting Started

  1. Create a new project.
    1. On Github, set the name and description. Generate a Readme and license.
    2. Clone the project from GitHub.
  2. Unpack a seed app:
    • curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/bare.tgz | tar x
    • npm init
      • You will be prompted for a project name, license, etc.
      • While npm is smart in initialization, you can set a name, etc in your npmrc if you create packages often.
    • npm install
  3. Choose your frontend toolkit.
    • Angular & Bootstrap npm install --save rupert-plugin-angular rupert-plugin-bootstrap
    • Ionic (includes angular) npm install --save rupert-plugin-ionic
    • The default Angular package name is rupert-app, in ./src/client/index.jade, ./src/client/main.js, and other places. Edit this as needed.
    • (Coming Soon) npm run rename <NEW NAME> to change all instances of the root module name.

Commands

$ node app.js, $ npm start Starts the application. Will print the root url path to the command line. Serves the API routes, as well as compiled client source folders. A livereload server is available, that triggers on changes to any client files (templates, scripts, and styles).

$ grunt, $ npm test Lints the code, and runs unit tests on the client and server.

  • $ grunt watcher A watcher for the same.

$ grunt features, $ npm run features Runs any Behavior Features tests; first runs a pass of features tagged @current, then runs any not tagged @broken.

Front Edge

Rupert implements a front-edge microservices architecture. In a "traditional" Web MVC architecture, applications are built around three tiers of programming. The first tier, the View, is rendered HTML in a web browser. The middle tier, the Controller, is an HTTP server like Rails or Tomcat, that returns HTML for a particular view and routes actions as URLs from the client. The Model is

Layout

With no additional configuration, Rupert expects a modular layout.

Whirlwind Tutorial

You should probably skip the Project Layout documentation, and go straight to an example.

Cookbook

Some recipes are available:

Docs

The full documentation on settings in server.json is in the wiki.

Changelog

  • 0.3.9 2015-07-28 Improved handling of start and stop.
  • 0.3.4 2015-05-39 Minor refactor of server config, that may make some routing definitions break.
  • 0.3.1 2015-01-09 Major refactor of config mechanism. Userland unaffected, but rupert-plugin projects need migration.
  • 0.2.7 2014-12-30 Expose Stassets watcher constructors.
  • 0.2.6 2014-12-11 New logging configs, small stability improvements.
  • 0.2.5 2014-11-03 Improved algo for determining loadable stassets configs.
  • 0.2.4 2014-11-03 Travis integration and testing.
  • 0.2.3 2014-10-24 Handle configuring and serving static assets.
  • 0.2.0 2014-10-16 Moving to rupert-config-* for alternative configs.
  • 0.1.2 2014-10-10 Server starts asyncly, generates certs dynamically.
  • 0.1.0 2014-10-09 Renamed to Rupert.
  • 0.0.14 20214-09-26 Bin script to generate cert. Env overrides config.
  • 0.0.13 2014-09-17 Loads hostname from platform or config.
  • 0.0.0 - 0.0.11 2014-09-11 Initial work; lots of iterative tweaks.