Development and Contributing

If you'd like to enhance Falkland CMS, please fork Falkland CMS on GitHub. If you'd like to contribute back your enhancements (awesome!), please submit your pull requests to the dev branch. I promise to look at every pull request and incorporate it, or at least provide feedback on why if I won't.

  • Do your best to conform to the coding style that's here... I like it.
  • Use 2 soft spaces for indentation.
  • Don't leave trailing spaces after lines.
  • Don't leave trailing new lines at the end of files.
  • Write comments.
  • Write tests.
  • Don't submit ├╝ber pull requests, keep your changes atomic.
  • Have fun!

If you want to contribute to the documentation, there is a separate guide.


There are 3 long lived branches in the repository:

master - mainline, picked up by continual integration on Travis-CI, named releases are tagged with: vX.X.X

dev - development mainline, picked up by continual integration on Travis-CI

gh-pages - documentation branch, jekyll powered GitHub Pages website (you're reading it now) and Codox and Sphinx powered API reference documentation

Additional short lived feature branches will come and go.

Repository Structure - Development

/.travis.yml - Travis-CI continual integration config file

/LICENSE.txt - Mozilla Public License 2.0

/project.clj - Leiningen project config file

/design - temporary design documents created before the final documentation exists

/resources/public/ - HTML, CSS, ClojureScript generated JavaScript, images

/src/brepl/fcms/connect.cljs - ClojureScript browser REPL

/src/fcms/app.clj - bootstrap the Falkland CMS server

/src/fcms/config.clj - configuration for the Falkland CMS server instance

/src/fcms/api/ - Liberator request handlers implementing the REST API

/src/fcms/cljs/ - ClojureScript for the Web UI

/src/fcms/db/ - initialization of the CouchDB views

/src/fcms/lib/ - helper files

/src/fcms/representations/ - JSON rendering for the REST API

/src/fcms/resources/ - Clojure API, a light business logic wrapper around CouchDB

/test/fcms/features/ - Midje integration tests of the REST API

/test/fcms/lib/ - helper files for tests

/test/fcms/unit/ - Midje unit tests of the Clojure API

Repository Structure - Documentation (gh-pages branch)

/*.md - Falkland CMS documentation Markdown files

/_includes/ - jekyll HTML partials

/_layout/ - jekyll HTML layouts

/assets/ - CSS, fonts, icons, images, and JavaScript

/API/ - Clojure API tutorial

/API/Clojure/ - Codox generated Clojure API reference

/API/REST/ - source for the Sphinx generated REST API reference documentation