jekyll-theme-conference is a responsive Jekyll theme for conference websites, providing a multi-day program grid, talk and speaker pages, room and location pages, live-streaming modals, and offline PWA support.
What is jekyll-theme-conference?
Jekyll-theme-conference is a static-site theme built on Jekyll and Bootstrap 5, created by Digital Society Switzerland for their annual Winterkongress event and published as an open-source project. It takes conference data — talks, speakers, rooms, and a YAML schedule — as Markdown files with Front Matter and renders a complete static website with no database. The output includes the program, talk and speaker overviews, a location page with an OpenStreetMap, and a configurable home landing page. It can be installed as a Ruby gem or used as a remote theme on GitHub Pages.
Key Features
- Multi-day program grid — The schedule is defined in
_data/program.ymlwith days, rooms, and talk time slots; the program page renders a responsive time-based grid with configurable row intervals (default 15 minutes). - Live indications & streaming — During the conference, talks currently running show a live badge updated by JavaScript, and clicking it opens an embedded video modal configured per room via the
liveproperty. - Progressive Web App — PWA support (disabled by default) installs the site on devices and serves it fully offline; enabling it requires creating a
manifest.jsonandsw.jsvia layout stubs plus configurable icons. - Automatic dark mode — The theme follows the user's system light/dark preference, with optional dark-mode logo variants (
img_dark) for navigation and header. - Structured data & link previews — Schema.org JSON-LD is generated for ConferenceEvent, Event, Place, and Person, and Open Graph/Twitter Card meta tags are included for sharing.
- frab/pretalx import tools — A Python script (
_tools/import_schedule.py) imports schedules from frab-compatible JSON (e.g., pretalx exports), and a second script (_tools/import_resources.py) pulls slides and documents via the pretalx API. - GitHub Actions workflows — Example workflows in
_tools/build and attach the site to releases, test pull requests, and auto-generate schedule files from aschedule.json. - Customizable styling — Three Bootstrap integration modes: pre-compiled bundle (default), a user-provided
bootstrap.min.cssfor Bootswatch themes, or full custom SCSS compiled with Jekyll's SASS compiler.
Who is it for?
- Conference organizers who need a schedule-driven website and want to publish program updates without a CMS.
- Technical event teams that already use pretalx or frab for call-for-papers and want to import schedules and resources automatically into the site.
- Open-source communities and associations hosting annual conferences, such as the Digital Society Switzerland, that want a lightweight static site they can self-host on GitHub Pages.
What can you do with jekyll-theme-conference?
- Build a full conference site in an afternoon — clone the theme, edit
_config.yml, add talk/speaker/room Markdown files, fill_data/program.yml, and deploy a static site to GitHub Pages or any web server. - Import an existing program from pretalx — run
_tools/import_schedule.pywith a frab-compatible JSON export to generate all talk, speaker, and program files automatically. - Show live streaming during the event — configure
conference.livewith stop/pause timings and per-room stream URLs, and attendees see live indicators with embedded video modals.
How does jekyll-theme-conference work?
The workflow is configuration-driven and builds entirely static output. Concretely:
- Install the theme via Gem-based or remote theme method and set
themeorremote_themein_config.yml. - Add the three required collections (
talks,speakers,rooms) with Markdown files and set theconferencesettings for navigation, language, timezone, and live features. - Create
_data/program.ymldescribing days, rooms, and talk time slots. - Optionally run the included Python import scripts to auto-generate files from a pretalx/frab export.
- Run
bundle exec jekyll buildto produce the final static site.
FAQ
How do I install jekyll-theme-conference?
Add gem "jekyll-theme-conference" to your Gemfile, run bundle, set theme: jekyll-theme-conference in _config.yml, then follow the setup guide. For GitHub Pages, use the remote theme method with remote_theme: "DigitaleGesellschaft/[email protected]" and add jekyll-include-cache to your plugins.
Does the theme work offline?
Yes, if you enable the built-in PWA support. Set conference.pwa.enable: true, add manifest.json and sw.js layout stubs, and provide 192×192 and 512×512 icons. Once installed, the navigation bar moves to the bottom and the site can be used without a connection.
Which languages are supported?
The theme ships with English, German, French, and Portuguese translations, controlled by the conference.lang property. To add another language, copy _data/lang.yml from the theme repository into your project, translate its strings, and set the lang property to your own key.
Can I use a Bootswatch or custom Bootstrap theme?
Yes. Set conference.custom_style to "bootstrap" and place your own bootstrap.min.css in assets/css/, or set it to "full" and override Bootstrap SCSS variables in _sass/bootstrap-variables.scss, then compile via Jekyll's SASS pipeline.
Does the schedule support live timings?
The program page can show a live indicator on talks currently running, driven by JavaScript and the date and time entries in _data/program.yml. The live behavior is configured under conference.live, including pause duration between talks and stream prepend/extend minutes.





