A Node/Heroku system for piping Meetup events into a Google 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.
- Store your local development environment in a
.envfile in the root. (TODO: document each variable)
ADMIN_DOMAINS- comma-separated list of email domains that give admin priviledges
- Refer to the
google-oauth-jwthttps://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 installto pull libraries, and
sudo npm install -g nodemonto install https://github.com/remy/nodemon
- Make sure there's a local MongoDB database running in the dev environment
make runserverto execute the dev environment and run the server with automatic reloads on save (using nodemon)
make testto execute the test scripts (using mocha)
There are currently three branches of development:
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.
- 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