Almanack
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.
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
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
- Fork it ( http://github.com/Aupajo/almanack/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request