• Stars
    star
    166
  • Rank 222,852 (Top 5 %)
  • Language
    JavaScript
  • Created almost 12 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Simple Modern Perl CMS

NAME

Galileo - A simple modern CMS built on Mojolicious

SYNOPSIS

$ galileo setup
$ galileo daemon

DESCRIPTION

Galileo is a Perl CMS with some unusual 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.

DISCOURAGED

Galileo was an experiment in several technologies, in ways that I had hoped would be interesting. I'm not certain it worked out. Websockets are overused, the ORM is abused in certain ways. I'm not going to officially deprecate it (yet) but I don't encourage new users. I do eventually hope to try my hand at a CMS again, but in the meantime perhaps consider Yancy.

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 can be generated as a result of running the galileo config command.

The galileo command line application

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

setup

$ galileo setup

This command starts the app in setup mode. It can write a configuration file, and setup or upgrade the database.

This step is required after both installation and upgrading Galileo, because the database page 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 files and database before upgrading!

Although Galileo does not need to be configured, it is recommended to do so to set your application's secret. The secret can be any string, however stronger is better. You do not need to memorize it or even remember it. This secret protects the cookies employed by Galileo from being tampered with on the client side.

Notes:

  • The database deployment tools may emit debugging information unexpectedly to your terminal, especially messages about "overwriting" and some internal "peek" information. These message are harmless, but as yet cannot be suppressed.

  • Upgrading database schemas from before Galileo version 0.012 (when schema versioning was introduced) is no longer supported as of version 0.037. The process wasn't testable anyway.

dump

$ galileo dump
$ galileo dump --directory pages -t
$ galileo dump --directory pages -t --encoding utf-8

This tool dumps all the pages in your galileo site as markdown files. The directory for exporting to may be specifed with the --directory or -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 --title or -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).

The document will be encoded as UTF-8 by default, if other encoding of the content is desired, use --encoding or -e flag. Available value of the --encoding is same as Encode module of Perl.

RUNNING THE APPLICATION

$ 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

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.

Extra Static Paths

By default, 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 extra_static_paths, which expects an array reference of strings representing paths. If any path is relative it will be relative to GALILEO_HOME.

Upload Path

By default, if Galileo detects a folder named uploads inside the GALILEO_HOME path, that path is used for uploads, specifically user-uploaded images. This path is added to the static files. The name of this folder may be changed in the configuration file via the key upload_path, which expects a string representing the path. If the path is relative it will be relative to GALILEO_HOME.

NOTE: as for this writing, this option doesn't do anything but append to the static files paths. Eventually it will be where uploads go, but NOT YET!

CUSTOMIZING

The "config" keys extra_css and extra_js take array references pointing to CSS or Javascript files (respectively) within a static directory. As an example, the default extra_css key contains the path to a simple theme css file which adds a gray background and border to the main container.

As yet there are no widgets/plugins as such, however a clever bit of javascript might be able to load something.

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

  • PageDown Extra - Markdown Extra Plugins for Pagedown

  • Bootstrap - the beautiful CSS/JS library from Twitter

  • jQuery - because everything uses jQuery

  • html5sortable - Lightweight jQuery plugin to create sortable lists and grids using native HTML5 drag and drop API

  • HumaneJS - A simple, modern, browser notification system

SEE ALSO

SOURCE REPOSITORY

http://github.com/jberger/Galileo

Travis CI build status

AUTHOR

Joel Berger, <[email protected]>

CONTRIBUTORS

Boris Däppen

Helmut Wollmersdorfer

Holger Rupprecht

Irfan Afifullah

Keedi Kim

Neil Bowers

Nils Diewald

OpossumPetya

Sergey Rubanov

COPYRIGHT AND LICENSE

Copyright (C) 2012-2014 by "AUTHOR" and "CONTRIBUTORS"

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

More Repositories

1

Zoidberg

A modular perl shell
Perl
51
star
2

MojoBook

A book for Mojolcious!
39
star
3

GalileoSend

Send files via websockets!
Perl
24
star
4

Mojo-JWT

JSON Web Token in the Mojolicious style
Perl
16
star
5

VueChat

A presentation about Mojolicious, Vue.js and Postgres
Perl
16
star
6

MakeBeamerInfo

Creates .info file for use with Impressive and LaTeX Beamer
Perl
15
star
7

Mojo-Phantom

PhantomJS client-side testing for Mojolicious apps
Perl
13
star
8

