clckwrks web applications consist of five main pieces.
clckwrks package is the core around which everything is built. It provides the code for user accounts, creating pages or blog posts, and other core features. Most importantly, it contains hooks so that clckwrks can be extended through plugins.
Each web application will depend on one
clckwrks-theme-<name> package. This package provides all the HTML and CSS for the user facing portions of the site. Themes must conform to a standard API. This allows users to switch their site from one theme to another by simply rebuilding against a different theme package. (This is already working).
Eventually, users will be able to browse an online theme gallery and install themes with a single mouse-click.
clckwrks package is intentionally lightweight. Most of the power in
clckwrks based sites comes through extending the core via plugins. Like themes, plugins also must conform to a specific API which specifies how they get initialized, how they add extensions to the page markup, how they add menu entries, etc. However, there are very few restrictions on what plugins can do.
Like themes, users will eventually be able to install plugins with a single click. Right now, there is a bit of glue code needed to add new plugins to a site. One of the top priorities right now is cleaning up the API for installing and initializing plugins.
We currently offer two plugins:
We plan to offer a range of additional plugins in the near future however, ranging from bug tracking to payment processing.
clckwrks-cli is a command-line application which interacts with clckwrks applications to perform some administrative tasks. Currently the only task it performs is to give
UserId 1 Administrator access.
In the future it will likely contain debugging facilities, commands to perform backups, etc.
foo-dot-com is the package that ties everything together and builds the server. For example,
happstack-dot-com. For a site that only uses off-the-shelf themes and plugins, this package is entirely boilerplate, and will eventually be generated automatically.
Custom sites might have quite a bit of code in the
foo-dot-com package. Alternatively, much of the customization might be provided through a plugin package.