noumenon 0.0.1
# Noumenon Noumenon: Noun. The intellectual conception of a thing as it is in itself, not as it is known through perception. ## What is This Thing? Noumenon is a web application based on Sinatra for constructing dynamic websites which use a Git repository for storing all content. It's designed to allow technical and non-technical teams to collaborate on development and populate of a content management system using the tools they are most comfortable with. In the case of developers (and some designers) that's version control and text editors, while in the case of content editors thats more likely to be a web interface. ## How it Works The URL structure and content of a Noumenon site is defined by a Git repository, similar to the structure below: / - /config.rb - /index.html - /about - /people.html - /company.html - /contact - /config.rb - /blog - /config.rb - /posts/2011-04-18-an-example-post.md - /posts/2011-04-10-another-example.md This git repository is then provided to Noumenon as it's data source. On startup it loads any file called "config.rb" and uses it to determine how that directory should behave: # /config.rb domain "example.org" application "git://github.com/noumenon/apps-static" theme "git://github.com/noumenon/themes-example" That example configures Noumenon to use the "Noumenon::Static" application to serve any templates below that point as a static page. # /contact/config.rb application "git://github.com/noumenon/apps-contact" contact.email_address "info@example.org" While the one in /contact specifies that "Noumenon::Contact" should be used to provide the URL tree below /contact, in this case a contact form which emails any responses to the specified address. Finally /blogs/config.rb might look something like this: application "git://github.com/noumenon/apps-blog" blog.comments true ## Hosting a Noumenon Site *This won't work yet: I havn't implemented automatic check out of a content repository.* To host a site you will need to have Ruby and an application server such as Passenger, Unicorn or Thin. Due it's interactions with git as a data store Heroku is not a supported platform for hosting, although I'm sure someone will find a way around that. Install Noumenon: `gem install noumenon` Create a directory, and put the following config.ru in it: require 'noumenon' Noumenon::Core.set :content_repository, "git@github.com:Noumenon/example.git" run Noumenon.boot And then set up your application server to provide that application. On startup it will first attempt to check out the content repository, then it will parse any configuration files, and install any required dependencies. Finally, it will start hosting the site. To update the content repository restart your application server, which will cause it to update the repository, and any dependencies. ### Hosting on Heroku The someone who worked out the way around it was me it seems. This will only work if you're deploying an entirely static site, if you need the admin section to work then you'll have to host somewhere else, but otherwise, use a config.ru like this, and make sure you have Noumenon in your Gemfile: require 'noumenon' Noumenon::Core.set :content_repository_path, File.expand_path("..", __FILE__) run Noumenon.boot