flatwhite icon indicating copy to clipboard operation
flatwhite copied to clipboard

Node.js API only CMS for quick mobile applications

Flatwhite (http://en.wikipedia.org/wiki/Flat_white)

Node.js REST CMS, built for quick mobile applications.

Requirements

Node.js, 0.6 or higher Connect, 1.8.5 nodeunit, 0.6.2

License

Flatwhite is released under the MIT license

Database

MongoDb:

MongoDb: http://www.mongodb.org/
node-mongodb-native: https://github.com/christkv/node-mongodb-native

DB Whish list:

MySQL?
PostgreSQL?
CouchDB?
Redis?

The idea

Flatwhite is a very simple CMS, without any GUI, only REST APIs... That's it!

Version 1 Provide basic authentication and basic CMS. A content item has only Title, Summary, Text. A content Item can have one or more Tags/Files.

Version 2 Optional custom fields for content items, related content. More Databases.

Version x Is it really necessary?

Build modules

Flatwhite allows you to write all the modules that you like, it's all in the routing:

/:version([0-9]+)/:module([a-z]+)/:item([a-z0-9]+)?/:child([a-z]+)?

The main function checks which module has to be called and loads the module's file, for example posting a request to "/1/admin" will load the admin.js module. Modules must implement the "execute" method, called by the main process.

Database modules

Flatwhite implements a very simple data abstraction layer. Similar to modules, the "driver" has to be saved in the modules/data folder and has to implement the "collection" object that expose the operations available on a specific collection of items (add, get, remove, update, list, find, etc...)

Documentation

Modules documentation files are in the docs folder. For more examples please refer to the tests section.

Debug

Flatwhite uses by default the 8080 port, if you want to use node-inspector this is a working command line:

$ node-inspector --web-port=8081 & node --debug flatwhite.js