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
- Create a new project.
- On Github, set the name and description. Generate a Readme and license.
- Clone the project from GitHub.
- Unpack a seed app:
-
curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/bare.tgz | tar x
- or download and extract manually (files are in the root of the package, be warned) (tar) (zip).
- See the source directory here.
- See all the examples (packages)
-
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
-
- 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.
-
Angular & Bootstrap
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:
- Q: How do I add libraries to the compiled vendors.js and vendors.css files?
- Q: How do I configure Rupert's logging settings?
- Q: How do I make use of templates in Rupert?
- Q: How do I create a Rupert plugin?
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.