This is an aggregator for groups / events across a variety of services, which is then outputted on a website, in a JSON format, and a iCal file (which can be added/shown in a calendar).
Currently hosted as a test instance on Azure - https://ecaedactecheventstestapp.azurewebsites.net/
OLD VERSION: https://github.com/Sean12697/MeetupManchesterTech
To start using this project, you will need to have the following programs installed:
Once you have NodeJS installed, run the following command at the root of the project to download all the dependencies:
npm i
If you wish to modify the project you will likely wish to modify the following aspects.
The source code that pulls in the groups/events from the various sources can be found in ~/_data/dataGather.js.
This script requires the declaration of class files specified with a getData()
function that returns a 2D array of [ [group], [event] ]
.
The Meetup class uses group IDs from ~/_data/sources/groupIds/meetup.js for now, which can be updated/replaced with ease (no other API requirements).
The EventBrite class uses organizations objects from ~/_data/sources/groupIds/eventbrite.js for now, which can be updated/replaced with ease.
Eventbrite does require an API key, which can be found on their website, although a Public key is being used in this example which works.
As of 12/12/19 there has been a "Event Search API Shut Down", which means an API Key/Token is required, which can be found on their website. This can be set under the environment variables as EVENTBRITE_TOKEN
, or set as the only parameter for the Eventbrite setup in the dataGather
.
The Google Calendar class can be found ~/_data/sources/googleCalendar.js, which can be initialized with another Calendar ID, with the example of the TechNW calendar below:
this.googleCalendar = new googleCalendar("[email protected]", "https://technw.uk/calendar", "TechNW", googleCalendarKey)
Once installed and configured, you can then run the following command:
npm run start
Which will then generate the website in the _site
folder, along with the following files within that folder:
- ical: ~/data/events.ical
- Events JSON: ~/data/events.json
- Groups JSON: ~/data/groups.json
If you wish to deploy this as a service, the recommended way would be to push it to Netlify, with npm start
as the build command and _site
as the build directory.
This project is part of the much greater CompiledMCR project (infrastructure below), meaning potentially only minor PR's will be accepted for refinements, feature updates and bug fixes.
If you do wish to folk it for another city, please do link back and a central Compiled website will be constructed soon.