Giter VIP home page Giter VIP logo

core's Introduction

npmbuild statusdockergittercode climatetest coverageissue countpackage quality

GitHub Issues + Your Event = gitevents

gitevents is a Node.js server application that can be configured to automatically setup and maintain one or many events on Event-Management websites through Github.

Right now gitevents has Tito and Meetup support.

gitevents uses the webhooks of a GitHub repository to manage events. Every Milestone is treated as Event and every Issue represents a Talk. Additional workflow is managed by convention through Labels. It also supports promotion through social channels (such as Email, Facebook, Twitter, Google+).

Who needs this?

Developers that are comfortable using Github but have trouble managing an event.

How do I use it?

The idea is to create a planning issue with the event information. You can additionally add a checklist, like we have it in our demo repo. The moment you label the issue event, gitevents jumps in and created milestones, meetup.com events, ti.to signup pages etc. for you - all automatic. In a speaker or talks repo, you can let people create issues with talk proposals, we have some examples here. Gitevents sets up milestones and you can assign a milestone to an issue, which marks the event/date the talk will be scheduled. Once you label the event talk, gitevents updates meetup.com, ti.to etc. and also creates semantic markdown and json files in the general event repository that you can use together with metalsmith to automatically build a website.

What do I need?

  1. A github Account
  2. A Repository per organisation
  3. A Personal Access Token able to edit your repository
  4. access token
  5. A public web-server to host the software
  6. A GitHub Repository for your event or usergroup (example: BarcelonaJS)
  7. Issues enabled on that repository (you can activate Issues in the repository settings)
  8. From the settings in Webhooks & Services create a webhook to your service ip (example: http://barcelonajs.org/github/delivery). /github/delivery is the required path.
  9. A personal access token for the organisation or your profile, including repo write access (https://github.com/settings/tokens)

Almost-just-one-click-ready-to-launch version:

  1. Create a secret gist with your production config. Name it gitevents.js (needs to contain at least github api token and repository info)
  2. Go to https://github.com/settings/tokens and create a token for your gitevents application
  3. Copy common/yourevent.js and adjust the values
module.exports = {
  debug: false,
  about: 'A line that is copied into every event.md file as content.',
  rollbar: '<if you have a rollbar account, otherwise remove>',
  date_format: 'DD.MM.YYYY',
  mail: {},
  paths: {
    talks: 'src/talks/',
    events: 'src/events/'
  },
  url: 'http://barcelonajs.org',
  github: {
    user: '<the acting github username>',
    repos: {
      planning: '<target user>/<target planning repo>',
      speakers: '<target user>/<target speakers repo>',
      gitevent: '<target user>/<target gitevent repo>'
    },
    secret: '<a random secret that you copy into all webhook settings as secret>',
    token: '<personal access token from https://github.com/settings/tokens>'
  },
  labels: {
    job: 'job',
    talk: 'talk',
    proposal: 'proposal',
    event: 'event'
  },
  schema: {
    default_organizer: {
      'type': 'Organization',
      'address': {
        'type': 'PostalAddress',
        'addressLocality': '<city, country>',
        'postalCode': '<postcode>',
        'streetAddress': '<address>'
      },
      'email': '<organisation email>',
      'name': '<organisation  name>',
      'url': '<organisation url>'
    },
    default_talk_url: '/talk/',
    default_event_url: '/event/',
    default_start_time: '19:00',
    default_talk: {
      'context': 'http://schema.org',
      'type': 'Educational event',
      'duration': 'P30M'
    },
    default_event: {
      'context': 'http://schema.org',
      'type': 'Social event',
      'location': {
        'type': 'Place',
        'address': {
          'type': 'PostalAddress',
          'addressLocality': '<city, country>',
          'postalCode': '<postcode>',
          'streetAddress': '<address>'
          'name': '<venue name>'
        },
        'url': 'http://barcelonajs.org',
        'duration': 'P2H'
      },
      doorTime: '18:45',
      inLanguage: {
        'type': 'Language',
        'name': 'English'
      }
    }
  }
};
  1. Log in to Digital Ocean and create a Droplet
  2. Name your droplet gitevents
  3. Choose $5/month size
  4. Choose Frankfurt 1 as datacenter (or whatever you want)
  5. Choose CoreOS as image (stable or beta)
  6. Select 'User Data' and copy cloud-config.yml into the field
  7. Change <token> with an etcd token from https://discovery.etcd.io/new?size=1
  8. Change <production.js> with the RAW link of your secret(!!!) gist
  9. Add your SSH keys (normally you wound't neet to log in, but just in case)
  10. Click Create

How to run gitevents locally / as a developer

  1. Start the development server: npm run dev
  2. Start localtunnel (npm i -g localtunnel): lt -p 3000
  3. Go to your test-repo webhook settings: https://github.com/gitevents/playground/settings/hooks
  4. Add or modify the webhook with the localtunnel url
  5. Create, label, and play with issues and milestones

Or:

Run the tests:

npm run test

Implemented so far:

  • gitevents Core
  • Meetup.com plugin to create and update meetups.

Coming soon

  • Twitter updates
  • Mailchimp Newsletters

Contribute

https://github.com/blog/1943-how-to-write-the-perfect-pull-request


git clone https://github.com/gitevents/core.git
npm install
npm run test

Backlog / Milestone

  • Stabilise core functionality and github issue handling
  • Test and fix meetup.com event creation and updates
  • Tests for various use-cases: updating events, talks, proposals etc.

Contact

You can always get in touch in our community chat on Gitter.

Want to help?

Talk to PatrickHeneise from BarcelonaJS or IanCrowther from LNUG if you need any help. We can set up pair programming sessions for node.js beginners or for specific solutions (f.e. tests).

core's People

Contributors

alistairstead avatar dependabot[bot] avatar fixdocker avatar gitter-badger avatar greenkeeperio-bot avatar iancrowther avatar ifraixedes avatar joemckie avatar katiefenn avatar martinheidegger avatar maxwellito avatar nnevala avatar nomad3k avatar patrickheneise avatar ticaboo avatar trevorah avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

core's Issues

GitEvents Logo

Just a small thing, but would be cool to have a nice picture up. Suggestions?

Pair-Programming

Comment beginner, advanced or expert here to state your level if you're interested in a pair programming session to solve some gitevents issues. We'll use AtomPair for the session.

what is the roadmap?

I have been speaking with the node-buffer guy but its impossible to know if the codebase is active or whether there is any form of feature priority

gitevents Installer / CLI

Given the complex setup instructions, we should have an installer for the product.

Since the installer is only used once, it doesn't need to be a CLI (command line interface), but given the sensitivity of the data (github -can-do-everything- token), a CLI might be safer.

The CLI should only take the following input:

  • Digital Ocean access token
  • (Schema.org) default information (default venue, organiser, event, talk ...)
  • GitHub Personal Access Token with full (or most) capabilities
  • The full names of the 3 repos that are requires by gitevents (planning, speakers, gitevent) (this can also all be done in one repo)

Optional information for plugins could be:

  • meetup api key and meetup-id
  • various oauth access tokens

Expected outcome:

  • Automatically launch a droplet on digital ocean with the given cloud-config and get the IP address
  • Create or update the repos (planning, speakers, gitevent)
  • Create or update the web hooks for each repo to the gitevents server (with secret)
  • Create or update the issue labels in each repo (remove default issues)
  • Create or update initial file set (CONTRIBUTING.md, README.md, etc.)
  • README.md should have basic instructions on how to set up a talk and have the quick-link present (f.e. create a talk
  • Create a gist with the config file for gitevents

what happens?

if i meet the req's of having an empty repo and run through the guides, what is a actual output and what will i be able to do with it?

NottsJS Hack Day

gitevents
What is it?
Plugable Event management through github. Create issues to fire web hooks requests to the services you require via plugins.

What is core?
core is a shell repo used to trigger webhooks via github issues

What can i do with this?
create a talk proposal via a github issues. add a milstone which is the event date.

how to setup you github org
3 repos.

  • * speaking
  • x planning (o)
  • * feedback
    • assets (logos)
    • website (o)
  • state that meetup is optional

Minimum Requirements
a github account
a github repo

set a purpose for the repo:

  • speaking
  • planning
  • feedback

once you decide the purpose, you can execute gi-labels

  • gitevents init - what plugins do you want? (possible yeoman generator)
  • enter tokens

we need to be able to deploy plugins to digital ocean

  • you need to host your plugins on a service such as linode in order to listen to webhooks

hot issues

what are the top 5 issues that you need the community to work on/help with/feedback on

create Meetup module

Create meetup events, automatically announce them etc. when a milestone is created and an issue assigned.

usage scenarios

  • what happens when i fork and run tests? what am i expecting to see or do?
  • what are the use cases?
  • who is this tool designed for?

Create Lanyrd Events

Create Lanyrd events, automatically announce them etc. when a milestone is created and an issue assigned.

Tests

currently travis is failing as tests have not been updated to 0.3.0.

Would appreciate some help here updating all the tests to the new architecture with talks and events separated.

Public website

We should have a minimal web site, describing the project, the product, how it works and how you can use it.

Gitevents module API definition

We have to define the GitEvents module API that fit for any module.
This issue is to discuss about and agree with the first version of the module API.

Contributors which started to implement a module or are defining one can provide a valuable commends through their modules needs.

milestones?

we should prioritise the backlog, any traffic just sees chaos

Process "Special Events"

Every once in a while there's a special thing going on ... be it BeachJS, BeerJS, whatever. Those events usually don't have talks, but a time, location, organiser, whatever.

  • JSON has to be defined for special events (check for example BeachJS).
  • Label has to be specified
  • Webhook processing has to be implemented.

org chart

who should I contact if I want to get involved? who can point me to issues that are appropriate for my level of expertise?

my mid-install brain dump

no need to fork
step 6 should be step 4
add example clound-config.yml
Add your SSH keys (normally you wound't neet to log in, but just in case) - not true, is required
you only need to link the ip in the webhook now to https://github.com/nottsjs/speakers
create webhook

  • payload is ip of droplet + /github/delivery
  • secret is the token set in gist
  • Let me select individual events. issues and issue comment

bcnjs slack issues

any issues raised in bcnjs slack should be ported over to here otherwise they are in a black hole

Heroku compatibility

What's required to get this not only as Docker container but also to run on Heroku?

Trigger a GitHub pages build

The data coming in from a Webhook should be processed; uploaded and committed to GitHub in the gh-pages branch to get an updated website.

Update Lanyrd Events

When a 2nd, 3rd ... talk is assigned to a milestone, update the event description.

Installation Documentation

Overhaul the README.md to introduce a new user of the concept, tell them the requirements and then lay down a vision for how to get it install (to be completed by another issue).

Create Mailchimp module

Have new labels 'job offers' and 'must read' with jobs and coding resources that can be send together with the mailing.

Then there should be a newsletter/email about a week before the event (triggered manually or automatically, no idea) with:

  • general event info
  • talks
  • other cool stuff in the city
  • resources (links, articles)
  • jobs
  • sponsor info etc.

setup email and dns

i bought the following domains

  • gitevents.org
  • gitevents.com
  • gitevents.co.uk

Update meetup events

When a 2nd, 3rd ... talk is assigned to a milestone, update the meetup event description.

Meetup "update event"

After event creation on meetup, return the meetup event id to the events-2015.json file for further updates on meetup.com.

This should work for all plugins to have a return value and update the events file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.