YAPCNA2012

My talk(s) and supporting material for YAPC::NA 2012
TeX
13
star
9

AwaitingMojolicious

An Introduction to Mojolicious By Example
Perl
10
star
10

Mojo-ACME

Mojo-based ACME-protocol client
Perl
10
star
11

Mojo-Chrome

A Mojo interface to Chrome DevTools Protocol
Perl
10
star
12

Text-AsciiTeX

Convert (La)TeX formulas to ASCII art (in Perl)
C
9
star
13

MojoliciousIntroduction

My Mojolicious intro talk
JavaScript
8
star
14

Minion-Notifier

A pluggable way to notify clients that a Minion task has completed
Perl
8
star
15

Mojolicious-Command-nopaste

A clone of App::Nopaste using Mojolicious
Perl
8
star
16

Curriculum_Vita

My CV
TeX
7
star
17

Wishlist

A wishlist web app using Mojolicious
Perl
6
star
18

Toastr

The simple pluggable IRC bot
Perl
5
star
19

dotfiles

my dotfiles
Vim Script
5
star
20

MojoForum

A toy project using Mandel
Perl
5
star
21

Mojolicious-Plugin-Multiplex

A websocket multiplexing layer for Mojolicious applications
Perl
5
star
22

Class-Anonymous

Truly anonymous classes for Perl5
Perl
5
star
23

Mojo-IOLoop-ForkCall

Deprecated! Use Mojo::IOLoop::Subprocess instead
Perl
5
star
24

Generator-Object

Generator objects for Perl 5 using Coro
Perl
4
star
25

CarPark

Control your garage door with a Perl and a Raspberry Pi
Perl
4
star
26

Mojolicious-Plugin-ReplyTable

Easily render rectangular data in many formats using Mojolicious
Perl
4
star
27

Mojo-FriendFeed

Subscribe to FriendFeed Real-time API using the Mojo toolkit
Perl
4
star
28

PerlGSL

A Collection of Perlish Interfaces to the Gnu Scientific Library
Perl
4
star
29

Mojolicious-Plugin-Humane

Mojolicious integration for humane.js
CSS
4
star
30

MojoConf

MojoConf 2014 talk
Perl
4
star
31

Math-Mathematica

A Simple PTY connection to Wolfram's Mathematica
Perl
4
star
32

Physics-UEMColumn

Simulate the dynamics of ultrafast electron pulses propagating down an electron microscope column.
Perl
4
star
33

Tie-Array-CSV

A tied array which combines the power of Tie::File and Text::CSV
Perl
3
star
34

Minion-Monitor

A monitor command for Minion
JavaScript
3
star
35

App-MojoSlides

DEPRECATED, see Mojolicious::Plugin::RevealJS
Perl
3
star
36

PerlForProgrammers

An Introduction to Perl for Non-Perl Programmers
Perl
3
star
37

PDL-Util

Convenient utility functions/methods for use with PDL
Perl
3
star
38

Mojolicious-Plugin-PPI

Mojolicious Plugin for Rendering Perl Code Using PPI
Perl
3
star
39

Mojo-Websockify

A TCP-WebSocket bridge for Perl using Mojolicious
JavaScript
3
star
40

Chrome_Dust_Theme

When using the GTK+ theme doesn't quite work, use this theme to match the Ubuntu's Dust theme.
3
star
41

Webservice-Shipment

Get common shipping information from supported carriers
Perl
2
star
42

Module-UseFrom

Safe compile-time module loading from a variable
Perl
2
star
43

Child-IPC-Pipely

use Child with IO::Pipely for more portable IPC
Perl
2
star
44

PDL-IO-Export2D

Deprecated: See PDL::Util
Perl
2
star
45

Mojo-XMLRPC

An XMLRPC message parser/encoder using the Mojo stack
Raku
2
star
46

Mojolicious-Plugin-SimpleSlides

Simple presentations using Mojolicious
Perl
2
star
47

twitrssme

TwitRSS.me code
Perl
2
star
48

KubernetesForTheCurious

Basic Kubernetes Presentation
JavaScript
2
star
49

Games-Opoly

A Perl/Moose Opoly-style game
Perl
2
star
50

Mojolicious-Plugin-LaTeX

LaTeX templating for Mojolicious
Perl
2
star
51

Mojolicious-Plugin-TailLog

Tail your log file via a websocket
Perl
2
star
52

Mojo-FriendFeed-CPANBot

