Skip to content
A github based documentation solution
Find file
New pull request
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Hubble is a simplified presentation layer on top of github.


Socially-centric open source documentation.


  • Uses post recieve hooks to refresh its repos
  • Uses github as the central system of record, so each artcile has
    • Watchers
    • Forks
    • Commit history
    • Contributers
    • Pull requests
  • SEO friendly
  • Easy to customize


On the root dir of your project:

$ npm install

And create a start script:

var HubbleIO = require('');
var options = {
  "orgname": "nodedocs",
  "title": "NodeGuides",
  "tagline": "Node.js guides for developers",
  "description": "Node Guides and FAQ are designed to make you immediately productive with Node.js, to help you understand how all pieces fit together",
  "content": {
    "home": {
      "beginner": "Are you starting your journey with Node? This section of guides is for you!",
      "intermediate": "Already familiar with Node?",
      "expert": "Kickass Node developer? There’s also something interesting for you!"
  "auth": {
    "github": {
      "callback_uri": "http://localhost:8080/auth/github/callback", 
      "client_id": "157331436a37e82e3ef8",
      "secret": "09a42e0a664ab06cfa0c41aeb2c7aa436422eb00"
  "db": {
    "url": "http://localhost:5984"
  "email": {
    "sendgrid": {
      "user": "------sendgrid-user-here-----",
      "key": "------sendgrid-key-here-----"
    "to": "------email-here-----",
    "from": "------email-here-----"
  "twitter": "------twiiter-url-here-----",
  "github": "------github-url-here-----",
  "team": [
      "name": "Pedro Teixeira",
      "role": "Programmer",
      "bio": "Author of some Node.js modules, the Node Tuts screencast and some Node books. Co-founder and partner of @thenodefirm, Engineer @ Nodejitsu, Organizer of LXJS",
      "avatar": "//",
      "twitter": "",
      "github": ""

console.log('options:', options); 

var server = HubbleIO(options);

server.start(function() {
  console.log('Hubble.IO started');

Customize the options and run your startup script.

Access via browser to http://localhost:8080.


Overriding templates

Inside directory server/templates you can find a bunch of templates that are used for rendering all the pages.

You can choose to override these if you want, by supplying your own template base dir when providing the override.templates option like this:

var options = {
  // ...
  override: {
    templates: __dirname + '/templates'

Overriding static file serving

Hubble.IO serves static files in the server/public directory.

You can override some of these and serve additional static files by supplying the override.static option like this:

var options = {
  // ...
  override: {
    templates: __dirname + '/public'


Hubble.IO uses CouchDB for storing article requests and comments. By default it tries to connect to localhost port 5984, but you can override it by setting the db.url option:

var options = {
  // ...
  db: {
    url: ""

Session Stores

You can use a memory session store or a redis session store.

For changing that you can setup in conf:

var options = {
  // ...
  "session": {
    "store": "redis"

You can also specify timeout, hostname, port and password in session.options:

var options = {
  // ...
  "session": {
    "store": "redis",
    "options": {
      "pass": "mypasswordforaccessingredis",
      "host": "",
      "port": 9162
Something went wrong with that request. Please try again.