This is a Jekyll template based on Bootstrap 4 which can be used to make a simple website for a one-day conference or workshop containing:
- program / schedule
- talk descriptions
- speaker descriptions
- room descriptions
All components such as talks, speakers or rooms are represented as collection of files. The schedule is given is defined via a simple structure stored in a yaml
file.
There is no need for databases and once generated the website consists only of static files. The use of JavaScript is optional and is used only for the navigation bar dropdown menus and the program table's sticky header/first column.
- Install Bundler, a Ruby package manager.
- Verify you have Git LFS installed (used to store documents).
- Clone this repository and browse into it:
cd jekyll-conference/
- Run bundler to install all dependencies such as Jekyll:
bundle install
- Build the site with Jekyll:
bundle exec jekyll build
. The generated content in the_site/
directory (will be overwritten at each new build) - Instead of building you can also serve it locally with automated regeneration (does not contain changes on the site's configuration) with:
bundle exec jekyll serve
As a general rule all files ending with .md
are supposed to be modified. Reference between the files is done via their name
property.
The repository in its current state serves as an example.
The site's configuration is given by the _config.yaml
file. There one can edit the following arguments:
- the site's
title
, - a short, general description of the site's content in
description
(optional) and a longer one inlong_description
(optional), - the site's
url
andbaseurl
, navigation
defines the navigational bar's content and is an array containing the ordered links. Each link consists of- the text to show (
name
), - a relative (
relative_url
) or absolute link address (absolute_url
) or another list of links whereby the current link will be transformed to a dropdown menu (menu
), and - optionally if it is disabled (
disabled
).
- the text to show (
main_links
defines links shown on the main landing page in form of buttons. Each link consists of- the text to show (
name
), - a relative (
relative_url
) or absolute link address (absolute_url
), and - optionally if it is disabled (
disabled: true
).
- the text to show (
info_bars
defines optional dismissible boxes below the navigation bar. Consists of- a
title
(optional), - a
color
, given as a (Bootstrap) class name, - the option to show the box only on the main page (
main_only: true
) or the other pages (pages_only: true
), and - a
text
to be shown.
- a
- the conference
main_categories
which is used to sort talks, each main category consists of aname
and acolor
given as a (Bootstrap) class name time_steps
sets the grid space for the program table in minutes, andshow_firstname
indicates if the speakers' first names are generally shown or abbreviated.show_alltimes
indicates if the timestamps for all rows in the program grid should be shown.
The congress' content is based on the configuration in the configuration file, the schedule in the program.yml
file and the talks, speakers and rooms descriptions in the corresponding files and folders.
There exists a Python file in the root, create_entries.py
, which can be used to export content from a CSV table and generate the different files based on it automatically.
The one-day schedule of the conference is defined in the [data/program.yml
] file. It consists of an array of rooms each consisting of a
room
name (must correspond to one of the room identifier), and- an array of
talks
which also can be empty[]
.
The order of the room in the file defines the order of the rooms on the website (program and room listings).
Each talk in the array consists of
- a
name
(must correspond to one of the talk identifier), - a starting time
time_start
given asH:M
(strftime
formated), and - an end time
time_end
.
The array should (manually) be ordered by time. Currently talks can only take place on the same day and multi-day conferences are not supported.
Each talk is represented by file in the _talks/
directory. It must begin with valid YAML Front Matter containing
- the talk's
name
(used as identifier), - one or more existing
speakers
name(s), and - optionally one or more
categories
of which one should be a main category as defined in the site's configuration - optionally a list of
links
whereby each link element must contain aname
and either an absolute linkhref
or afile
name (of a file stored under/documents/
) - optionally
hide: true
if the talk and its description should not be shown
Each speaker is represented by file in the _speakers/
directory. It must begin with valid YAML Front Matter containing
- the speaker's
name
(used as identifier), as well as its first_name
,last_name
, and- optionally a list of
links
whereby each link element must contain aname
and either an absolute linkhref
or afile
name (of a file stored under/documents/
) - optionally
hide: true
if the speaker and its description should not be shown.
Each room is represented by file in the _location/
directory (no ending s
). It must begin with valid YAML Front Matter containing
- the room's
name
, and - optionally
hide: true
if the room and its description should not be shown.
Furthermore, one can edit location/index.md
to add additional information about the venue's location.
The map shown on the main location page is based on the JavaScript Library Leaflet and can be customized by editing the assets/js/map.js
file.
Additional static pages can easily be added as page_name/index.html
. In the repository a about
and contact
page are given as example.
The design is based on the Bootstrap 4. Custom Bootstrap variables such as designed with Bootstrap Magic for individual themes can be added in the main SASS stylesheet.
Upon site building Jekyll takes care of prefixing and building Bootstrap from source including some minor modifications into a single stylesheet. While the Bootstrap stylsheet is build from source, the (static) Bootstrap JavaScript files are included in this repository and have their proper licensing terms.
This project is licensed under the MIT License. You can view LICENSE.md for more details.
This project re-distributes other open-source tools and libraries. You can view REDISTRIBUTED.md for third party licenses.