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+).
Developers that are comfortable using Github but have trouble managing an event.
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.
- A github Account
- A Repository per organisation
- A Personal Access Token able to edit your repository
- A public web-server to host the software
- A GitHub Repository for your event or usergroup (example: BarcelonaJS)
Issues
enabled on that repository (you can activateIssues
in the repository settings)- 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. - A personal access token for the organisation or your profile, including repo write access (https://github.com/settings/tokens)
- Create a secret gist with your production config. Name it
gitevents.js
(needs to contain at least github api token and repository info) - Go to https://github.com/settings/tokens and create a token for your gitevents application
- 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'
}
}
}
};
- Log in to Digital Ocean and create a Droplet
- Name your droplet
gitevents
- Choose $5/month size
- Choose Frankfurt 1 as datacenter (or whatever you want)
- Choose
CoreOS
as image (stable
orbeta
) - Select 'User Data' and copy
cloud-config.yml
into the field - Change
<token>
with an etcd token from https://discovery.etcd.io/new?size=1 - Change
<production.js>
with the RAW link of your secret(!!!) gist - Add your SSH keys (normally you wound't neet to log in, but just in case)
- Click
Create
- Start the development server:
npm run dev
- Start localtunnel (
npm i -g localtunnel
):lt -p 3000
- Go to your test-repo webhook settings:
https://github.com/gitevents/playground/settings/hooks
- Add or modify the webhook with the localtunnel url
- Create, label, and play with issues and milestones
Or:
Run the tests:
npm run test
- gitevents Core
- Meetup.com plugin to create and update meetups.
- Twitter updates
- Mailchimp Newsletters
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
- 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.
You can always get in touch in our community chat on Gitter.
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).
gitevents-cli's People
gitevents-cli's Issues
pro tips
Generally speaking: If you use heavy libraries the start-up time can be significantly slow. It is good to have at least the -v option to return very quickly. A '-v' (version) option in general is a good idea and never forget good exit codes. The exit code 1 is "okay".
It is however good to have a -y (all yes) or -n (all no) option to automate the input.
And (generally with user input) I find it better to ask "Enter the chapter name: " with an intelligent default value (say: osaka) than to have two questions "There is no chapter name, we evaluated osaka could be good, Y/n" and then ask for the name.
A good logging library in cli tools can help much. With the current tool I use npmlog and I learn to love it.
from @martinheidegger
List of attendees.
It would be good to have a list of attendees through the CLI
readme should outline what the code will do
Github organisation is required even when specify not to use it
When you answer No
to the question Use a GitHub organisation for your event
, the next question still ask you to enter your GitHub organisation. You cannot progress past this step without having a GitHub organisation.
repo needs a description :-)
No description or website provided
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.