Node.js based
CMS systems
Marcell Kiss | Budacode
@kmarci88
What is CMS?
Central interface for:
- creating
- modifying
- organizing
- publishing
- deleting
content
CMS types
- Blogging
- Webshops
- Wikis
- Social
- etc...
For developers?
Plugin based?
Usage statistics
WEB: 40% using CMS
- WordPress - 60.4%
- Joomla - 7.3%
- Drupal - 5.1%
What do we have?
- Ghost
- KeystoneJS
- Calipso
-
Reactioncommerce
- PencilBlue
-
Apostrophe
- Cody
-
Tiddlywiki
-
Nodize
- TaracotJS
- Hatch.js
Stars & Forks
About PencilBlue
Plugin based!
Offers:
tutorials
partnership
community
etc...
Requirements:
Node.js (Express)
MongoDB
Install PencilBlue
$: pbctrl install testFolder
PencilBlue: Site Name: (My PencilBlue Site) Test
PencilBlue: Site Root: (http://localhost:8080)
PencilBlue: Address to bind to: (0.0.0.0)
PencilBlue: Site Port: (8080)
PencilBlue: MongoDB URL: (mongodb://127.0.0.1:27017/)
PencilBlue: Database Name: (pencilblue) test
PencilBlue: Do you want to install Bower components?: (y/N) y
PencilBlue Admin
PencilBlue maturity?
Not too logical...
Many bugs...
Needs contribution...
Not a WordPress (yet)...
About KeyStoneJS
Database-driven
Websites & APIs
For developers
Auto-generated Admin UI
Built on
Express and MongoDB
Install KeyStoneJS
$ npm install -g yo
$ npm install -g generator-keystone
$ mkdir myproject
$ cd myproject
$ yo keystone
? What is the name of your project? keystone
? Would you like to use Jade, Swig, Nunjucks or Handlebars for templates?
[jade | swig | nunjucks | hbs] jade
? Would you like to use LESS or SASS for stylesheets? [less | sass] less
? Would you like to include a Blog? Yes
? Would you like to include an Image Gallery? Yes
? Would you like to include a Contact Form? Yes
? What would you like to call the User model? User
? Enter an email address for the first Admin user: info@budacode.com
? Enter a password for the first Admin user: 123456
? Would you like to include gulp or grunt? [gulp | grunt] grunt
? Would you like to create a new directory for your project? No
? ------------------------------------------------
KeystoneJS integrates with Mandrill (from Mailchimp) for email sending.
Mandrill accounts are free for up to 12k emails per month.
Would you like to include Email configuration in your project? Yes
? ------------------------------------------------
KeyStoneJS Admin
localhost:8080/keystone
Develop with KeyStoneJS
Add new models under models/
Add routes in routes/index.js
Add views under templates/
KeyStoneJS models
var Post = new keystone.List('Post', {
map: { name: 'title' },
autokey: { path: 'slug', from: 'title', unique: true }
});
Post.add({
title: { type: String, required: true },
state: { type: Types.Select, options: 'draft, published, archived',
default: 'draft', index: true },
author: { type: Types.Relationship, ref: 'User', index: true },
publishedDate: { type: Types.Date, index: true, dependsOn: { state: 'published' } },
image: { type: Types.CloudinaryImage },
content: {
brief: { type: Types.Html, wysiwyg: true, height: 150 },
extended: { type: Types.Html, wysiwyg: true, height: 400 }
},
categories: { type: Types.Relationship, ref: 'PostCategory', many: true }
});
Post.schema.virtual('content.full').get(function() {
return this.content.extended || this.content.brief;
});
Post.defaultColumns = 'title, state|20%, author|20%, publishedDate|20%';
Post.register();
KeyStoneJS models
KeyStoneJS models
KeyStoneJS maturity?
Really matured!
Less work
Automatic API and admin generation
Q & A
Sources
http://en.wikipedia.org/wiki/List_of_content_management_systems
http://w3techs.com/technologies/overview/content_management
http://womeninbusiness.about.com/od/websitedevelopment/a/An-Overview-Of-Types-Of-Content-Management-Systems.htm
Node.js based CMS systems
By Marcell Kiss
Node.js based CMS systems
- 1,551