/borg

minimalistic file-based Content Management System (CMS) built on top of Ruby On Rails

Primary LanguageRubyApache License 2.0Apache-2.0

Borg

Borg is an ultra simple file-based Content Management System (CMS) built on top of Ruby On Rails. The code is kept voluntarily simple to handle only the needs of small, personal websites.

Borg is a wiki and blog that uses the Textile formatting for your contents.

Borg integrates with existing technologies and standards for greater flexibility :

  • Authentication framework based upon OpenID
  • Google services integration : Translate ( automatic page translation ), Chatback ( chat integration ), Analytics ( usage statystics )
  • Gravatar for comment icons
  • RSS feeds for content updates and user comments

Borg stores all its data in plain text files on a filesystem:

  • It doesn't force you to adopt a proprietary format
  • you don't even need to setup a database
  • you can easily extract your data and move away from Borg the day you decide to change.
  • you can read and manipulate your content with any other utility you may decide to use.
  • the folder structure mimics the layout of your CMS, allowing easy customization

Borg offers many more functionalities:

  • page metadata for extra attributes
  • tagging and tag clouds
  • breadcrumbs
  • automatic sitemap and blog archives history
  • easy layout customization
  • multiple graphic templates (new in version 2.5, updated in version 3.0 with the bigG theme)
  • hierarchical sidebars and toolbars
  • user comments
  • smart date formatting and parsing (new in version 2.5)
  • content editing directly from the browser, with drafts support (drafts are new in version 3.1)
  • Social features (Google Buzz, Facebook and Twitter sharing)(new in version 3.0),
  • Attachments and file upload support, including basic file management features (new in version 3.0),
  • Automatic Sitemap generation for better indexing (new in version 3.0),
  • Support for the latest serving stack: Rails 3.0.7 + Ruby 1.9.2,
  • works on all major browsers ( Firefox, Safari, Opera, IE, Chrome )
  • Full support for high-end mobile devices (iPhone, iPad, Android phones like the Nexus One and Nexux S, Android tablets)(new in version 3.0)

Screenshots

kennedy template (new in version 3.2)


bigG template


InternetSharing template


CoolWater template


Versions and Branches

  • rails3.0.7 branch: borg version tuned for rails 3.0.7 and ruby 1.9.2. Currently developed.
  • rails3.0.3, rails2.3.5 , rails2.3.2, rails2.1.1 : borg versions tuned for previous rails versions. No longer maintained.

Releases

  • v3.2 tag : current (recommended) borg version, targeting rails 3.0.7.
    • deps: as declared in Gemfile.lock
    • minor fixes over the previous v3.1 and v3.1.1.
    • Introduces the kennedy template.
  • v3.0 tag : targets rails 3.0.3.
    • deps: as declared in Gemfile.lock
  • v2.5 tag : targets rails 2.3.2
    • deps: rails/2.3.2 , RedCloth/4.1.9 , ruby-openid/2.1.6 , rubytree/0.5.2 , chronic/0.2.3
  • v2.0 tag : targs rails 2.1.2
    • deps: rails/2.1.2 , RedCloth/3.0.4 , ruby-openid/2.1.2 , rubytree/0.5.2

Development

Want to contribute to borg development? It's easy.

First, Fork this git repo, following these instructions, and create a local clone on your machine:

$ git clone git@github.com:your_user_name/borg.git

or you can simply just clone this git repository:

$ git clone git://github.com/battlehorse/borg.git

Once you have everything on your local machine, make sure you have ruby1.9.2 installed:

$ ruby -v
  ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]

or fetch and install it from ruby-lang.org. You also need to have gembundler installed. Then move to the directory where you cloned the git repository and issue the command

$ bundle install

It will download all the gems that borg requires to run properly.

Next, open the file lib/borg/config/borg_development.rb. This is the main borg configuration file. Read through the comments and instructions it contains and fill all the required information.

The main piece of information to provide is the location of borg repository, that is the set of directories where borg will store all its contents (articles, comments, attachments).

The easiest way to set this up, is to start by creating a local clone of this git repository (which contains a basic repository structure):

$ git clone git://github.com/battlehorse/borg-data-empty.git

and then update borg_development.rb to point to the relevant directories within it.

You can now start your local borg instance:

$ cd borg
$ script/rails server

and point your browser to http://localhost:3000.

Deployment

Deploying borg to a production setup is not much different from the development setup. Clone the repository, switch to a tag or stable branch of your choice and update your gems:

$ git clone git://github.com/battlehorse/borg.git borg
$ cd borg
$ git checkout branch_or_tag_you_want_to_use
$ bundle install

Initialize your content repository as specified above. Then create a configuration file for your production environment:

$ cp lib/borg/config/borg_development.rb lib/borg/config/borg_production.rb

And edit borg_production.rb to match your production configuration.

You can then hook the public/ directory of your borg installation to your production serving system (such as, for example, nginx and mod_passenger).