A Node.js CMS written in CoffeeScript, with a user friendly backend

Overview

Nodizecms

A Node.js CMS written in CoffeeScript, with a user friendly backend

Screenshot

Status

NodizeCMS is still under heavy development, there's a ton of unimplemented features and even more bugs.

It's not ready for production yet, but you still can start to play with it and have plenty of fun !

Application stack

nodejs >0.6.x

express

zappajs

sequelize

mysql

redis (optional)

Installation

Installation has been tested under Linux, MacOS and Windows.

Git, MySQL, Node.js and NPM have to be installed

Make a global install of CoffeeScript

npm install -g coffee-script

Retrieve NodizeCMS

git clone git://github.com/nodize/nodizecms.git

Install dependencies

cd nodizecms

npm install

Create a MySQL database and modify the file "/themes/pageone/settings/database.json"

mysqladmin create pageone

Start the server

coffee app.coffee

When your database is empty, a default "admin" user will be created with a random password at server startup :

._   _           _ _         
| \ | |         | (_)        
|  \| | ___   __| |_ _______ 
| . ` |/ _ \ / _` | |_  / _ \
| |\  | (_) | (_| | |/ /  __/
\_| \_/\___/ \__,_|_/___\___|

listening on port 3000
SuperAdmin group created
Default user created, login = admin, password = 45A90 <----------- YOUR PASSWORD
Default lang created
Default menu created

Now you can access to the admistration module, open you browser on "http://127.0.0.1:3000/admin" (replace 127.0.0.1 by your server IP/URL if it's not running on the localhost).

If you're still there and that everything went fine, you should have a nice but empty backend.

Let's load some data : (replace "pageone" by your database name)

mysql pageone < themes/pageone/sql/pages.sql

or (if you have some access rights defined in MySQL) :

mysql pageone -u root -p < themes/pageone/sql/pages.sql

Now refresh your browser ! Do you see pages & articles ? Great !

Open a new browser window and enter this URL : "http://127.0.0.1:3000", if you are lucky, you're just looking at a dynamic webpage powered by Node.js & NodizeCMS !

License

(The MIT License)

Copyright (c) 2012 Hypee

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • how to make nodizecms run based sqlite3

    how to make nodizecms run based sqlite3

    I changed the database to sqlite3

    but for the page "http://127.0.0.1:3000/" the result is "page not found"

    and when I can not create new page,error like

    "PAGE save failed : { [Error: SQLITE_ERROR: near ",": syntax error] errno: 1, code: 'SQLITE_ERROR' } "

    should work now 
    opened by enginespot 6
  • Clean install not working

    Clean install not working

    coffee app.coffee

    
    path.existsSync is now called `fs.existsSync`.
    ._   _           _ _
    | \ | |         | (_)
    |  \| | ___   __| |_ _______
    | . ` |/ _ \ / _` | |_  / _ \
    | |\  | (_) | (_| | |/ /  __/
    \_| \_/\___/ \__,_|_/___\___|
    
       info  - socket.io started
    Loading Nodize session module
    DEPRECATION WARNING: Support for Node.JS < v0.6 will be canceled in the next minor release.
    sequelize initialization
    Using database settings from themes/pageone/settings/database.json -> pageone
    TypeError: Arguments to path.join must be strings
      at path.js:360:15
      at Array.filter (native)
      at Array.<anonymous> (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/sugar/lib/core.js:54:25)
      at Object.exports.join (path.js:358:36)
      at Object.context.view (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/zappajs/lib/zappa.js:348:18)
      at Object.include (/Users/outluch/Documents/code/nodize/nodizecms/modules/backend/inline_views/view_articleList.coffee:4:17)
      at Object.context.include (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/zappajs/lib/zappa.js:539:26)
      at Object.include (/Users/outluch/Documents/code/nodize/nodizecms/modules/backend/module_backend.coffee:222:16)
      at Object.context.include (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/zappajs/lib/zappa.js:539:26)
      at Object.nodize (/Users/outluch/Documents/code/nodize/nodizecms/app.coffee:149:3, <js>:79:10)
      at Object.zappa.app (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/zappajs/lib/zappa.js:857:10)
      at zappa.run (/Users/outluch/Documents/code/nodize/nodizecms/node_modules/zappajs/lib/zappa.js:1009:18)
      at Object.<anonymous> (/Users/outluch/Documents/code/nodize/nodizecms/app.coffee:279:5, <js>:146:25)
      at Object.<anonymous> (/Users/outluch/Documents/code/nodize/nodizecms/app.coffee:155:4)
      at Module._compile (module.js:456:26)
    
    
    bug should work now 
    opened by outluch 4
  • Decoupled Approach

    Decoupled Approach

    Creating a traditional monolithic CMS is a very bad idea because it becomes too easy to blur the separation between the editing tool, content storage, and templating layers.

    A better approach would be to separate each of these components, define a clear API between them, and adopt a "Decoupled Approach", such as the one described here.

    Layers: editing tool The web backend used for editing pages, articles, media...

    content storage Server that provides a RESTful API to access & modify content. This part interacts with both the templating & editing layers. Also, by using a RESTful API, it can be accessed directly from a web-based editing tool running on a web browser, rather than requiring the web browser to have a server-side component. And it would allow the content storage layer to be on a different server than the templating layer without any issues.

    templating This layer pulls data from the content storage and feeds it to whatever templating engine is being used.

    So, we basically already have these layers, the only thing that needs to be done is separating them.

    in review 
    opened by notslang 3
  • Why do you use ECO?

    Why do you use ECO?

    Hi all :) I really love the nodizecms and my company is thinking of doing stuff with the CMS. But something is not clear to me. Why do you use something like ECO if something like JADE is far more popular?

    :heart:, Jonas

    opened by 16n 3
  • Using custom mysql port instead of 3306

    Using custom mysql port instead of 3306

    Am trying to access to a DATABASE with 14859 port and i get a CONNECTION_REFUSED error, it would be great to add it to the settings/database.json a property called port...

    Thanks

    enhancement should work now 
    opened by darioherrera 3
  • Uploading is broken

    Uploading is broken

    despite manually creating the uploads folder, I still get an error when uploading.

    path.existsSync is now called `fs.existsSync`.
    ._   _           _ _
    | \ | |         | (_)
    |  \| | ___   __| |_ _______
    | . ` |/ _ \ / _` | |_  / _ \
    | |\  | (_) | (_| | |/ /  __/
    \_| \_/\___/ \__,_|_/___\___|
    
       info  - socket.io started
    Loading Nodize session module
    DEPRECATION WARNING: Support for Node.JS < v0.6 will be canceled in the next minor release.
    sequelize initialization
    Using database settings from themes/pageone/settings/database.json -> pageone
    Express server listening on port 3000 in development mode
    Zappa 0.4.20 "You can't do that on stage anymore" orchestrating the show
    Sequelize session store initialized.
    Destroying 4 expired sessions.
    files_json error :  [TypeError: Cannot call method 'sort' of undefined]
    [TypeError: Cannot read property 'length' of undefined]
    

    Note: my install of Node.js is actually v0.10.4, contrary to what the deprecation warning implies

    The image is created in the actual folder (./uploads), but an error message appears:

    No response was given from the uploader, this may mean that "mod_security" is active
    on the server and one of the rules in mod_security has cancelled this request. If you
    can not disable mod_security, you may need to use the NoFlash Uploader.
    

    And the image is not shown in the WebUI.

    bug should work now 
    opened by notslang 2
  • Use compress and cache methods

    Use compress and cache methods

    It would be nice if there was some sort of caching or compression for CSS and Javascript files.

    Please check this site for tipps:

    https://developers.google.com/speed/pagespeed/insights#url=nodize.com&mobile=false&rule=EnableGzipCompression

    enhancement implemented-later 
    opened by gotwig 2
  • Need themes for Blogs

    Need themes for Blogs

    Its a very nice CMS and very easy to install and run. But there is only one theme and there are no tutorials to show how to create own theme.

    It would be great if there is a theme for Blogs.

    enhancement in progress 
    opened by vinothg 2
  • There is a error. I don't know what's wrong? Wish your help!!!

    There is a error. I don't know what's wrong? Wish your help!!!

    ._   _           _ _
    | \ | |         | (_)
    |  \| | ___   __| |_ _______
    | . ` |/ _ \ / _` | |_  / _ \
    | |\  | (_) | (_| | |/ /  __/
    \_| \_/\___/ \__,_|_/___\___|
    
       info  - socket.io started
    Loading Nodize session module
    sequelize initialization
    Using database settings from themes/pageone/settings/database.json -> pageone
    Express server listening on port 3000 in development mode
    Zappa 0.4.20 "You can't do that on stage anymore" orchestrating the show
    nodize_db | Sync error
    
    events.js:74
            throw TypeError('Uncaught, unspecified "error" event.');
                  ^
    TypeError: Uncaught, unspecified "error" event.
      at TypeError (<anonymous>:null:null)
      at [object Object].EventEmitter.emit (events.js:74:15)
      at [object Object].module.exports.finish (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sequelize/lib/query-chainer.js:138:30)
      at [object Object].<anonymous> (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sequelize/lib/query-chainer.js:115:16)
      at [object Object].EventEmitter.emit (events.js:95:17)
      at [object Object].<anonymous> (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sequelize/lib/dao-factory.js:121:42)
      at [object Object].EventEmitter.emit (events.js:95:17)
      at [object Object].<anonymous> (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sequelize/lib/query-interface.js:295:17)
      at [object Object].bound (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sugar/lib/core.js:3771:21)
      at [object Object].EventEmitter.emit (events.js:117:20)
      at [object Object].<anonymous> (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sequelize/lib/dialects/mysql/query.js:30:14)
      at Query.bound [as _callback] (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sugar/lib/core.js:3771:21)
      at Query.Sequence.end (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/sequences/Sequence.js:66:24)
      at /home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:253:16
      at Array.forEach (native)
      at Protocol._delegateError (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:252:17)
      at Handshake.<anonymous> (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:97:12)
      at Handshake.EventEmitter.emit (events.js:95:17)
      at Handshake.Sequence.end (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/sequences/Sequence.js:61:12)
      at Protocol.handleNetworkError (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:230:14)
      at Connection._handleNetworkError (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/mysql/lib/Connection.js:145:18)
      at Socket.bound (/home/qiuxj/WorkSpace-Node/nodizecms/node_modules/sugar/lib/core.js:3771:21)
      at Socket.EventEmitter.emit (events.js:117:20)
      at net.js:426:14
      at process._tickCallback (node.js:415:13)
    
    
    in review 
    opened by qiuxiaoj 1
  • Pressing Save Page Causes Crash

    Pressing Save Page Causes Crash

    Pressing the save page button (pictured below) crashes the server and causes this error:

    slang@slang-phd:~/web/nodizecms$ sudo coffee app.coffee
    ._   _           _ _
    | \ | |         | (_)
    |  \| | ___   __| |_ _______
    | . ` |/ _ \ / _` | |_  / _ \
    | |\  | (_) | (_| | |/ /  __/
    \_| \_/\___/ \__,_|_/___\___|
    
       info  - socket.io started
    Loading Nodize session module
    sequelize initialization
    Using database settings from settings/database.json -> pageone
    Express server listening on port 3000 in development mode
    Zappa 0.4.20 "You can't do that on stage anymore" orchestrating the show
    Sequelize session store initialized.
    
    events.js:72
            throw er; // Unhandled 'error' event
                  ^
    Error: ER_BAD_FIELD_ERROR: Unknown column 'created' in 'field list'
      at Query.Sequence._packetToError (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/sequences/Sequence.js:32:14)
      at Query.ErrorPacket (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/sequences/Query.js:78:18)
      at Protocol._parsePacket (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:169:24)
      at Parser.bound [as _onPacket] (/home/slang/web/nodizecms/node_modules/sugar/lib/core.js:3771:21)
      at Parser.write (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/Parser.js:62:12)
      at Protocol.write (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/Protocol.js:36:16)
      at write (_stream_readable.js:547:24)
      at flow (_stream_readable.js:556:7)
      at Socket.pipeOnReadable (_stream_readable.js:588:5)
      at Socket.EventEmitter.emit (events.js:92:17)
      at emitReadable_ (_stream_readable.js:382:10)
      at emitReadable (_stream_readable.js:377:5)
      at readableAddChunk (_stream_readable.js:142:7)
      at Socket.Readable.push (_stream_readable.js:112:10)
      at TCP.onread (net.js:511:21)
    
        --------------------
      at Query.Sequence (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)
      at new Query (/home/slang/web/nodizecms/node_modules/mysql/lib/protocol/sequences/Query.js:11:12)
      at Function.Connection.createQuery (/home/slang/web/nodizecms/node_modules/mysql/lib/Connection.js:43:10)
      at Connection.query (/home/slang/web/nodizecms/node_modules/mysql/lib/Connection.js:90:26)
      at [object Object].module.exports.Query.run (/home/slang/web/nodizecms/node_modules/sequelize/lib/dialects/mysql/query.js:26:17)
      at [object Object].module.exports.execQueueItem (/home/slang/web/nodizecms/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:313:21)
      at /home/slang/web/nodizecms/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:269:25
      at adjustCallback (/home/slang/web/nodizecms/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:187:7)
      at dispense (/home/slang/web/nodizecms/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:211:9)
      at Object.me.acquire (/home/slang/web/nodizecms/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:260:5)
      at [object Object].module.exports.enqueue (/home/slang/web/nodizecms/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:260:19)
      at [object Object].module.exports.ConnectorManager.query (/home/slang/web/nodizecms/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:149:15)
      at [object Object].module.exports.Sequelize.query (/home/slang/web/nodizecms/node_modules/sequelize/lib/sequelize.js:189:34)
      at [object Object].<anonymous> (/home/slang/web/nodizecms/node_modules/sequelize/lib/query-interface.js:280:38)
      at [object Object].bound [as fct] (/home/slang/web/nodizecms/node_modules/sugar/lib/core.js:3771:21)
      at [object Object]._onTimeout (/home/slang/web/nodizecms/node_modules/sequelize/lib/emitters/custom-event-emitter.js:15:16)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
    
    slang@slang-phd:~/web/nodizecms$ 
    

    image

    bug in review 
    opened by notslang 1
  • Parse javascript later

    Parse javascript later

    Trough later parsing of javascript, the users were already able to see the HTML and CSS content.

    https://developers.google.com/speed/pagespeed/insights#url=nodize.com&mobile=false&rule=DeferParsingJavaScript

    implemented-later 
    opened by gotwig 1
  • Zappa Socket gives me 404

    Zappa Socket gives me 404

    Hi there!

    After fresh install of nodizecms, i get 404 (Not Found) http://localhost:3000/zappa/socket/__local/-1V3Wu1QXM0Q8GYnfzIo

    I'm new to Zappa and I can't understand how to solve this issue.

    opened by akve 0
  • Is Nodize CMS extendable

    Is Nodize CMS extendable

    Does nodize support plugins for instance if I wanted to create a plugin for testimonials where a client could add testimonials to through the backend and render place them with a widget.

    opened by rwatts3 0
  • Doesn't work with Cyrillic (or Unicode) text

    Doesn't work with Cyrillic (or Unicode) text

    Windows 7 desktop shot with non-displayed Cyrillic symbols

    You can use this for testing: "NodizeCMS рулит и бибикает!" or just "Главная страница". Thanks for your work, I have just passed by.

    bug in review 
    opened by ilyaigpetrov 1
The most powerful headless CMS for Node.js — built with GraphQL and React

A scalable platform and CMS to build Node.js applications. schema => ({ GraphQL, AdminUI }) Keystone Next is a preview of the next major release of Ke

KeystoneJS 7.3k Dec 31, 2022
👻 The #1 headless Node.js CMS for professional publishing

Ghost.org | Features | Showcase | Forum | Docs | Contributing | Twitter Love open source? We're hiring Node.js Engineers to work on Ghost full-time Th

Ghost 42.1k Jan 5, 2023
ApostropheCMS is a full-featured, open-source CMS built with Node.js that seeks to empower organizations by combining in-context editing and headless architecture in a full-stack JS environment.

ApostropheCMS ApostropheCMS is a full-featured, open source CMS built with Node.js that seeks to empower organizations by combining in-context editing

Apostrophe Technologies 3.9k Jan 4, 2023
🚀 Open source Node.js Headless CMS to easily build customisable APIs

API creation made simple, secure and fast. The most advanced open-source headless CMS to build powerful APIs with no effort. Try live demo Strapi is a

strapi 50.8k Dec 27, 2022
👻 The #1 headless Node.js CMS for professional publishing

Ghost.org | Features | Showcase | Forum | Docs | Contributing | Twitter Love open source? We're hiring Node.js Engineers to work on Ghost full-time Th

Ghost 37k Apr 5, 2021
ApostropheCMS is a full-featured, open-source CMS built with Node.js that seeks to empower organizations by combining in-context editing and headless architecture in a full-stack JS environment.

ApostropheCMS ApostropheCMS is a full-featured, open source CMS built with Node.js that seeks to empower organizations by combining in-context editing

Apostrophe Technologies 3.9k Jan 4, 2023
Minimalistic, lean & mean, node.js cms

enduro.js Enduro is minimalistic, lean & mean, node.js cms. See more at enduro.js website Other repositories: Enduro • samples • Enduro admin • enduro

Martin Gottweis 688 Dec 31, 2022
Drag and drop page builder and CMS for React, Vue, Angular, and more

Drag and drop page builder and CMS for React, Vue, Angular, and more Use your code components and the stack of your choice. No more being pestered for

Builder.io 4.3k Jan 9, 2023
The official CMS of OwnStore suite.

This project is part of OwnStore suite. Learn more here: https://ownstore.dev The suite contains the following projects: Website API CMS Doc Apps TWA

OwnStore 15 Nov 12, 2022
A Node.js Express backend for a Stackoverflow like answering forum, with RESTful endpoints

A Node.js Express backend for a Stackoverflow like answering forum, with RESTful endpoints, written in es6 style with linted and comprehensively unit-tested code. Utilizes a local json database using fs but has full separation of concern to implement anything else.

Dhiman Seal 3 Jan 9, 2022
AdminBro is an admin panel for apps written in node.js

Admin Bro AdminBro is An automatic admin interface which can be plugged into your application. You, as a developer, provide database models (like post

Software Brothers 6.5k Jan 2, 2023
Reaction is an API-first, headless commerce platform built using Node.js, React, GraphQL. Deployed via Docker and Kubernetes.

Reaction Commerce Reaction is a headless commerce platform built using Node.js, React, and GraphQL. It plays nicely with npm, Docker and Kubernetes. G

Reaction Commerce 11.9k Jan 3, 2023
We.js, extensible Node.js MVC framework - CLI

We.js ;) We.js is a extensible node.js MVC framework For information and documentation see: http://wejs.org This repository (wejs/we) have the We.js C

We.js 208 Nov 10, 2022
Javascript Content Management System running on Node.js

Cody CMS A Javascript Content Management System running on Node.js We finally took upon the task, we are happy to announce the transition to Express 4

Johan Coppieters 669 Oct 31, 2022
Business class content management for Node.js (plugins, server cluster management, data-driven pages)

PencilBlue A full featured Node.js CMS and blogging platform (plugins, server cluster management, data-driven pages) First and foremost: If at any poi

PencilBlue, LLC. 1.6k Dec 30, 2022
Business class content management for Node.js (plugins, server cluster management, data-driven pages)

PencilBlue A full featured Node.js CMS and blogging platform (plugins, server cluster management, data-driven pages) First and foremost: If at any poi

PencilBlue, LLC. 1.6k Dec 30, 2022
We.js, extensible Node.js MVC framework - CLI

We.js ;) We.js is a extensible node.js MVC framework For information and documentation see: http://wejs.org This repository (wejs/we) have the We.js C

We.js 208 Nov 10, 2022
🎉 Next Generation API-first CMS for developers. Generate an API-first CMS from a GraphQL schema with offline prototyping and an inline editor

Tipe Next Generation API-first CMS Design your content Shape and design content for any project you and your team are working on. Create your content

Tipe 2.2k Oct 22, 2021
Embedded CoffeeScript templates

Eco: Embedded CoffeeScript templates Eco lets you embed CoffeeScript logic in your markup. It's like EJS and ERB, but with CoffeeScript inside the <%

Sam Stephenson 1.7k Dec 17, 2022