Node.VaSH
Node.VaSH copied to clipboard
VaSh is a content manager aka a blog engine powered by node.js and Redis. All is driven by memory cache (static content + database) so it's really really... really fast !
Node.VaSH [ALPHA]
Description
You have a dedicated server and want to try one of the most faster blog in the world ? Try it :)
VaSh is a content manager aka a blog engine powered by node.js and Redis. All is driven by memory cache (static content + database) so it's really really... really fast !
Including a cluster architecture, VaSh is also highly scalable and can host multi blogs. As well as others blogs, it includes templates, widgets, internationalization, and auto translate features.
Finally, it offers Single Sign On login system to help users to log them with auth providers (facebook, google, yahoo, openid, twitter, linkedin...) Once connected, users can publish comments, talk...
Features
- Scalable
- Load balancing
- Very very fast
- Multi platform
- Widgets (twitter, analytics...)
- SSO (Login with facebook, twitter, google...)
- Comments
-
Templates(in beta) -
Live chat(in beta) -
Internationalization(in beta) -
Auto translate(in beta)
Requirements
Install Redis...
Visit url ==> http://redis.io/download
Install Node.js...
Visit url ==> http://node.js
Installation
As you're a G33K and have no GUI :
$ git clone --recursive [email protected]:G33kLabs/Node.VaSH.git
$ cd Node.VaSH
$ npm update
Configure it
An automated installer is planified in beta version, but for moment, you've to customize your blog with editing a config file with a text editor : sites/default/config.js
Site informations
// -> Site name, Brand & copyright in footer
site_name: 'JS> Node',
brand: "JS> Node",
copyright: "© G33K Labs | 2012",
Main website url
// -> Production env base url (used for rss feed and permanent links)
website: 'http://www.js2node.com',
Dev website url
// -> Development env base url (used when dev flag is enabled in app config)
local: 'http://local.js2node.com:10000',
Alias hostnames
// -> Alias responding to this config, will answer to
// - http://local.js2node.com/
// - http://www.js2node.com/
// - http://localhost/
aliases: ['local.js2node.com', 'www.js2node.com', 'localhost'],
Default SEO tags
// -> Default SEO
title: "JS> Node",
title_sufix: " | G33K",
desc: "A developer blog about js, node.js and other modern tools",
desc_category: "Discover all articles about {{cat}}{{#page_count}} - Page{{page_count}}{{/page_count}}",
Menus in navbar (should be dynamic in beta version)
// -> Navbar menus
menus: ['Home', 'Nodejs', 'jQuery', 'Redis.io', 'Snippets', 'Contact'],
Activate widgets
// -> Widget loaded
widgets: ['aboutme', 'mostviewed', 'github', 'disqus', 'blogroll', 'archives', 'lazyload', {
id: 'analytics',
code: 'Enter here your google analytics code'
}],
Assets to package in one file and load
// -> Assets loaded and packed
assets: {
css: [
'/common/vendors/bootstrap/bootstrap.css',
'/common/vendors/markdown/highlight.monokai.css',
'/assets/css/app.css'
],
js: [
'/common/vendors/jquery.min.js',
'/common/vendors/async.min.js',
'/common/vendors/date.min.js',
'/common/vendors/mustache.min.js',
'/common/vendors/underscore.min.js',
'/common/vendors/backbone.min.js',
'/common/vendors/bootstrap/bootstrap.js',
'/common/vendors/jquery.lazyload.min.js',
'/common/vendors/humanized_time_span.js',
'/common/vendors/jquery.oembed.min.js',
'/common/vendors/jquery.social/jquery.fb.js',
'/common/vendors/jquery.social/jquery.gplus.js',
'/common/vendors/jquery.social/jquery.twitter.js',
'/common/vendors/VaSH.toolkit.js/vash.toolkit.js',
'/assets/js/app.js'
]
},
SSO providers for login
// -> Single Sign On allowed providers
providers: {
facebook: {
infos: {
clientID: 'type yours',
clientSecret: 'type yours'
},
opts: {
perms: {scope: 'email'}
}
},
twitter: {
infos: {
consumerKey: 'type yours',
consumerSecret: 'type yours'
}
},
github: {
infos: {
clientID: 'type yours',
clientSecret: 'type yours'
}
}
},
Define admins
// -> Define admins => "provider"_"userid"
admins: ['twitter_244561106', 'facebook_582526084'],
Define users
author: '[email protected]',
authors: {
'[email protected]': {
pseudo: 'G33K',
name: 'Guillaume DE LA RUE',
avatar: 'https://profiles.google.com/s2/photos/profile/115555146160120072472',
profile: 'https://plus.google.com/115555146160120072472/posts',
// -> Used in 'About Me' widget
city: 'Paris',
country: 'France',
job: 'Consultant / Développeur',
employer: 'G33kLabs',
social: {
twitter: {
provider: 'Twitter',
id: '244561106',
pseudo: '@G33kLabs',
profile: 'https://twitter.com/G33kLabs',
classname: 'color_fluoblue'
},
github: {
provider: 'Github',
pseudo: '@G33kLabs',
profile: 'https://github.com/G33kLabs',
classname: 'color_greenlight'
},
google: {
provider: 'Google+',
id: '115555146160120072472',
pseudo: '@G33k',
profile: 'https://plus.google.com/115555146160120072472/',
classname: 'color_yellow'
}
}
}
}
Run it
$ node app.js
Test it
Open your browser and enter the url configured (you can see that in logs) :
20:45:18 [*] 1 | WebServer STARTED : http://localhost:10000/