-
Notifications
You must be signed in to change notification settings - Fork 2
Event Descriptor Data Model explained
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).
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
},
"recording" {
"platform": "youtube",
"youtubeHandle": "DevoxxForever",
"ignoreVideosPublishedAfter": "2023-10-10",
"notRecordedFormatIds": ["954", "968", "984"]
}
},
"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" }
]
}
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 is a concept used for events behind a Franchise, so that Organizers' rights/access management can be shared across multiple events at once.
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.
All these properties are intended to provide high-level informations for your event, generally displayed on the Event List selector home screen.
"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.
"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)
"headingBackground": "transparent",
CSS Background used in Event's header.
Should match CSS' background
property specification.
Defaulted to linear-gradient(0deg, rgba(var(--voxxrin-event-theme-colors-primary-rgb), 0.4802) 0%, rgba(var(--voxxrin-event-theme-colors-primary-rgb), 0.98) 52.84%)
where --voxxrin-event-theme-colors-primary-rgb
corresponds to theming.primaryHex
color.
"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.
"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.
"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.
"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": {
"country": "Belgium",
"city": "Antwerp",
"address": "Groenendaallaan 394, 2030 Antwerpen",
},
Event's (geographical) location that is going to be displayed on event selector screen.
These informations will also be displayed on your Event's Infos tab.
"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.
"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).
"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.
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.
Please don't use this deprecated field, use /description instead.
Please don't use this deprecated field, use /infos/floorPlans instead.
"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.
"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.
"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.
All these properties are intended to provide feature flags for your event.
"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.
"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.
"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".
TODO: Add watch later personal screens once implemented
"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.)
"features": {
...
"showRoomCapacityIndicator": true,
...
}
Allows to show Room Capacity indicator on top of incoming talks.
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": [ "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)
"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
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": {
"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).
"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). _
"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.
Those Free text comments should be automatically moderated based on LLM moderation (see this OpenAI dedicated endpoint).
At the moment, this feature is not implemented (yet).
TODO: Add screenshot once feature will be implemented
"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.
"features": {
...
"recording" {
"platform": "youtube",
"youtubeHandle": "DevoxxForever",
"ignoreVideosPublishedAfter": "2023-10-10",
// "recordedFormatIds": [....],
"notRecordedFormatIds": ["954", "968", "984"]
// "recordedRoomIds": [....],
// "notRecordedRoomIds": [....],
"excludeTitleWordsFromMatching": ["Devoxx", "Belgium", "2023"]
}
...
},
These nodes are used to configure recording crawler, aiming at linking each talk to its recording (when one has been made) on a video platform such as Youtube.
The crawler is going to look at video titles in a recording platform, and will try to guess which talk is best matching the recording, based on the talk's context (talk title, speaker names, format duration, etc.).
platform (*): Currently, only youtube
is supported, but we might think about implementing some other crawlers in the future.
youtubeHandle (*): Should be set only if platform=youtube
. This corresponds to the Youtube handle hosting every records from your event.
ignoreVideosPublishedAfter: For crawling performance reasons, you can set a maximum date after which every published videos will be ignored. Please, note that any video published before first day of the event will de facto be ignored (for same performance reasons).
recordedFormatIds / notRecordedFormatIds: List of format ids from which the crawler will / will not try to find any recordings in the target platform.
recordedRoomIds / notRecordedRoomIds: Same than recordedFormatIds / notRecordedFormatIds
, but with room ids.
excludeTitleWordsFromMatching: List of words that will be removed from Youtube video title and/or talk title when trying to match talk and video titles. The crawler is based on string-similarity-js
library for the matching strategy. It means that if, for instance, we append something like Voxxed Days Thessaloniki 2023
on every youtube videos, and given that these words will not be present in talk titles, it will make useless noise in the title matching score. That's why we want to remove such repeating words if there are some on your videos.
This section allows to customize some formattings used for your event.
...
"formattings": {
...
"talkFormatTitle": "with-duration",
...
},
...
Tells if talk format should have its duration appended in its title (or not).
Valid values: with-duration
(default), without-duration
.
This can be useful if, for some reasons, API providing talk formats already includes the format duration in its title (it's the case, for instance, in openplanner crawler).
This will impact talk formats breakdown in various places in the app :
...
"formattings": {
...
"parseMarkdownOn": ["speaker-bio", "talk-summary"],
...
},
...
Tells Voxxrin parser that a Markdown -> HTML extra step will need to be performed during crawling of your event, so that some data are nicely displayed on the mobile app.
Valid values: speaker-bio
, talk-summary
(by default, none of them are enabled).
This section allows to customize the graphical ambience of your event.
...
"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.
...
"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.
...
"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:
Secondary color will be used as some place, mainly used on Feedbacks:
Tertiary color will be used more rarely:
This section allows to configure Schedule master data & theming.
...
"supportedTalkLanguages": [
{ "id": "en", "themeColor": "#165CE3", "label": "EN" }
],
...
List of supported talk language on the event, and potential color attached to these languages.
...
"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.
...
"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.
...
"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.