Taking the best ideas of the MEAN stack and making them extensible. Start with an Express server. Use the best Node APIs. Choose Angular, or any other front-end framework. Store data in Mongo. Or Postgress. Or the cloud - Rupert hooks it up, and leaves the rest to you.

Why Rupert?

Rupert comes configured for all common frond-edge scenarios. Using Rupert as a project base will save you time and effort getting a project started, maintaining critical updates, and deploying to your final infrastructure.

Alternatives

Some tools focus specifically on one aspect of the front-edge development system. Others create unmaintainable webs of copy-pasted configuration and connection files. Rupert chooses the best defaults, while getting out of the way when you want control.

Plugins

Rupert's powerful plugin and configuration system allow any tool to intelligently and effortlessly tie in to the Rupert client and server components. Plugins exist for common front-end frameworks including Bootstrap and Angular, as well as databases like MongoDB.


Sounds Great. What does it look like?

These examples show Rupert applications that do variations on a theme. Starting with a "Hello, user!", the examples add a backend API, data persistence, and integration with a third-party authentication library.

The Basics

Rupert renders all code in ./src/client as a single page application, and serves the resulting static assets.


Simple API

Rupert loads the API routes in ./src/server and remembers the people introduced.

HTML, JS, CSS

Everything in Rupert uses the HTML, Javascript, and CSS technologies your team knows. Any library not available as a Rupert plugin can be included via CDN.

Express JS

Rupert uses the powerful and flexible ExpressJS platform. Rupert handles all configuration for express, including logging and TLS/HTTPS.

API Focused

Your team can focus on writing just your application's API. As the project grows to include other delivery platforms, rest easy knowing your data API is built on a scalable platform.


Plugin Providers

Rupert's plugin mechanism lets you quickly add both front-end and back-end dependencies. In this example, the Mongo plugin persists the greetings across server resets and instances.

Frontend

Directly integrate frontend vendors in your application bundle, minimizing number of files your page loads.

Backend

Quickly configure database connections, which will be available whenever your server API routes are executed.

Configurable Utilities

The Rupert Mongo plugin allows rapid prototyping, by exposing a REST API behind a single configuration flag.


Rupert Doorman

Rupert doorman is a core module to handle third-party and integrated user authentication workflows. Simply install the appropriate passport providers, and add your client secrets to the Rupert configuration.

Passport Providers

Building on the popular Passport library, you can use any supported authentication strategy.

Storage

Provide your own storage mechanism, do extend and enhance user management in a way that works best for your application's logic.

More soon!

This is the freshest piece of Rupert - expect to see streamlined storage mechanisms and improved strategy integration soon!


Starter Projects

While the example projects are an exercise in minimalism, Rupert has several started projects with various plugins pre-configured.

Vanilla

The Vanilla starter project is a pre-zipped and complete "Hello" application, from the example here.

  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 the seed app:
    • curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/vanilla.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

Bare

The Bare starter project is the bare-minimum reasonable starter. It contains no plugins, only the most basic configuration, and no functionality.

  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 the 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

Angular

The Angular starter project has plugins and configurations for AngularJS projects. It also has some basic Angular functionality, loading a single module and service to control the HTML title.

  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 the seed app:
    • curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/angular.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