Aggregate iCal, Google Calendar, and Meetup.com events. Pluggable or standalone app.
Ruby HTML CSS JavaScript
Latest commit 69beca5 Sep 21, 2015 @Aupajo Merge pull request #16 from Aupajo/encoding
Force text fields to be UTF-8
Permalink
Failed to load latest commit information.
bin Add CLI Jul 3, 2014
lib 1.1.0.beta4 Sep 21, 2015
spec Simple caching support Nov 14, 2014
templates
.gitignore Gem scaffold Apr 2, 2014
.travis.yml
Gemfile
LICENSE.txt
README.md Remove references to Sinatra-Gcal Oct 25, 2014
Rakefile Extract example rackup Jun 21, 2014
almanack.gemspec Simple caching support Nov 14, 2014
example.ru Fix constant reference in example.ru Nov 8, 2014

README.md

Almanack

Build Status Code Climate Gem Version

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

Sinatra GCal example

See a demo running at http://christchurch.events.geek.nz

Features

  • Aggregate multiple calendars together into one stream
  • Supports iCal feeds (incuding Google Calendars)
  • Supports Meetup.com groups
  • 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

Video tutorial

View on YouTube

Installation

Run the following command:

gem install almanack

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, Meetup.com, or static events.

Almanack.config do |c|
  c.title = 'My Calendar'
  c.theme = 'my-custom-theme'
  c.days_lookahead = 30
  c.add_ical_feed 'http://example.org/events.ics'
  c.add_ical_feed 'http://example.org/more-events.ics'
  c.add_meetup_group group_urlname: 'Christchurch-Ruby-Group', key: 'mysecretkey'
end

Note: You'll need your Meetup.com API key to use Meetup.

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 Toolbelt 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

  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')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request