Galileo - A simple modern CMS built on Mojolicious
$ galileo setup $ galileo daemon
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.
Galileo uses well-tested and widely-used CPAN modules, so installation should be as simple as
$ cpanm Galileo
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.
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 (
This is the full path to a configuration file. The default is a file named galileo.conf in the
GALILEO_HOMEpath, 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
Use Mojolicious::Plugin::ConsoleLogger to get additional state information and logger output sent to the browser console.
$ 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.
--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.
$ galileo setup
This step is required after both installation and upgrading Galileo. Running
galileo setup will deploy or upgrade the database used by your Galileo site. It will use the default DBI settings (SQLite) or whatever is setup in the
GALILEO_CONFIG configuration file.
Warning: As usual, proper care should be taken when upgrading a database. This mechanism is rather new and while it should be safe, the author makes no promises about anything yet! Backup all files before upgrading!
Note that the database deployment tools may emit debugging information unexpectedly, especially messages about "overwriting" and some internal "peek" information. These message are harmless, but as yet cannot be suppressed.
$ galileo daemon
After the database 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 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.
If Galileo detects a folder named static inside the
GALILEO_HOME path, that path is added to the list of folders for serving static files. The name of this folder may be changed in the configuration file via the key
The "config" keys
extra_css key contains the path to a simple theme css file which adds a gray background and border to the main container.
galileo command-line tool also provides all of the commands that Mojolicious' mojo tool does. This includes
daemon which has already been introduced. It also provides several Galileo specific commands. In addition to config and setup which have already been discussed, there are:
$ galileo dump $ galileo dump --directory pages -t
This tool dumps all the pages in your galileo site as markdown files. The directory for exporting to may be specifed with the
-d flag, by default it exports to the current working directory. The title of the page is by default includes as an HTML comment. To include the title as an
<h1> level directive pass
-t without an option. Any other option given to
--title will be used as an
sprintf format for rendering the title (at the top of the article).
- 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
- Contenticious - File-based Markdown website application
Joel Berger, <email@example.com>
Copyright (C) 2012-2013 by Joel Berger
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.