Project

almanack

0.05
Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Combined events calendar for Google Calendar, iCal, and friends.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Unmaintained

I'm no longer actively maintaining almanack.


Almanack

Build Status Gem Version Deploy

A calendar that combines events from different sources (such as Google Calendar and iCal feeds), and can be hosted for free on Heroku.

Sinatra GCal example

See a demo running at http://chch-events.herokuapp.com/

Features

  • Aggregate multiple calendars together into one stream
  • Supports iCal feeds (including Google Calendars)
  • Supports Meetup.com groups (see #36)
  • Just supply a hash to create any arbitrary event
  • Supports being freely hosted on Heroku
  • 100% customisable themes with Sass and CoffeeScript support
  • Server optional (you can use the underlying calendar library by itself)
  • Rack-compatible (can be mounted inside a Rails app if needed)
  • Produces iCal feed for smartphone and desktop calendar apps to subscribe to

Changelog

See CHANGELOG.

Simple setup

This option can host your calendar for free light use.

Sign up for a free Heroku account and click the following button:

Deploy

Video tutorial

View on YouTube

Installation

Almanack is cryptographically signed. You can install it like any other gem, but you can also do so in a way that verifies the gem hasn't been tampered with.

Add my public key (if you haven’t already) as a trusted certificate and install the gem:

gem cert --add <(curl -Ls https://raw.github.com/aupajo/almanack/master/certs/aupajo.pem)
gem install almanack -P HighSecurity

All my dependencies are cryptographically signed, so you can use the HighSecurity option. Read more.

Checksums for released gems can be verified in checksums.

Creating a calendar

Generate a new calendar with:

almanack new my-calendar

This will create a directory called my-calendar and set up your new project.

Once set up, run:

cd my-calendar
almanack start

By default, your calendar will run on http://localhost:9292.

Configuration

See examples inside config.ru for iCal feeds, or static events.

Almanack.config do |config|
  config.title = 'My Calendar'
  config.theme = 'my-custom-theme'
  config.days_lookahead = 30

  # Combine sources from multiple iCal feeds
  config.add_ical_feed 'http://example.org/events.ics'
  config.add_ical_feed 'http://example.org/more-events.ics'

  # Include a downloaded iCal
  config.add_ical Pathname('downloaded-calendar.ical')
end

Time zone

To set your time zone, set your system's TZ environment variable.

TZ=Pacific/Auckland

On Heroku, you can do this with:

heroku config:set TZ=Pacific/Auckland

Custom themes

Inside your project, you can generate a new theme with:

almanack theme my-theme-name

Remember to update your config.ru to switch themes:

Almanack.config do |c|
  ...
  c.theme = 'my-theme-name'
  ...
end

Deploying to Heroku

Deployment works with Git and Heroku. First, add your work to git (an repository is already initialized for you when you run almanack new):

git add .
git commit -m "My awesome calendar"

With the Heroku CLI installed:

almanack deploy my-awesome-calendar

Will create and deploy http://my-awesome-calendar.herokuapp.com/.

Subsequent commits can be deployed with just:

almanack deploy

Contributing

Getting started

  1. Clone the repository
  2. Run bin/setup
  3. Run bin/test

Sending patches

  1. Fork it ( http://github.com/Aupajo/almanack/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature') with tests
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request