An informer bot for CPAN modules
Perl
2
star
53

PerlGSL-Integration-SingleDim

A Perlish Interface to the GSL 1D Integration Library
C
2
star
54

Mojo-Autobox

Some extra Mojo for Perl native datatypes
Perl
2
star
55

MooseX-Types-NumUnit

Type(s) for using units in Moose
Perl
2
star
56

Math-ParseUnit

Parse quantities with units using Marpa
Perl
2
star
57

GitStructure

Presentation about git focusing on structure
Perl
2
star
58

Math-GSLx-ODEIV2

Solve ODEs using Perl and GSL v1.15+
C
2
star
59

MojoliciousGardening

Presentation on growing your Mojolicious Lite app into a Full app
Perl
2
star
60

DeDuperizer

DeDuperizer for dfw.pm contest
Perl
2
star
61

MyWeatherApp

A demo app for Mojolicious.io
Perl
2
star
62

Mojo-SAML

A SAML(2) library using the Mojo toolkit
Perl
2
star
63

File-chdir-WalkDir

Perl
2
star
64

Acme-Pod-MathJax

All your math are belong to us!
Perl
1
star
65

Thesis

My Thesis
TeX
1
star
66

jberger.github.com

Joel Berger
HTML
1
star
67

PerlGSL-RootFinding-SingleDim

A Perlish Interface to the GSL 1D Root Finding Library
C
1
star
68

PerlGSL-DiffEq

A Perlish Interface to Solving ODEs using GSL v1.15+
C
1
star
69

Graphics-Flot

Data munging to generate the JSON payload for Flot
Perl
1
star
70

PerlTuts-Science

Science Tutorials for PerlTuts.com
Perl
1
star
71

Module-Build-CleanInstall

A Module::Build subclass that uninstalls before installing
Perl
1
star
72

WCpm-Moose-Talk

WindyCity.pm talk about Moosey things
TeX
1
star
73

Mojo-WebSocket-Pinger

Simple module for pinging over WebSocket
Perl
1
star
74

Mock-MonkeyPatch

Monkey patching with test mocking in mind
Perl
1
star
75

LaTeX-Beamer-Info

Create .info file for Impressive directly from a Beamer .nav file
Perl
1
star
76

galileo-cms

Heroku-based demo application for Galileo
Perl
1
star
77

MakeBeamerInfo-Legacy

SVN import of MakeBeamerInfo from the now defunct Google Code
Perl
1
star
78

YAPCBrazil

My talk and supporting materials for YAPC::Brazil 2013
CSS
1
star
79

PDL-DeclareSlice

An alternative to PDL::NiceSlice using Devel::Declare
Perl
1
star
80

Test-Mojo-WithRoles

A role framework for Test::Mojo
Perl
1
star
81

Mojolicious-Plugin-RevealJS

Mojolicious ❤️ Reveal.js
JavaScript
1
star
82

FundamentalContainers

Presentation on Containerization
JavaScript
1
star
83

skill-wfmt

Mycroft skill for streaming WFMT classical radio
Python
1
star
84

Test-Mojo-Role-PSGI

Test PSGI apps using Test::Mojo
Perl
1
star
85

PerlGSL-Integration-MultiDim

A Perlish Interface to the GSL Monte Carlo Integration Library
C
1
star
86

Tie-Select

Provides a localized interface to the select function
Perl
1
star
87

Mojo-WebService-NoIP

An api wrapper for noip.com dynamic ip updating for Mojo
Perl
1
star
88

Test2-Spy

Spy on a cpanminus test run
Perl
1
star
89

Mojolicious-Plugin-Kavorka

Signature sugar for your Mojolicious controller actions
Perl
1
star
90

Inline-Python-ReportLab

PDF Generation using Python's ReportLab
Perl
1
star
91

Mojolicious-Plugin-SQLCommand

Run ad-hoc DBI/SQL queries against your Mojolicious app
Perl
1
star
92

www.jberger.pl

The repo for my personal blog
HTML
1
star
93

Physics-RayTransfer

Object Oriented Ray Transfer calculations in Perl
Perl
1
star
94

MooseX-RememberHistory

Add the ability for attributes to remember their history
Perl
1
star
95

Webservice-CTA

A preliminary Perl implementation of the CTA Train Tracker API
Perl
1
star
96

Mojolicious-Plugin-Memorize

Memorize part of your Mojolicious template
Perl
1
star