The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Galileo - A simple modern CMS built on Mojolicious

SYNOPSIS

 $ galileo setup
 $ galileo daemon

DESCRIPTION

Galileo is a Perl CMS with some modern features. It uses client-side markdown rendering and websockets for saving page data without reloading. Galileo relies on many other great open-source projects, see more in the "TECHNOLOGIES USED" section.

This release is very young, don't expect anything not to break, for now. Bug reports very welcome.

INSTALLATION

Galileo uses well-tested and widely-used CPAN modules, so installation should be as simple as

    $ cpanm Galileo

when using App::cpanminus. Of course you can use your favorite CPAN client or install manually by cloning the "SOURCE REPOSITORY".

SETUP

Environment

Although most of Galileo is controlled by a configuration file, a few properties must be set before that file can be read. These properties are controlled by the following environment variables.

GALILEO_HOME

This is the directory where Galileo expects additional files. These include the configuration file and log files. The default value is the current working directory (cwd).

GALILEO_CONFIG

This is the full path to a configuration file. The default is a file named galileo.conf in the GALILEO_HOME path, however this file need not actually exist, defaults may be used instead. This file need not be written by hand, it may be generated by the galileo config command.

The galileo command line application

Galileo installs a command line application, galileo. It inherits from the mojo command, but it provides extra functions specifically for use with Galileo.

config

 $ galileo config [options]

This command writes a configuration file in your GALILEO_HOME path. It uses the preset defaults for all values, except that it prompts for a secret. This can be any string, however stronger is better. You do not need to memorize it or remember it. This secret protects the cookies employed by Galileo from being tampered with on the client side.

Galileo does not need to be configured, however it is recommended to do so to set your application's secret.

The --force option may be passed to overwrite any configuration file in the current working directory. The default is to die if such a configuration file is found.

setup

 $ galileo setup

This step is required. Run galileo setup to setup a database. It will use the default DBI settings (SQLite) or whatever is setup in the GALILEO_CONFIG configuration file.

RUNNING THE APPLICATION

 $ galileo daemon

After the database is has been setup, you can run galileo daemon to start the server.

You may also use morbo (Mojolicious' development server) or hypnotoad (Mojolicious' production server). You may even use any other server that Mojolicious supports, however for full functionality it must support websockets. When doing so you will need to know the full path to the galileo application. A useful recipe might be

 $ hypnotoad `which galileo`

where you may replace hypnotoad with your server of choice.

Logging

Logging in Galileo is the same as in Mojolicious. Messages will be printed to STDERR unless a directory named log exists in the GALILEO_HOME path, in which case messages will be logged to a file in that directory.

TECHNOLOGIES USED

  • Mojolicious - a next generation web framework for the Perl programming language

  • DBIx::Class - an extensible and flexible Object/Relational Mapper written in Perl

  • PageDown (Markdown engine) - the version of Attacklab's Showdown and WMD as used on Stack Overflow and the other Stack Exchange sites

  • Bootstrap - the beautiful CSS/JS library from Twitter

  • jQuery - because everything uses jQuery

  • HumaneJS - A simple, modern, browser notification system

SEE ALSO

SOURCE REPOSITORY

http://github.com/jberger/Galileo

AUTHOR

Joel Berger, <joel.a.berger@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2012 by Joel Berger

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.