Creating Event Web app using FOSSASIA Open-event framework

Organising events has never been an easy task. So many sessions being held simultaneously at so many different locations is a source of constant confusion and chaos for the organisers as well as the attendees.

FOSSASIA’s Open-event framework aims to provide an easy solution to organise events in it’s own way by using technology. It helps create user-customised Android and Web Apps to suit the needs of our event.

In this blog, I will walk you through 4 easy steps to host your personalised event web-app or create a sample event web-app on the open-event framework. [These steps are more from an open source developer’s point of view.]

Let’s start by taking the example of a sample event. I recently created a sample for FBF8'2017. F8 is conference held by Facebook annually.

I started by visiting the official F8 site. I personally used Google chrome for it as I was almost positive that the official site will be having an API which will make it easier for me to extract JSON for the event. Also, Google Chrome developer tools make it easier to access the API. I have previously explained how to access JSON through APIs in one of my previous blog posts that can be found here.

So in the F8 site, I looked for the page that will lead me to the full schedule of the conference:-

After clicking on the “SEE FULL SCHEDULE” button, this is where it leads us, with the developer tools ON.

That weird named file on that appears in under the XHR tab contains our JSONs!
[{1492502400: [{day: 1, sessionTitle: “Registration”, sessionSlug: “day-1-registration”,…},…],…}, {,…}]
0:{1492502400: [{day: 1, sessionTitle: “Registration”, sessionSlug: “day-1-registration”,…},…],…}
1:{,…}

This is how the file looks on clicking it at first. You must be seeing small clickable arrows on the sides which expand the JSON to reveal all the contents. But okay, we have crossed our first step: Obtaining JSON from the website’s API!

Step 2: Tailoring the JSON according to the open-event format needs to be done now. To view the latest API format, visit here. Now this step is obviously most time-consuming and tedious. We need to modify the API we obtained from the F8 site to meet the open-event requirements.

I mainly used Sublime text editor to do this. It has this great feature to find and replace text in text files.

Taking an example of a session object. This is what we will get from the API:-

allDay:false
createdAt:”2017–01–28T01:24:12.770Z”
day:1
displayTime:”3:00pm”
endTime:{__type: “Date”, iso: “2017–04–18T15:50:00.000Z”}
iso:”2017–04–18T15:50:00.000Z”
__type:”Date”
hasDetails:true
objectId:”62yCeJMvAf”
ogImage:{__type: “File”, name: “296643cca9aad196bbd3534324c52049_Making Great Camera Effects.png”,…}
name:”296643cca9aad196bbd3534324c52049_Making Great Camera Effects.png”
url:”https://f82017-parse.s3.amazonaws.com/296643cca9aad196bbd3534324c52049_Making%20Great%20Camera%20Effects.png"
__type:”File”
onMySchedule:false
sessionDescription:”With AI that transforms images, Facebook’s Camera Effects Platform lets you create animated masks, interactive overlays, frames, and other effects that people can apply to their photos and videos in the Facebook camera. Learn best technical and design practices for creating effects using this innovative technology, and see examples of successful effects.”
sessionLocation:”G”
sessionSlug:”making-great-camera-effects”
sessionTitle:”Making Great Camera Effects”
sortTime:”1492527600"
speakers:[{speakerName: “Volodymyr Giginiak”, createdAt: “2017–01–28T01:27:49.292Z”,…},…]
0:{speakerName: “Volodymyr Giginiak”, createdAt: “2017–01–28T01:27:49.292Z”,…}
1:{speakerName: “Stef Smet”, createdAt: “2017–01–28T01:30:16.022Z”,…}
startTime:{__type: “Date”, iso: “2017–04–18T15:00:00.000Z”}
iso:”2017–04–18T15:00:00.000Z”
__type:”Date”
tags:[“Camera”]
0:”Camera”
updatedAt:”2017–04–18T19:19:16.501Z”

Now, this is where I used the find & replace feature in Sublime text to make it look like the open-event standard JSON. For instance, replacing “sessionLocation” with “microlocation”, “sessionDescription” with “long_abstract” and so on. Yes, there were a few manual changes as well that I had to make.

This is how the final JSON session object looked like after completing step 2:

{
"short_abstract": "",
"id": 26,
"subtitle": "making-great-camera-effects",
"title": "Making Great Camera Effects",
"long_abstract": "With AI that transforms images, Facebook’s Camera Effects Platform lets you create animated masks, interactive overlays, frames, and other effects that people can apply to their photos and videos in the Facebook camera. Learn best technical and design practices for creating effects using this innovative technology, and see examples of successful effects.",
"end_time": "2017-04-18T15:50:00-07:00",
"microlocation": {
"id": 5,
"name": "Hall G"
},
"start_time": "2017-04-18T15:00:00-07:00",
"comments": "",
"language": "",
"slides": "",
"audio": "",
"video": "",
"signup_url": "",
"state": "accepted",
"session_type": {
"id": 6,
"name": "50 minutes session",
"length": "00.50"
},
"track": {
"id": 2,
"name": "Camera",
"color": "#FF3046"
},
"speakers": [{
"city": "",
"heard_from": "",
"icon": "",
"long_biography": "",
"small": "",
"photo": "",
"thumbnail": "",
"short_biography": "",
"speaking_experience": "",
"sponsorship_required": "",
"organisation": "Facebook",
"id": 40,
"name": "Volodymyr Giginiak"
}
]
}

Apart from this, there were places where I had to dig for information about speakers, their social website links, their images and so on because the open-event JSON format expects all this.

Step 3: JSON Validation

It is very likely that one of your JSON files will contain invalid JSON strings. So it is important to validate them. I used this online tool and I liked it very much. Once the JSON is validated, everything is set. All you need to now do is-move to step 4!

Step 4: Web app generation

Compress your JSON archive in .zip format and then go to the webapp generator. Enter your email ID and upload the zip file. Now, you can deploy, download and preview your personalised web-app, generated by FOSSASIA’s open-event web app generator.

Here is the link to the sample web app I created for FBF8'2017.

The official web-app generator repo is here.

If you want to contribute to FOSSASIA by creating a sample, you can create an issue in the official open-event repo, along with a PR which contains the JSON sample files, the zipped file and a link to the web-app deployment on GitHub pages.

Show your support

Clapping shows how much you appreciated MAHIKA WASON’s story.