A Node/Heroku system for piping Meetup events into a Google Calendar
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


meetup2gcal Build Status Dependencies Stories in Ready

A Node/Heroku system for piping Meetup events into a Google Calendar

Meetup Calendar

The while of time is spinning, and as a Data Community, we cannot let it slip by, lest we lose ourselves in the flux of time and space. After all, we are not photons who are young eternally. Therefore we have built this project so that we may tame time and in particular our Meetup.com calendars such that they appear on our website on Squarespace via the Google calendar. The chain of dependency is complex, but this software creates the pipes that keep us all where we need to be, when we need to be.

More details about this site will soon follow, but if you're looking for a trial, find yourself here: meetup2gcal.herokuapp.com. This is currently the production deployment of the meetup2gcal app.

Logging in with Google

Authentication is provided by Google - please login using your @datacommunitydc.org email addresses (now hosted by Google Apps). If you do not, the system will decide that you are some spectator and not give you much to do on the site.

Developer Notes

  • Store your local development environment in a .env file in the root. (TODO: document each variable)
    • ADMIN_DOMAINS - comma-separated list of email domains that give admin priviledges
  • Refer to the google-oauth-jwt https://www.npmjs.org/package/google-oauth-jwt to understand the authentication flow. You'll need a PEM file generated via the Google Developers Console for this app, and that account needs to be authorized to write to the specified calendar.
  • With NPM installed, do npm install to pull libraries, and sudo npm install -g nodemon to install https://github.com/remy/nodemon
  • Make sure there's a local MongoDB database running in the dev environment
  • Use make runserver to execute the dev environment and run the server with automatic reloads on save (using nodemon)
  • Use make test to execute the test scripts (using mocha)

There are currently three branches of development:

  • master
  • staging
  • integration

The master (production) branch is the only branch that gets pushed to Heroku. The master branch should not be pushed unless it has been tagged with a release number. If you're not @bbengfort or @harlanh then you should probably not be pushing to master.

The staging branch is where we get our act together and test before we push to production. There is no staging server as of yet, but there might be a light weight one in the future.

The integration branch is a development branch and is used for merging our various work together in a meaningful way. This is the branch that you probably want to be on if you're working on the code.

Please feel free to contribute, if you're looking for issues, check out our issue tracker on https://waffle.io/datacommunitydc/meetup2gcal - this is a Trello-like interface that integrates with Github issues - issues on waffle.io are issues in Github. Please make sure that you mark the issue in the commits and appropriately assign them to the correct milestones.

Pull requests will be monitored by @bbengfort and @harlanh but if you become an active contributor, we may give you the keys to the app and let you help out as well. The key to a good pull request is tests -- if you have tests and everything builds ok, there is very little we will say that will make us not accept the request. If you submit something without tests, just expect that we will ignore you.

Keep in mind that there are release notes and more details on the wiki.


meetup2gcal needs a better name, but is written in Node.js (Javascript). Useful pacakges include the following:

  • express -- web services
  • jade -- web page templating
  • mongodb -- nosql database library
  • mongoose -- object document mapper
  • winston -- logging
  • q -- an excellent promise library
  • dotenv -- manages development environment
  • underscore -- because you need to do things
  • chai -- for writing good tests
  • mocha -- for executing tests
  • sinon -- for creating fixtures for tests

NOTE: This list is probably out of date as of the last release and needs updating from the package.json file.