Skip to content

Event Descriptor Data Model explained

Frédéric Camblor edited this page Apr 6, 2024 · 30 revisions

The Event Descriptor is used to globally configure your event in Voxxrin.

Its main objective is to provide clear documentation for Event Organizers, so that they can configure their event as effectively as possible in Voxxrin

This data is generally supplied when your event is crawled:

  • Either "automatically", when the crawler you are using is able to fetch the information from your site, from an API, etc.
  • Or in the crawler configuration when the information required cannot be retrieved by any automated means.

The purpose of this page is to exhaustively list and explain all the properties of the Event Descriptor, without necessarily specifying whether the data is retrieved automatically or not (as this will depend on the implementation of each crawler).

Event Descriptor Data Sample

Devoxx BE 2023 Event Descriptor Sample
{
  "eventFamily": "devoxx",
  "title": "Devoxx Belgium 2023",
  "headingTitle": "Devoxx Belgium 2023",
  "description": null,
  "timezone": "Europe/Brussels",
  "peopleDescription": null,
  "websiteUrl": "https://devoxx.be",
  "location": {
    "country": "Belgium",
    "city": "Antwerp"
  },
  "keywords": [ "Devoxx", "Java", "AI", "Cloud", "Big data", "Web", "Spring Boot", "Microservices", "Kubernetes", "Docker", "Serverless", "Architecture", "Security", "Performance", "Reactive", "Functional" ],
  "start": "2023-10-02",
  "end": "2023-10-06",
  "days": [
    { "id": "monday", "localDate": "2023-10-02" },
    { "id": "tuesday", "localDate": "2023-10-03" },
    { "id": "wednesday", "localDate": "2023-10-04" },
    { "id": "thursday", "localDate": "2023-10-05" },
    { "id": "friday", "localDate": "2023-10-06" }
  ],
  "infos": {
    "eventDescription": "Kinepolis Antwerp",
    "venuePicture": "https://devoxx.be/wp-content/uploads/2023/08/kinepolis.jpeg",
    "address": "Groenendaallaan 394, 2030 Antwerpen",
    "floorPlans": [
      { "label": "Cinema Rooms", "pictureUrl": "https://s3-eu-west-1.amazonaws.com/voxxeddays/webapp/images/95c4e19e-858d-4f18-a980-1df451a089d0.jpg" },
      { "label": "Exhibition hall", "pictureUrl": "https://s3-eu-west-1.amazonaws.com/voxxeddays/webapp/images/1737f8b6-b396-450b-a087-097535488078.jpg" }
    ]
  },
  "socialMedias": [
    {"type": "website", "href": "https://devoxx.be/"},
    {"type": "twitter", "href": "https://twitter.com/devoxx"},
    {"type": "mastodon", "href": "https://mastodon.social/@devoxx"},
    {"type": "instagram", "href": "https://www.instagram.com/devoxxbe/"},
    {"type": "youtube", "href": "https://www.youtube.com/@DevoxxForever"},
    {"type": "facebook", "href": "https://www.facebook.com/devoxxcom"},
    {"type": "linkedin", "href": "https://www.linkedin.com/company/9185591"},
    {"type": "flickr", "href": "https://www.flickr.com/photos/bejug/albums"},
    {"type": "github", "href": "https://github.com/devoxx"}
  ],
  "sponsors": [
    {
      "type": "Platinium", "typeColor": "#E5E4E2", "typeFontColor": "black",
      "sponsorships": [
        {"name": "ING", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/INGLogo.jpg", "href": "https://www.ing.be/en/retail"},
        {"name": "Jetbrains", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/jetbrains.jpg", "href": "https://www.jetbrains.com/"},
        {"name": "AWS", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/aws.jpg", "href": "https://aws.amazon.com/"},
        {"name": "Google Cloud", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/GoogleCloud.jpg", "href": "https://cloud.google.com/"},
        {"name": "Oracle", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/09/Oracle.jpg", "href": "https://www.oracle.com/java/"}
      ]
    }, {
      "type": "Gold", "typeColor": "#ffd700",
      "sponsorships": [
        { "name": "IO Digital", "href": "https://www.iodigital.com/nl", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/io.jpg" },
        { "name": "Smals", "href": "https://www.smals.be/nl", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/smalict.jpg" },
        { "name": "DXC", "href": "https://dxc.com/us/en", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/dxctechnology.jpg" },
        { "name": "Red Hat", "href": "https://www.redhat.com/en", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/RedHat.jpg" },
        { "name": "Sonarsource", "href": "https://www.sonarsource.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/sonar.jpg" },
        { "name": "Splunk", "href": "http://www.splunk.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/splunk-2023.jpg" },
        { "name": "VMWare Tanzu", "href": "https://tanzu.vmware.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/VMWare.jpg" },
        { "name": "Gitlab", "href": "https://gitlab.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/08/GitLab.jpg" }
      ]
    }, {
      "type": "Silver", "typeColor": "#c0c0c0",
      "sponsorships": [
        { "name": "Infosupport", "href": "https://www.infosupport.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/infisupport.jpg" },
        { "name": "Redis", "href": "https://redis.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/redis.jpg" },
        { "name": "Gatling", "href": "https://gatling.io/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/gatling.jpg" },
        { "name": "Vaadin", "href": "https://vaadin.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/vaadin.jpg" },
        { "name": "Couchbase", "href": "https://www.couchbase.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/couchbase.jpg" },
        { "name": "Netcompany", "href": "https://www.netcompany-intrasoft.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/netcompany.jpg" },
        { "name": "Klarrio", "href": "https://www.klarrio.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/kalrrio.jpg" },
        { "name": "Azul", "href": "https://www.azul.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/azul.jpg" },
        { "name": "Arhs", "href": "https://www.arhs-group.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/arngroup.jpg" },
        { "name": "ASML", "href": "http://www.asml.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/asml.jpg" },
        { "name": "Contrast Security", "href": "http://www.contrastsecurity.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/Contrast.jpg" },
        { "name": "Apryse", "href": "http://www.apryse.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/apryse.jpg" },
        { "name": "Trend Miner", "href": "https://www.trendminer.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/08/TrendMiner.jpg" },
        { "name": "Bellsoft", "href": "https://bell-sw.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/09/bellsoft.jpg" }
      ]
    }, {
      "type": "Bronze", "typeColor": "#cd7f32",
      "sponsorships": [
        { "name": "Continuum", "href": "https://www.continuum.be/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/continuum.jpg" },
        { "name": "XPlore Group", "href": "https://www.xploregroup.be/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/xploregroup.jpg" },
        { "name": "Tobania", "href": "https://www.tobania.be/en-gb/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/tobania.jpg" },
        { "name": "Sofico", "href": "https://www.sofico.global/en", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/sofico.jpg" },
        { "name": "Atomicjar", "href": "https://www.atomicjar.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/08/AtomicJar.jpg" },
        { "name": "Payara", "href": "https://www.payara.fish/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/payara.jpg" },
        { "name": "Mateco", "href": "http://mateco-it.be/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/mateco.jpg" },
        { "name": "Cheops", "href": "https://www.cheops.com/en/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/cheops.jpg" },
        { "name": "Sourcegraph", "href": "https://about.sourcegraph.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/sourcegraph.jpg" },
        { "name": "Gradle", "href": "https://gradle.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/08/gradle.jpg" },
        { "name": "ACA Group", "href": "https://www.acagroup.be/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/acagroup.jpg" },
        { "name": "Oniryx", "href": "https://oniryx.be/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/oniryx.jpg" },
        { "name": "Axxes", "href": "https://www.axxes.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/axxes.jpg" },
        { "name": "Positive Thinking company", "href": "https://positivethinking.tech/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/PositiveThinkingCompany.jpg" }
      ]
    }, {
      "type": "Registration partner", "typeColor": "#165CE3",
      "sponsorships": [
        { "name": "Swicket", "href": "https://swicket.io/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/swicket-300x189.jpg" },
        { "name": "Clever cloud", "href": "https://www.clever-cloud.com/en/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/clevercloud-300x189.jpg" }
      ]
    }, {
      "type": "Friends", "typeColor": "#008000",
      "sponsorships": [
        { "name": "Voxxed", "href": "https://voxxeddays.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/voxxed.jpg" },
        { "name": "BE JuG", "href": "https://www.meetup.com/belgian-java-user-group/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/BeJUG.jpeg" },
        { "name": "Brussels JUG", "href": "https://www.meetup.com/brujug/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/BruJUG.jpg" },
        { "name": "jobrunr", "href": "https://www.jobrunr.io/en/?tab=developer", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/Jobrunr.jpg" },
        { "name": "Timefold", "href": "https://timefold.ai/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/timefold.jpg" }
      ]
    }
  ],
  "features": {
    "favoritesEnabled": true,
    "roomsDisplayed": true,
    "remindMeOnceVideosAreAvailableEnabled": false,
    "showInfosTab": true,
    "hideLanguages": [],
    "showRoomCapacityIndicator:": false,
    "ratings": {
      "scale": {
        "enabled": true,
        "icon": "star",
        "labels": [
          "There are rooms for improvement",
          "Talk was OK",
          "Good talk",
          "Great talk",
          "Amazing talk"
        ]
      },
      "bingo": {
        "enabled": true,
        "isPublic": false,
        "choices": [
          { "id": "1", "label": "Difficult to understand" },
          { "id": "2", "label": "Too fast" },
          { "id": "3", "label": "Not enough demos/samples" },
          { "id": "4", "label": "Complicated" },
          { "id": "5", "label": "Too slow" },
          { "id": "33", "label": "Learned something new" },
          { "id": "56", "label": "This was fun!" },
          { "id": "68", "label": "Very interesting" },
          { "id": "85", "label": "Awesome content" },
          { "id": "90", "label": "Really enjoyed this" },
          { "id": "95", "label": "Amazing speaker" },
          { "id": "100", "label": "A new Devoxx Rock Star is born" },
          { "id": "105", "label": "Venkat in the making" }
        ]
      },
      "free-text": {
        "enabled": false,
        "maxLength": 400
      },
      "custom-scale": {
        "enabled": false,
        "choices": [
          { "id": "happy", "icon": "happy" },
          { "id": "sad", "icon": "sad" }
        ]
      }
    },
    "topRatedTalks": {
      "minimumNumberOfRatingsToBeConsidered": 10,
      "minimumAverageScoreToBeConsidered": 3,
      "numberOfDailyTopTalksConsidered": 10
    }
  },
  "logoUrl": "https://devoxx.be/wp-content/uploads/2019/05/DEVOXX-Name-Only-TransparentBackground.png",
  "backgroundUrl": "https://devoxx.be/wp-content/uploads/2023/06/time-min.jpg",
  "theming": {
    "colors": {
      "secondaryContrastHex": "#FFFFFF",
      "tertiaryHex": "#202020",
      "tertiaryContrastHex": "#FFFFFF",
      "secondaryHex": "#3880FF",
      "primaryHex": "#F78125",
      "primaryContrastHex": "#FFFFFF"
    }
  },
  "supportedTalkLanguages": [
    { "id": "en", "themeColor": "#165CE3", "label": "EN" }
  ],
  "rooms": [
    { "id": "1160", "title": "Room 4" },
    { "id": "1159", "title": "Room 5" },
    { "id": "1158", "title": "Room 6" },
    { "id": "1156", "title": "Room 8" },
    { "id": "1155", "title": "Room 9" },
    { "id": "1157", "title": "Room 7" },
    { "id": "1151", "title": "BOF 1"  },
    { "id": "1152", "title": "BOF 2"  },
    { "id": "1161", "title": "Room 3" },
    { "id": "1154", "title": "Room 10"}
  ],
  "talkTracks": [
    { "id": "1251", "themeColor": "#AFA003", "title": "Architecture" },
    { "id": "1252", "themeColor": "#1246B0", "title": "Data & AI" },
    { "id": "1254", "themeColor": "#BF5C57", "title": "Build & Deploy" },
    { "id": "1701", "themeColor": "#7B4A4A", "title": "Development Practices" },
    { "id": "2754", "themeColor": "#C30000", "title": "Java" },
    { "id": "2758", "themeColor": "#4D9E5E", "title": "Mind the Geek" },
    { "id": "2760", "themeColor": "#B076BA", "title": "UI & UX" },
    { "id": "1256", "themeColor": "#6441CA", "title": "Server Side Java" },
    { "id": "1255", "themeColor": "#147D73", "title": "Security" },
    { "id": "1253", "themeColor": "#9F0E3A", "title": "People & Culture" }
  ],
  "talkFormats": [
    { "id": "951", "title": "Conference", "duration": "PT50m", "themeColor": "#165CE3" },
    { "id": "959", "title": "Deep Dive", "duration": "PT180m", "themeColor": "#165CE3" },
    { "id": "968", "title": "Hands-on Lab", "duration": "PT180m", "themeColor": "#EA7872" },
    { "id": "957", "title": "Tools-in-Action", "duration": "PT30m", "themeColor": "#935A59" },
    { "id": "984", "title": "Hands-on Lab", "duration": "PT120m", "themeColor": "#3EDDEF" },
    { "id": "954", "title": "BOF", "duration": "PT60m", "themeColor": "#69BE72" },
    { "id": "68051", "title": "Keynote", "duration": "PT45m", "themeColor": "#165CE3" },
    { "id": "955", "title": "Keynote", "duration": "PT20m", "themeColor": "#EA7872" },
    { "id": "1005", "title": "Lunch talk", "duration": "PT45m", "themeColor": "#3EDDEF" },
    { "id": "956", "title": "Closing keynote", "duration": "PT45m", "themeColor": "#3EDDEF" }
  ]
}

Fields documentation

By default, consider that every fields described below will have to be defined, except if explicitely noted as a facultative field.

Note also that a [*] in front of the field will mean the field is mandatory.

Event Family

Event Family is a concept used for events behind a Franchise, so that Organizers' rights/access management can be shared across multiple events at once.

/eventFamily [*]

Put the name of your event family here.

This name can only be configured at the Crawler level by Voxxrin Administrators: as an Organizer, you shouldn't be in control of it.

Editorial description of the Event

All these properties are intended to provide high-level informations for your event, generally displayed on the Event List selector home screen.

/title [*]

  "title": "Devoxx Belgium 2023",

Long title of your event.
This title is used on the Events list screen.

Even if this is the "long form" of the title, be aware that this title might be "cut" with an overflow:ellipsis if this is too long to be displayed on the user's screen.

Event title example

/headingTitle [*]

  "headingTitle": "Devoxx BE '23",

Shorter title of your event.
This title is used on the header of the schedule, or to group your talks per event (on talks feedbacks screen for instance)

Event headingTitle example on event selector screen Event headingTitle example on talks with feedbacks screen

/description

  "description": "Premier Java-centric conference driving innovation and fostering developer connections.",

Short description of the event, which is going to be shown on event selector screen.
You can leave this field empty (null): in that case, nothing will be displayed.

Event description shown on event selector page

/timezone [*]

  "timezone": "Europe/Brussels",

Timezone which is going to be mostly everywhere on the schedule whenever it comes to displaying Dates & Times in the event's local timezone.

Timezone_used_under_the_hood

/peopleDescription

  "peopleDescription": "3200+ attendees",

Small description about attendees (like, number of attendees) which are going to be displayed on pinned events on event selector screen.
You can leave this field empty (null): in that case, the icon will not be displayed.

People_description

/websiteUrl [deprecated]

  "websiteUrl": "https://devoxx.be",

Website which is going to be used when clicking on the event list.

This field has been deprecated in favour of /socialMedias[type='website'] entry.

/location

  "location": {
    "country": "Belgium",
    "city": "Antwerp",
    "address": "Groenendaallaan 394, 2030 Antwerpen",
  },

Event's (geographical) location that is going to be displayed on event selector screen.

Event_location

These informations will also be displayed on your Event's Infos tab.

Address_in_Infos_tab

/keywords

  "keywords": [ "Antwerp", "Devoxx", "Java", "AI", "Cloud", "Big data", "Web", "Spring Boot", "Microservices", "Kubernetes", "Docker", "Serverless", "Architecture", "Security", "Performance", "Reactive", "Functional" ],

List of keyword that might be used when searching for events.

Searching for keywords

/start & /end [*]

  "start": "2023-10-02",
  "end": "2023-10-06",

Event start & end local dates (in the yyyy-mm-dd format) which is going to be displayed on event selector screen.

Important note: make it consistent with /days field below.
We're not "calculating" these fields (from /days) in case we have an event covering multiple days that are not having any Voxxrin schedule (it can happen, for instance, that we have an event from thursday to saturday, with special event not requiring a voxxrin schedule on saturday).

Event start/end fields

/days [*]

  "days": [
    { "id": "monday", "localDate": "2023-10-02" },
    { "id": "tuesday", "localDate": "2023-10-03" },
    { "id": "wednesday", "localDate": "2023-10-04" },
    { "id": "thursday", "localDate": "2023-10-05" },
    { "id": "friday", "localDate": "2023-10-06" }
  ],

List of day identifiers which are going to be used on the schedule.

id field needs to be unique (across the event) and will be used as a URL path parameter (don't put fancy characters in it).
localDate field is a yyyy-mm-dd formatted local date representing the day of the event in the configured event's Timezone

Important note: you will have a different day selector whether we're on a single day (no day selector) or a multi-day event.

Multi-days_event Single-day_event

Information about the event for attendees

Most of information in this section is linked to the Event's Infos tab.
Important note: in order to show this Infos tab, you will need to enable /features/showInfosTab feature flag.

/infos/eventDescription [deprecated]

Please don't use this deprecated field, use /description instead.

/infos/venuePicture [deprecated]

Please don't use this deprecated field, use /infos/floorPlans instead.

/infos/floorPlans

  "infos": {
    ...
    "floorPlans": [
      { "label": "Cinema Rooms", "pictureUrl": "https://s3-eu-west-1.amazonaws.com/voxxeddays/webapp/images/95c4e19e-858d-4f18-a980-1df451a089d0.jpg" },
      { "label": "Exhibition hall", "pictureUrl": "https://s3-eu-west-1.amazonaws.com/voxxeddays/webapp/images/1737f8b6-b396-450b-a087-097535488078.jpg" }
    ],
    ...
  }

List of plans for your events, showing your rooms, sponsors, and venue.

TODO: Screenshots to be added (once implemented)

/infos/socialMedias

  "infos": {
    ....
    "socialMedias": [
      {"type": "website", "href": "https://devoxx.be/"},
      {"type": "twitter", "href": "https://twitter.com/devoxx"},
      {"type": "mastodon", "href": "https://mastodon.social/@devoxx"},
      {"type": "instagram", "href": "https://www.instagram.com/devoxxbe/"},
      {"type": "youtube", "href": "https://www.youtube.com/@DevoxxForever"},
      {"type": "facebook", "href": "https://www.facebook.com/devoxxcom"},
      {"type": "linkedin", "href": "https://www.linkedin.com/company/9185591"},
      {"type": "flickr", "href": "https://www.flickr.com/photos/bejug/albums"},
      {"type": "github", "href": "https://github.com/devoxx"}
    ],
    ....
  }

List of Social medias URLs used for your event.
Currently supported social media types are described in SocialMediaType utility type.

Event_social_medias

/infos/sponsors

  "infos": {
    ....
    "sponsors": [
      {
        "type": "Platinium", "typeColor": "#E5E4E2", "typeFontColor": "black",
        "sponsorships": [
          {"name": "ING", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/INGLogo.jpg", "href": "https://www.ing.be/en/retail"},
          {"name": "Jetbrains", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/jetbrains.jpg", "href": "https://www.jetbrains.com/"},
          {"name": "AWS", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/aws.jpg", "href": "https://aws.amazon.com/"},
          {"name": "Google Cloud", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/GoogleCloud.jpg", "href": "https://cloud.google.com/"},
          {"name": "Oracle", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/09/Oracle.jpg", "href": "https://www.oracle.com/java/"}
        ]
      }, {
        "type": "Gold", "typeColor": "#ffd700",
        "sponsorships": [
          { "name": "IO Digital", "href": "https://www.iodigital.com/nl", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/io.jpg" },
          { "name": "Smals", "href": "https://www.smals.be/nl", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/smalict.jpg" },
          { "name": "DXC", "href": "https://dxc.com/us/en", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/dxctechnology.jpg" },
          { "name": "Red Hat", "href": "https://www.redhat.com/en", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/RedHat.jpg" },
          { "name": "Sonarsource", "href": "https://www.sonarsource.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/05/sonar.jpg" },
          { "name": "Splunk", "href": "http://www.splunk.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/06/splunk-2023.jpg" },
          { "name": "VMWare Tanzu", "href": "https://tanzu.vmware.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/07/VMWare.jpg" },
          { "name": "Gitlab", "href": "https://gitlab.com/", "logoUrl": "https://devoxx.be/wp-content/uploads/2023/08/GitLab.jpg" }
        ]
      }, ....
    ]
    ....
  }

List of Sponsors for your events, grouped by levels.

Cursor_and_Firebase_Emulator_Suite

Event Features configuration

All these properties are intended to provide feature flags for your event.

/features/favoritesEnabled [*]

  "features": {
    ...
    "favoritesEnabled": true,
    ...
  }

Allows to enable favorites button (and stats) on your event talks.
Note that by enable this feature, you also enable "Favorites" Event's tab.
Not sure if this really makes sense to NOT enable this feature.

Favorites_feature_flag Favorites_on_talk_details

/features/roomsDisplayed [*]

  "features": {
    ...
    "roomsDisplayed": true,
    ...
  }

Show (or hide) room on Schedule.
A lot of conferences organize their timeslots without allocating talks to rooms because they need attendees (favourites) votes to allocate most favorited talks on largest rooms.

This feature flag allows to configure this.

Room_hidden_on_schedule_screen Rooms_on_talk_details Room_hidden_on_favorites_screen Room_displayed_on_schedule Rooms_displayed_on_talk_details Rooms_displayed_on_favorites_screen

/features/remindMeOnceVideosAreAvailableEnabled [*]

  "features": {
    ...
    "remindMeOnceVideosAreAvailableEnabled": true,
    ...
  }

Enable (or disable) "watch later" feature.
This feature allows attendees to mark talks as "to be watched later", for instance when they favourited multiple talk on the same timeslot.

Enabling this feature will have multiple impacts:

  • A "watch button" will be displayed on schedule page.
    In case Feedbacks are enabled (through /features/ratings/* flags), there will no longer be any "quick feedback" button on Schedule Page ("watch later" and "quick feedback" are mutually exclusive on schedule talks).
    This is done on purpose, because we want to avoid "quick feedbacks" direct link given that we want to ask for "watch later" talks when clicking on timeslot-level feedback button.
  • When clicking on timeslot-level feedback button, a new step will be introduced prior to rating talk.
    This step will allow to mark other favourited talks as "to watch later".
Watch_later_disabled_on_schedule Watch_later_enabled_on_schedule_page

TODO: Add watch later personal screens once implemented

/features/showInfosTab

  "features": {
    ...
    "showInfosTab": true,
    ...
  }

Allows to show "Infos" tab on Selected Event screen.
This screen shows various information about the event (venue infos, sponsors, social medias etc.)

Infos_tab

/features/showRoomCapacityIndicator

  "features": {
    ...
    "showRoomCapacityIndicator": true,
    ...
  }

Allows to show Room Capacity indicator on top of incoming talks.

Room_Capacity_indicator Cursor_and_Voxxrin

This info is only displayed on the next talk (depending on the running time) for each room where the info has been brought up.

It is displayed until a time cut-off of 85% of the talk duration.

If I take the above example of keynotes lasting from 9h to 9h25, then at 9h21 (85%) the indicator will disappear from keynote talks. Any Room Capacity indication raised by event room managers after 9h21 will then concern room's next talk.

As long as no information is received from event room managers (after 9.21am), no indicator is displayed for the talk concerned.

Some Endpoint APIs allow conference organizers to call Voxxrin in order to share room capacity indications, which is then reflected in realtime on the mobile app.

/features/hideLanguages [*]

  "features": {
    ...
    "hideLanguages": [ "FR" ],
    ...
  }

This field contains a list of /supportedTalkLanguages' id field.

This allows to hide some of the languages in the UI: this is particularly useful when you have 2 languages during your event, and you consider one of them as the "(implicitely) default language" (you should hide it in the UI)

Note that when you have a single /supportedTalkLanguages entry, language will be hidden by default (no need to configure this /features/hideLanguages field)

Showing_EN_lang_on_event

/features/topRatedTalks

  "features": {
    ...
    "topRatedTalks": {
      "minimumNumberOfRatingsToBeConsidered": 10,
      "minimumAverageScoreToBeConsidered": 3,
      "numberOfDailyTopTalksConsidered": 10
    },
    ...
  },

This flag allows to define how top rated talks will be considered on your event:

  • Talk with less than features/minimumNumberOfRatingsToBeConsidered ratings will be ignored in top rated talks listing
  • Talk with average score lower than features/minimumAverageScoreToBeConsidered will be ignored in top rated talks listing
  • Only features/numberOfDailyTopTalksConsidered daily talks will be considered

/features/ratings/* [*]

This section allows to configure Feedbacks ratings in Voxxrin.

Feedbacks will be enabled if and only if at least one ratings child node has its enabled flag set to true.

Enabling feedbacks implies following changes in the UI:

  • Adds a per-timeslot button on Schedule tab, only on PAST timeslots
  • Adds a Floating Action Button on Schedule tab, allowing to chose a PAST timeslot to rate
  • Adds a quick feedback per-talk button on Schedule tab, only if /features/remindMeOnceVideosAreAvailableEnabled flag is false
  • Adds a Feedbacks tab on your Event's page

A showcase of the Feedback feature can be seen on the Showcase page in the wiki.

/features/ratings/scale [*]

  "features": {
    ...
    "ratings": {
      "scale": {
        "enabled": true,
        "icon": "star",
        "labels": [
          "There are rooms for improvement",
          "Talk was OK",
          "Good talk",
          "Great talk",
          "Amazing talk"
        ]
      },
      ...
    },
    ...

This feature allows to configure linear rating on your event, allowing to rate a talk from 1 to X (X being deduced from a number of choices).

No_linear_scale_entered_yet Linear_scale_entered

/features/ratings/bingo [*]

  "features": {
    ...
    "ratings": {
      ...
      "bingo": {
        "enabled": true,
        "isPublic": false,
        "choices": [
          { "id": "1", "label": "Difficult to understand" },
          { "id": "2", "label": "Too fast" },
          { "id": "3", "label": "Not enough demos/samples" },
          { "id": "4", "label": "Complicated" },
          { "id": "5", "label": "Too slow" },
          { "id": "33", "label": "Learned something new" },
          { "id": "56", "label": "This was fun!" },
          { "id": "68", "label": "Very interesting" },
          { "id": "85", "label": "Awesome content" },
          { "id": "90", "label": "Really enjoyed this" },
          { "id": "95", "label": "Amazing speaker" },
          { "id": "100", "label": "A new Devoxx Rock Star is born" },
          { "id": "105", "label": "Venkat in the making" }
        ]
      },
      ...
    },
    ...

This feature allows to configure bingo rating on your event.
Bingo shows a listing of pre-defined choices used to qualify the talk (multiple choices can be selected by attendees).

isPublic flag tells if bingo feedbacks will be public or not (by default, it won't). Public bingo means that other attendees' ratings are visible, while Private bingo means only speaker will see attendees' ratings.

_Currently, public bingo are not implemented (yet). _

bingo_multi_choices

/features/ratings/free-text

  "features": {
    ...
    "ratings": {
      ...
      "free-text": {
        "enabled": false,
        "maxLength": 400
      },
      ...
    },
    ...

Allows to enable free-text comments for a talk.

For moderation issues, only authenticated users will be able to submit such free text comments.

At the moment, this feature is not implemented (yet).

TODO: Add screenshot once feature will be implemented

/features/ratings/custom-scale

  "features": {
    ...
    "ratings": {
      ...
      "custom-scale": {
        "enabled": false,
        "choices": [
          { "id": "happy", "icon": "happy" },
          { "id": "sad", "icon": "sad" }
        ]
      },
      ...
    },
    ...

Allows to configure custom rating scale, which is icon-based.
This kind of rating is less interesting than regular scale (linear scaling) as we won't be able to calculate average scores based on it.

custom_scale_example

Event global theme customization

This section allows to customize the graphical ambience of your event.

/logoUrl [*]

  ...
  "logoUrl": "https://devoxx.be/wp-content/uploads/2019/05/DEVOXX-Name-Only-TransparentBackground.png",
  ...

Logo representing your event.
Please, if you use some kind of transparency, use a logo having a good contrast with /theming/colors/primaryHex and /theming/colors/primaryContrastHex.

Logo_on_event_list Logo_on_infos_page Logo_on_talk_feedbacks_page

/backgroundUrl [*]

  ...
  "backgroundUrl": "https://devoxx.be/wp-content/uploads/2023/06/time-min.jpg",
  ...

Background used to capture the atmosphere of your event.

This background is used at different places in the app.

Background_on_pinned_event Background_on_event_header Background_url_on_My_talks_with_feedbacks

/theming/colors [*]

  ...
  "theming": {
    "colors": {
      "primaryHex": "#F78125",
      "primaryContrastHex": "#FFFFFF",
      "secondaryHex": "#3880FF",
      "secondaryContrastHex": "#FFFFFF",
      "tertiaryHex": "#202020",
      "tertiaryContrastHex": "#FFFFFF"
    }
  },
  ...

This theming colors allows to configure the global atmosphere of your event in Voxxrin.

Please, try to pick 3 different colors for the primary / secondary / tertiary, and avoid picking white colors here also.

Primary color will be used at various different places, including most of the icons:

Primary_on_schedule_page

Secondary color will be used as some place, mainly used on Feedbacks:

Secondary_color_on_schedule_page

Tertiary color will be used more rarely:

Tertiary_color_on_schedule_page Tertiary_on_feedback_page

Event Schedule master data & theming

This section allows to configure Schedule master data & theming.

/supportedTalkLanguages [*]

  ...
  "supportedTalkLanguages": [
    { "id": "en", "themeColor": "#165CE3", "label": "EN" }
  ],
  ...

List of supported talk language on the event, and potential color attached to these languages.

Language_color_used

/rooms [*]

  ...
  "rooms": [
    { "id": "1160", "title": "Room 4" },
    { "id": "1159", "title": "Room 5" },
    { "id": "1158", "title": "Room 6" },
    { "id": "1156", "title": "Room 8" },
    { "id": "1155", "title": "Room 9" },
    { "id": "1157", "title": "Room 7" },
    { "id": "1151", "title": "BOF 1"  },
    { "id": "1152", "title": "BOF 2"  },
    { "id": "1161", "title": "Room 3" },
    { "id": "1154", "title": "Room 10"}
  ],
  ...

List of rooms alongside their (displayed) label.
Note that no color is assigned to rooms as we don't need it.

Rooms

/talkTracks [*]

  ...
  "talkTracks": [
    { "id": "1251", "themeColor": "#AFA003", "title": "Architecture" },
    { "id": "1252", "themeColor": "#1246B0", "title": "Data & AI" },
    { "id": "1254", "themeColor": "#BF5C57", "title": "Build & Deploy" },
    { "id": "1701", "themeColor": "#7B4A4A", "title": "Development Practices" },
    { "id": "2754", "themeColor": "#C30000", "title": "Java" },
    { "id": "2758", "themeColor": "#4D9E5E", "title": "Mind the Geek" },
    { "id": "2760", "themeColor": "#B076BA", "title": "UI & UX" },
    { "id": "1256", "themeColor": "#6441CA", "title": "Server Side Java" },
    { "id": "1255", "themeColor": "#147D73", "title": "Security" },
    { "id": "1253", "themeColor": "#9F0E3A", "title": "People & Culture" }
  ],
  ...

List of supported talk tracks on the event, and colors attached to these tracks.
Please try to use dedicated colors for each track.

Talk_tracks

/talkFormats [*]

  ...
  "talkFormats": [
    { "id": "951", "title": "Conference", "duration": "PT50m", "themeColor": "#165CE3" },
    { "id": "959", "title": "Deep Dive", "duration": "PT180m", "themeColor": "#165CE3" },
    { "id": "968", "title": "Hands-on Lab", "duration": "PT180m", "themeColor": "#EA7872" },
    { "id": "957", "title": "Tools-in-Action", "duration": "PT30m", "themeColor": "#935A59" },
    { "id": "984", "title": "Hands-on Lab", "duration": "PT120m", "themeColor": "#3EDDEF" },
    { "id": "954", "title": "BOF", "duration": "PT60m", "themeColor": "#69BE72" },
    { "id": "68051", "title": "Keynote", "duration": "PT45m", "themeColor": "#165CE3" },
    { "id": "955", "title": "Keynote", "duration": "PT20m", "themeColor": "#EA7872" },
    { "id": "1005", "title": "Lunch talk", "duration": "PT45m", "themeColor": "#3EDDEF" },
    { "id": "956", "title": "Closing keynote", "duration": "PT45m", "themeColor": "#3EDDEF" }
  ]
  ...

List of supported talk formats on the event, and potential color attached to these formats.

If you have similar formats (like, Keynote with different durations in example above), please use similar colors for these.

Talk_formats