Skip to content
This repository has been archived by the owner on Sep 23, 2021. It is now read-only.

NottsJS Hack Day #82

Open
iancrowther opened this issue Nov 5, 2015 · 6 comments
Open

NottsJS Hack Day #82

iancrowther opened this issue Nov 5, 2015 · 6 comments
Labels

Comments

@iancrowther
Copy link
Contributor

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
@PatrickHeneise
Copy link
Member

That sounds great. The setup could be a lot simpler though.

Minimal requirements:
GitHub Org:

  • website, speaking & planning
  • feedback

What's currently working (more or less):

  • Routine
    1. label "talk proposal", issue info will be written in "proposals.json" in the main repo
    2. label "accepted" will move it from proposals.json to events-YYYY.json, to have a yearly history
    3. milestones have to be set BEFORE using the labels
  • Milestones have meta data like time, date, venue
  • Markdown and Markdown headers are used to meta-data the talk (BcnJS needs a talk language for example) - this should be optional
  • Configs:
    • if there's a config set for meetup, it will use the meetup plugin automatically
    • that should be for all plugins, if there's a valid config, just use it
    • labels can be defined in config json as well, doesn't need to be "talk proposal"

The optimal deployment should be a Docker container that gets the initial config from a Gist. If the config changes, just re-deploy the container. No CLI, no generators, no trouble ;).

My personal "best solution" would be:

  1. deployed on a digital ocean as docker container, listening to web hooks
  2. event admin creates a milestone for the next event
  3. speaker adds an event
  4. gitevents checks if requirements are met (title, abstract, meta (language, level)) - meta can be optional
  5. event admin marks a talk as a proposal - stored in proposals.json
    • tweet about the proposal and open it for comments
  6. event admin marks the talk accepted
    • gitevents moves or copies to events-2015.json
    • automatic tweets
    • a commit on events-2015.json would trigger a test/build on @codeship, this could trigger a metalsmith build to have an updated version of the website in the gh-pages branch
    • create or update meetup.com event, write event-id in events-2015.json
    • create or update ti.to event, write event-id in events-2015.json
    • create or update Lanyrd, write event-id in events-2015.json
    • ...
  7. event admin a few days before an event: close accepted talks
  8. once the milestone is complete (all issues linked to a milestone are closed):
    • send newsletter with talk data through mailchimp
    • tweet
    • announce the event on meetup

@PatrickHeneise
Copy link
Member

optional: if there's another issue linked to the milestone (for example an article, links, jobs etc.) these should be included in the newsletter.

@iancrowther iancrowther changed the title brain dump! NottsJS Hack Day Nov 6, 2015
@iancrowther
Copy link
Contributor Author

GitEvents - Hackday

Gitevents is a plugable event management system layered on top of GitHub. Making use of the Github API and WebHooks, GitEvents allows event organisers to automate tasks by interacting with issues.

GitEvents promotes service plugins as we understand every event is different.

Structure

GitEvents and its plugins must be self hosted and at its most basic, is made up of two components, the core and the webhook.

What is Core?

tbd

What is WebHook?

tbd

What does it do?

Currently GitEvents listens to talk proposal issues and generates a json object that your event website can consume via the client API.

Config

  • GitHub Account
  • GitHub Org
  • Web Server

GitHub Org Repos

  • website
  • speaking
  • planning
  • feedback

#### Speaking Repo Setup
Setup this repo with the following labels:

  • Proposed Schedule
  • Schedule Accepted

Goals

  • On-boarding
  • Deploy Scripts
  • Twitter Plugin
  • Ti.to
  • Mandril
  • Proposal Bot
  • Simplify WebHook
  • Dockerize the things
  • Doc's
  • Website
  • Build Tools

Onboarding

We would like to be able to init the repo from the cli in order to enter the basic config keys and select your plugins, similiar to yeoman.

Deploy Scripts

It would be great to be able to enter your dteails and automatically deploy GitEvents and your selected plugins onto your prefered cloud provider. For the purpose of the hackday, we could use Heroku + Papertrail.

Twitter Plugin

We would like to be able to automatically tweet speaker details once a talk proposal has been accepted for a milestoned event.

Ti.to

We would like to be able to create a new ti.to event and setup the ticket releases via the API. Due to the lack of a milestone webhook, we need to have a think about how to trigger the creation of a new event.

Mandril

We want to be able to send emails

Proposal Bot

We started to create a bot that would validate a talk proposal issues and reply if the interface was not adgered to.

Simplify WebHook

There is a need to simplify the workflow within this core module. There is also a need for unit tests. We have been discussing using a 3rd party database such as firebase to reduce js state and logic.

Dockerize

We want the capability to deploy with easy via docker. Primarily deployed to digital ocean as docker container, listening to web hooks. The optimal deployment should be a Docker container that gets the initial config from a Gist. If the config changes, just re-deploy the container. No CLI, no generators, no trouble ;).

Website

We need a website to explain what GitEvents is. This could be driven from the README

Doc's

We need some help to flesh out the doc's. There are a lot of concepts to explain in order to get this system working for you. We need to make the onbaording doc's much more concise. It would be amazing to have a visualisation of the end 2 end work flow

Build Tools

We could use CodeShip + MetalSmith to create a CI chain to build and deploy either GitEvents or the Website.

Current WorkFlow

  1. event admin creates a milestone for the next event
  2. speaker adds an event
  3. gitevents bot checks if requirements are met (title, abstract, meta (language, level)) - meta can be optional
  4. event admin marks a talk as a proposal - stored in proposals.json
    • tweet about the proposal and open it for comments
  5. event admin marks the talk accepted
    • gitevents moves or copies to events-2015.json
    • automatic tweets
    • a commit on events-2015.json would trigger a test/build on @codeship, this could trigger a metalsmith build to have an updated version of the website in the gh-pages branch
    • create or update meetup.com event, write event-id in events-2015.json
    • create or update ti.to event, write event-id in events-2015.json
    • create or update Lanyrd, write event-id in events-2015.json
    • ...
  6. event admin a few days before an event: close accepted talks
  7. once the milestone is complete (all issues linked to a milestone are closed):
    • send newsletter with talk data through mailchimp
    • tweet
    • announce the event on meetup

@iancrowther
Copy link
Contributor Author

@PatrickHeneise
Copy link
Member

we need to digest this into README etc.

@iancrowther
Copy link
Contributor Author

agreed

@mike182uk mike182uk added the docs label Jan 25, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants