Wilm0r / giggity

Generic Android conference schedule viewer
https://gaa.st/giggity
GNU General Public License v2.0
102 stars 110 forks source link
android c3nav ccc conference fahrplan fosdem frab froscon libreplanet pentabarf pretalx sfscon

Giggity

Giggity is an Android app that loads Pentabarf/frab/wafer/Pretalx/OSEM XML files (or if none are available, .ics) with schedules of conferences and other events, and displays them in various convenient formats.

Nowadays many events release dedicated apps (with limited features) which I don't like. :-( Giggity is a generic app that can be used for any event that publishes their schedule in an open format, and offers more features to help with organising your visit, like:

It's free software, and available on Google Play, F-Droid and I guess other Android markets.

It's named Giggity, after the word "Gig". The fact that it is also a well-known catch phrase of a certain cartoon character may or may not be coincidental. ;-)

F-Droid

Play Store

Deeplinking into Giggity

Giggity reads generic .ics or even .xml files and will not register itself as a reader for these file formats with Android.

If you however want to add deeplinks on your website, prompting Android phones to open your schedule file directly in Giggity, you can use ggt.gaa.st URLs formatted like this:

https://ggt.gaa.st/#url=https://fosdem.org/2019/schedule/xml

Starting with Giggity 2.0, you can also include your JSON metadata in these URLs if you have any. Use this script to generate the right (and backward compatible) URL.

This is likely a better option than scanning a QR now that good ad-free QR scanners appear to be rare. But where possible, consider just adding your event to the menu as explained in the next section.

Locating the XML/ICS file

It is not always easy to locate a file usable for Giggity, sometimes organisers just publish a grid on a webpage, other times they just don't know there is an option in the CfP system to expose it. Knowing which software they used for the call for paper usually helps locating the file. A few platforms generate the web view on the fly by parsing the XML, and have the URL hardcoded in the HTML code. It is not forbidden to ask the organisers which platform they use, and if they have the file at hand.

Some conferences just publish a link to the ICS and XML files somewhere on the schedule page, look for it.

Pretalx

Pretalx exposes export formats in a drop-down menu on the schedule web page, in the top-right corner, right after the Version number. Use the last entry named "XML (frab compatible)".

It is usually in the form: https://<CFPHOST>/<CONFERENCE>/schedule/export/schedule.xml

OSEM

It usually is in the form: https://<CFPHOST>/conferences/<CONFERENCE>/schedule.xml

Indico

It usually is in the form: https://<CFPHOST>/event/<CONFERENCE>/event.ics?detail=contributions

Adding your event to the default menu

To do this, construct a JSON file formatted like this in the menu directory:

{
    "version": 2019122000,
    "url": "URL_OF_YOUR_PENTABARF_FILE",
    "title": "TITLE",  // preferably have it match the title in your Pentabarf
    "start": "2020-02-01",
    "end": "2020-02-02",
    "timezone": "Europe/Brussels",
    // To be used only if your event tends to make last-minute changes, and allowed only if the
    // server hosting your Pentabarf file sends HTTP 304s when no changes are made:
    "refresh_interval": 1800,
    "metadata": {
        // Must have an alpha layer, be square and not too large. Will be used for
        // notifications and home shortcut.
        "icon": "https://www.conference.org/logo.png",
        "links": [
            {
                "url": "https://www.conference.org/",
                "title": "Website"
            },
            {
                "url": "https://www.conference.org/info.pdf",
                "title": "Info",
                "type": "application/pdf"
            },
            {
                "url": "https://www.conference.org/floorplan.png",
                "title": "Map",
                "type": "image/png"
            }
        ],
        // Entirely optional:
        "rooms": [
            {
                "name": "ROOM 1",  // Warning: it's a regex!
                "latlon": [51.482598, -0.144742]
            },
            {
                "name": "ROOM 2",
                "latlon": [51.481024, -0.145571]
            }
        ]
    }
}

The metadata section (and/or its two subsections) is optional but recommended as it lets you define links to show automatically in Giggity's nav drawer when viewing your event. Adding a MIME-type to a link will make Giggity download that file and show it off-line instead of in the browser, great for slow conference WiFi. Feel free to add other kinds of links as you see fit.

Less commonly used: Adding room locations will make room names in event description clickable, sending the user to the given latlon in their preferred maps application (especially great if your venue has indoor maps with for example Google). Note that the room name is actually a regular expression (which could be used to combine entries for adjacent rooms for example).

For those conferences using c3nav, the FOSDEM fragment shows how to integrate that. In case of c3nav you'll likely just want to have an entry for every room instead of taking advantage of regex matching.

To test your entry, you can for example turn it into a QR-encode using previously mentioned tools/ggt.sh and python3-qr:

tools/ggt.sh menu/YOURFILE.json | qr

(sudo apt-get install python3-qrcode if it doesn't work, or use any other encoder that you may know of.)

And use a QR scanner (for example Lens in the Camera application) to open it on your phone.

To get your entry added to Giggity, just add it to the menu directory and send a pull request. To save time, run tools/menu-ci.py for sanity checking. (Same check is run automatically through Travis-CI.)