devops4lib-jekyll-theme-conference 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +9 -0
  3. data/README.md +781 -0
  4. data/_includes/js/conference.js +55 -0
  5. data/_includes/js/init.js +39 -0
  6. data/_includes/js/lib/a_popper.min.js +4 -0
  7. data/_includes/js/lib/bootstrap.js +6 -0
  8. data/_includes/js/lib/jquery-3.5.1.min.js +2 -0
  9. data/_includes/js/lib/leaflet-easybutton.js +376 -0
  10. data/_includes/js/lib/leaflet-locatecontrol.js +4 -0
  11. data/_includes/js/lib/leaflet-providers.js +877 -0
  12. data/_includes/js/lib/leaflet.js +5 -0
  13. data/_includes/js/lib/syncscroll.js +140 -0
  14. data/_includes/js/live.js +779 -0
  15. data/_includes/js/map.js +43 -0
  16. data/_includes/js/modal.js +78 -0
  17. data/_includes/js/program.js +41 -0
  18. data/_includes/partials/checks.html +69 -0
  19. data/_includes/partials/footer.html +18 -0
  20. data/_includes/partials/get_day_hash.html +20 -0
  21. data/_includes/partials/get_day_time.html +21 -0
  22. data/_includes/partials/get_enable_map.html +11 -0
  23. data/_includes/partials/get_link.html +85 -0
  24. data/_includes/partials/get_link_types.html +15 -0
  25. data/_includes/partials/get_live_timestamps.html +49 -0
  26. data/_includes/partials/get_main_category.html +9 -0
  27. data/_includes/partials/get_page_description.html +23 -0
  28. data/_includes/partials/get_page_title.html +33 -0
  29. data/_includes/partials/get_room_live_href.html +8 -0
  30. data/_includes/partials/get_talk_time.html +24 -0
  31. data/_includes/partials/get_talk_timestamp.html +15 -0
  32. data/_includes/partials/get_time_pronoun.html +6 -0
  33. data/_includes/partials/header.html +67 -0
  34. data/_includes/partials/info_bar.html +38 -0
  35. data/_includes/partials/list_categories.html +4 -0
  36. data/_includes/partials/list_page_meta.html +23 -0
  37. data/_includes/partials/list_speakers.html +22 -0
  38. data/_includes/partials/list_sub_categories.html +8 -0
  39. data/_includes/partials/modal_link.html +21 -0
  40. data/_includes/partials/modal_live.html +49 -0
  41. data/_includes/partials/navbar.html +97 -0
  42. data/_includes/partials/navbar_rooms.html +36 -0
  43. data/_includes/partials/show_live_button.html +21 -0
  44. data/_includes/partials/show_room.html +5 -0
  45. data/_includes/partials/show_talk.html +5 -0
  46. data/_includes/partials/show_talk_duration.html +3 -0
  47. data/_includes/partials/show_talk_time.html +17 -0
  48. data/_layouts/config.html +78 -0
  49. data/_layouts/data.html +126 -0
  50. data/_layouts/default.html +5 -0
  51. data/_layouts/home.html +87 -0
  52. data/_layouts/location.html +25 -0
  53. data/_layouts/page.html +13 -0
  54. data/_layouts/program.html +201 -0
  55. data/_layouts/room.html +70 -0
  56. data/_layouts/speaker-overview.html +47 -0
  57. data/_layouts/speaker.html +111 -0
  58. data/_layouts/stream-overview.html +43 -0
  59. data/_layouts/talk-overview.html +112 -0
  60. data/_layouts/talk.html +123 -0
  61. data/_sass/bootstrap/_alert.scss +52 -0
  62. data/_sass/bootstrap/_badge.scss +54 -0
  63. data/_sass/bootstrap/_breadcrumb.scss +44 -0
  64. data/_sass/bootstrap/_button-group.scss +163 -0
  65. data/_sass/bootstrap/_buttons.scss +142 -0
  66. data/_sass/bootstrap/_card.scss +286 -0
  67. data/_sass/bootstrap/_carousel.scss +197 -0
  68. data/_sass/bootstrap/_close.scss +40 -0
  69. data/_sass/bootstrap/_code.scss +48 -0
  70. data/_sass/bootstrap/_custom-forms.scss +524 -0
  71. data/_sass/bootstrap/_dropdown.scss +192 -0
  72. data/_sass/bootstrap/_forms.scss +347 -0
  73. data/_sass/bootstrap/_functions.scss +144 -0
  74. data/_sass/bootstrap/_grid.scss +73 -0
  75. data/_sass/bootstrap/_images.scss +42 -0
  76. data/_sass/bootstrap/_input-group.scss +192 -0
  77. data/_sass/bootstrap/_jumbotron.scss +17 -0
  78. data/_sass/bootstrap/_list-group.scss +154 -0
  79. data/_sass/bootstrap/_media.scss +8 -0
  80. data/_sass/bootstrap/_mixins.scss +47 -0
  81. data/_sass/bootstrap/_modal.scss +240 -0
  82. data/_sass/bootstrap/_nav.scss +123 -0
  83. data/_sass/bootstrap/_navbar.scss +324 -0
  84. data/_sass/bootstrap/_pagination.scss +74 -0
  85. data/_sass/bootstrap/_popover.scss +170 -0
  86. data/_sass/bootstrap/_print.scss +141 -0
  87. data/_sass/bootstrap/_progress.scss +47 -0
  88. data/_sass/bootstrap/_reboot.scss +484 -0
  89. data/_sass/bootstrap/_root.scss +20 -0
  90. data/_sass/bootstrap/_spinners.scss +56 -0
  91. data/_sass/bootstrap/_tables.scss +185 -0
  92. data/_sass/bootstrap/_toasts.scss +46 -0
  93. data/_sass/bootstrap/_tooltip.scss +115 -0
  94. data/_sass/bootstrap/_transitions.scss +20 -0
  95. data/_sass/bootstrap/_type.scss +125 -0
  96. data/_sass/bootstrap/_utilities.scss +18 -0
  97. data/_sass/bootstrap/_variables.scss +1142 -0
  98. data/_sass/bootstrap/bootstrap-grid.scss +29 -0
  99. data/_sass/bootstrap/bootstrap-reboot.scss +12 -0
  100. data/_sass/bootstrap/bootstrap.scss +44 -0
  101. data/_sass/bootstrap/mixins/_alert.scss +13 -0
  102. data/_sass/bootstrap/mixins/_background-variant.scss +23 -0
  103. data/_sass/bootstrap/mixins/_badge.scss +17 -0
  104. data/_sass/bootstrap/mixins/_border-radius.scss +76 -0
  105. data/_sass/bootstrap/mixins/_box-shadow.scss +20 -0
  106. data/_sass/bootstrap/mixins/_breakpoints.scss +123 -0
  107. data/_sass/bootstrap/mixins/_buttons.scss +110 -0
  108. data/_sass/bootstrap/mixins/_caret.scss +62 -0
  109. data/_sass/bootstrap/mixins/_clearfix.scss +7 -0
  110. data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
  111. data/_sass/bootstrap/mixins/_float.scss +14 -0
  112. data/_sass/bootstrap/mixins/_forms.scss +178 -0
  113. data/_sass/bootstrap/mixins/_gradients.scss +45 -0
  114. data/_sass/bootstrap/mixins/_grid-framework.scss +80 -0
  115. data/_sass/bootstrap/mixins/_grid.scss +69 -0
  116. data/_sass/bootstrap/mixins/_hover.scss +37 -0
  117. data/_sass/bootstrap/mixins/_image.scss +36 -0
  118. data/_sass/bootstrap/mixins/_list-group.scss +21 -0
  119. data/_sass/bootstrap/mixins/_lists.scss +7 -0
  120. data/_sass/bootstrap/mixins/_nav-divider.scss +11 -0
  121. data/_sass/bootstrap/mixins/_pagination.scss +22 -0
  122. data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
  123. data/_sass/bootstrap/mixins/_resize.scss +6 -0
  124. data/_sass/bootstrap/mixins/_screen-reader.scss +34 -0
  125. data/_sass/bootstrap/mixins/_size.scss +7 -0
  126. data/_sass/bootstrap/mixins/_table-row.scss +39 -0
  127. data/_sass/bootstrap/mixins/_text-emphasis.scss +17 -0
  128. data/_sass/bootstrap/mixins/_text-hide.scss +11 -0
  129. data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
  130. data/_sass/bootstrap/mixins/_transition.scss +26 -0
  131. data/_sass/bootstrap/mixins/_visibility.scss +8 -0
  132. data/_sass/bootstrap/utilities/_align.scss +8 -0
  133. data/_sass/bootstrap/utilities/_background.scss +19 -0
  134. data/_sass/bootstrap/utilities/_borders.scss +75 -0
  135. data/_sass/bootstrap/utilities/_clearfix.scss +3 -0
  136. data/_sass/bootstrap/utilities/_display.scss +26 -0
  137. data/_sass/bootstrap/utilities/_embed.scss +39 -0
  138. data/_sass/bootstrap/utilities/_flex.scss +51 -0
  139. data/_sass/bootstrap/utilities/_float.scss +11 -0
  140. data/_sass/bootstrap/utilities/_interactions.scss +5 -0
  141. data/_sass/bootstrap/utilities/_overflow.scss +5 -0
  142. data/_sass/bootstrap/utilities/_position.scss +32 -0
  143. data/_sass/bootstrap/utilities/_screenreaders.scss +11 -0
  144. data/_sass/bootstrap/utilities/_shadows.scss +6 -0
  145. data/_sass/bootstrap/utilities/_sizing.scss +20 -0
  146. data/_sass/bootstrap/utilities/_spacing.scss +73 -0
  147. data/_sass/bootstrap/utilities/_stretched-link.scss +19 -0
  148. data/_sass/bootstrap/utilities/_text.scss +72 -0
  149. data/_sass/bootstrap/utilities/_visibility.scss +13 -0
  150. data/_sass/bootstrap/vendor/_rfs.scss +204 -0
  151. data/_sass/conference.scss +255 -0
  152. data/_sass/font-awesome/_animated.scss +20 -0
  153. data/_sass/font-awesome/_bordered-pulled.scss +20 -0
  154. data/_sass/font-awesome/_core.scss +21 -0
  155. data/_sass/font-awesome/_fixed-width.scss +6 -0
  156. data/_sass/font-awesome/_icons.scss +1462 -0
  157. data/_sass/font-awesome/_larger.scss +23 -0
  158. data/_sass/font-awesome/_list.scss +18 -0
  159. data/_sass/font-awesome/_mixins.scss +56 -0
  160. data/_sass/font-awesome/_rotated-flipped.scss +24 -0
  161. data/_sass/font-awesome/_screen-reader.scss +5 -0
  162. data/_sass/font-awesome/_shims.scss +2066 -0
  163. data/_sass/font-awesome/_stacked.scss +31 -0
  164. data/_sass/font-awesome/_variables.scss +1479 -0
  165. data/_sass/font-awesome/brands.scss +23 -0
  166. data/_sass/font-awesome/fontawesome.scss +16 -0
  167. data/_sass/font-awesome/regular.scss +23 -0
  168. data/_sass/font-awesome/scss/_animated.scss +20 -0
  169. data/_sass/font-awesome/scss/_bordered-pulled.scss +20 -0
  170. data/_sass/font-awesome/scss/_core.scss +21 -0
  171. data/_sass/font-awesome/scss/_fixed-width.scss +6 -0
  172. data/_sass/font-awesome/scss/_icons.scss +1441 -0
  173. data/_sass/font-awesome/scss/_larger.scss +23 -0
  174. data/_sass/font-awesome/scss/_list.scss +18 -0
  175. data/_sass/font-awesome/scss/_mixins.scss +56 -0
  176. data/_sass/font-awesome/scss/_rotated-flipped.scss +24 -0
  177. data/_sass/font-awesome/scss/_screen-reader.scss +5 -0
  178. data/_sass/font-awesome/scss/_shims.scss +2066 -0
  179. data/_sass/font-awesome/scss/_stacked.scss +31 -0
  180. data/_sass/font-awesome/scss/_variables.scss +1458 -0
  181. data/_sass/font-awesome/scss/brands.scss +23 -0
  182. data/_sass/font-awesome/scss/fontawesome.scss +16 -0
  183. data/_sass/font-awesome/scss/regular.scss +23 -0
  184. data/_sass/font-awesome/scss/solid.scss +24 -0
  185. data/_sass/font-awesome/scss/v4-shims.scss +6 -0
  186. data/_sass/font-awesome/solid.scss +24 -0
  187. data/_sass/font-awesome/v4-shims.scss +6 -0
  188. data/_sass/leaflet/leaflet-easybutton.scss +56 -0
  189. data/_sass/leaflet/leaflet-locatecontrol.scss +2 -0
  190. data/_sass/leaflet/leaflet.scss +640 -0
  191. data/assets/css/main.scss +6 -0
  192. data/assets/icons/live.svg +57 -0
  193. data/assets/js/config.json +3 -0
  194. data/assets/js/data.json +3 -0
  195. data/assets/js/main.js +4 -0
  196. data/assets/webfonts/fa-brands-400.eot +0 -0
  197. data/assets/webfonts/fa-brands-400.svg +3717 -0
  198. data/assets/webfonts/fa-brands-400.ttf +0 -0
  199. data/assets/webfonts/fa-brands-400.woff +0 -0
  200. data/assets/webfonts/fa-brands-400.woff2 +0 -0
  201. data/assets/webfonts/fa-regular-400.eot +0 -0
  202. data/assets/webfonts/fa-regular-400.svg +801 -0
  203. data/assets/webfonts/fa-regular-400.ttf +0 -0
  204. data/assets/webfonts/fa-regular-400.woff +0 -0
  205. data/assets/webfonts/fa-regular-400.woff2 +0 -0
  206. data/assets/webfonts/fa-solid-900.eot +0 -0
  207. data/assets/webfonts/fa-solid-900.svg +5028 -0
  208. data/assets/webfonts/fa-solid-900.ttf +0 -0
  209. data/assets/webfonts/fa-solid-900.woff +0 -0
  210. data/assets/webfonts/fa-solid-900.woff2 +0 -0
  211. metadata +296 -0
data/README.md ADDED
@@ -0,0 +1,781 @@
1
+ # jekyll-theme-conference
2
+
3
+ ![Screenshot](screenshot.png)
4
+
5
+ This is a responsive [Jekyll](http://jekyllrb.com) theme based on [Bootstrap 4](http://getbootstrap.com) for conferences. It contains
6
+
7
+ - multiday program / schedule,
8
+ - talk and speaker descriptions,
9
+ - map for directions,
10
+ - realtime live indications during the conference, and
11
+ - supports embedded video streaming or recordings.
12
+
13
+ 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](https://en.wikipedia.org/wiki/YAML) file. There is no need for databases and once generated the website consists only of static files. A script and workflows are available for easy import, e.g. of [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible schedules.
14
+ The design is easily customizable and is adapted for mobile uses and printing.
15
+
16
+ The theme was originally created for the yearly Winterkongress conference of the [Digital Society Switzerland](https://digitale-gesellschaft.ch/). You can see this theme in action here:
17
+
18
+ - [Demo: Winterkongress](https://digitale-gesellschaft.ch/kongress/)
19
+
20
+
21
+ ## Table of Contents
22
+
23
+ - [Installation](#installation)
24
+ * [Gem-based Method](#gem-based-method)
25
+ * [Remote Theme Method](#remote-theme-method)
26
+ - [Setup](#setup)
27
+ * [Jump Start](#jump-start)
28
+ * [Automatic Import](#automatic-import)
29
+ * [Automatic Build](#automatic-build)
30
+ - [Configuration](#configuration)
31
+ * [Theme Verification](#theme-verification)
32
+ * [Collection URLs](#collection-urls)
33
+ * [Language](#language)
34
+ * [Timezone](#timezone)
35
+ * [Navigation Bar](#navigation-bar)
36
+ * [Open Graph Link Preview](#open-graph-link-preview)
37
+ * [Main Landing Page](#main-landing-page)
38
+ * [Information Boxes](#information-boxes)
39
+ * [Live Indications & Streaming](#live-indications--streaming)
40
+ * [Map](#map)
41
+ * [Talk Settings](#talk-settings)
42
+ * [Speaker Settings](#speaker-settings)
43
+ * [Location Settings](#location-settings)
44
+ * [Program Settings](#program-settings)
45
+ - [Content](#content)
46
+ * [Schedule / Program](#schedule--program)
47
+ * [Talks](#talks)
48
+ * [Speakers](#speakers)
49
+ * [Rooms](#rooms)
50
+ * [Links](#links)
51
+ - [Overview Pages](#overview-pages)
52
+ * [Location / Room Overview](#location--room-overview)
53
+ * [Live Stream Overview](#live-stream-overview)
54
+ * [Additional Pages](#additional-pages)
55
+ - [Design](#design)
56
+ - [Development](#development)
57
+ - [License](#license)
58
+
59
+
60
+ ## Installation
61
+
62
+ There are three ways to install: As a [Gem-based theme](https://jekyllrb.com/docs/themes/#understanding-gem-based-themes), as a [remote theme](https://github.blog/2017-11-29-use-any-theme-with-github-pages/) (GitHub Pages compatible), or by cloning/forking this repository and reference to it directly.
63
+
64
+ ### Gem-based Method
65
+
66
+ With Gem-based themes, directories such as the `assets`, `_layouts`, `_includes`, and `_sass` are stored in the theme’s gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll’s build process.
67
+
68
+ This allows for easier installation and updating as you don't have to manage any of the theme files. To install:
69
+
70
+ 1. Add the following to your `Gemfile`:
71
+
72
+ ```ruby
73
+ gem "jekyll-theme-conference"
74
+ ```
75
+
76
+ 2. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command:
77
+
78
+ ```bash
79
+ bundle
80
+ ```
81
+
82
+ 3. Set the `theme` in your project's Jekyll `_config.yml` file:
83
+
84
+ ```yaml
85
+ theme: jekyll-theme-conference
86
+ ```
87
+
88
+ 4. Continue with the _Setup_ section further below to customize the theme and add some content for your conference
89
+
90
+ To update the theme run `bundle update`.
91
+
92
+ ### Remote Theme Method
93
+
94
+ Remote themes are similar to Gem-based themes, but do not require `Gemfile` changes or whitelisting making them ideal for sites hosted with GitHub Pages.
95
+
96
+ To install:
97
+
98
+ 1. Create/replace the contents of your `Gemfile` with the following:
99
+
100
+ ```ruby
101
+ source "https://rubygems.org"
102
+
103
+ gem "github-pages", group: :jekyll_plugins
104
+ ```
105
+
106
+ 2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`.
107
+
108
+ 3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command:
109
+
110
+ ```bash
111
+ bundle
112
+ ```
113
+
114
+ 4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v3.6.1"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
115
+
116
+ 5. Continue with the _Setup_ section further below to customize the theme and add some content for your conference
117
+
118
+
119
+ ## Setup
120
+
121
+ The different talks, speakers and rooms are stored as a collection of files. Each file contains a small header in form of a YAML block (called [FrontMatter](https://jekyllrb.com/docs/front-matter/)) which is used to store additional information beside a description. Their exact use and meaning is described further below in the section _Content_. Additional configuration options can be found in the section _Configuration_.
122
+
123
+ The actual schedule defining when and in which room a talk takes place is stored as a [YAML data file](https://jekyllrb.com/docs/datafiles/) under `_data/program.yml`. For further details about it see below in the section _Content_.
124
+
125
+ :warning: Please note that the generated website can be quite large containing many unnecessary whitespaces. It is recommended to minimize the generated output files before uploading them to a server (e.g. with [minify](https://github.com/tdewolff/minify)).
126
+
127
+ ### Jump Start
128
+
129
+ In order to be up and running simply use the default content of this repository as an initial base for your new website. After having setup a new Jekyll website copy the following files and folders into the website's folder:
130
+
131
+ - `_config.example.yml` -> `_config.yml`
132
+ - `_data/`
133
+ - `_rooms/`
134
+ - `_speakers/`
135
+ - `_talks/`
136
+ - `index.md`
137
+ - `location/`
138
+ - `program/`
139
+ - `speakers/`
140
+ - `talks/`
141
+
142
+ ### Automatic Import
143
+
144
+ There exists a Python file in this repository, `_tools/create_entries.py`, which can be used to import content from a [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible JSON file (e.g. from [pretalx.com](https://pretalx.com/p/about/)) or a CSV table and generate the different talk, speakers and room files automatically.
145
+
146
+ 1. Copy the files `_tools/create_entries.py` and `_tools/requirements.txt` from this repository
147
+
148
+ 2. Create a virtual environment and activate it
149
+
150
+ ```bash
151
+ python -m venv venv
152
+ source venv/bin/activate
153
+ ```
154
+
155
+ 3. Install the requirements
156
+
157
+ ```bash
158
+ pip install -r _tools/requirements.txt
159
+ ```
160
+
161
+ 4. Execute the script, e.g. to show the help type
162
+
163
+ ```bash
164
+ python _tools/create_entries.py --help
165
+ ```
166
+
167
+
168
+ ### Automatic Build
169
+
170
+ In case you do not want to install the entire Ruby/Jekyll toolchain on your machine you can make use of [GitHub Actions](https://github.com/features/actions), Github's continuous integration platform. This repository contains multiple example Github Action configuration files in the `_tools/` folder:
171
+
172
+ - `build.yml`: automatically builds and minimizes the website upon adding a new tag starting with a `v` (e.g. `v2020.01.01`). It then attaches the generated website as an archive to a release for easy downloading. Requires `purgecss.config.js` to be copied to the project's root too.
173
+ - `test.yml`: automatically tries to build the website upon a new pull request. It can thus be used as status check before merging.
174
+ - `schedule.yml`: automatically generates the schedule and content files when a new pull request contains a `schedule.json` file (see the _Automatic Import_ subsection above). Thus, it allows quick updates of the site's content from [pretalx.com](https://pretalx.com/p/about/) exports.
175
+
176
+ To get started, simply copy the desired workflow file to your repository and adapt it to your needs:
177
+
178
+ - `_tools/build.yml` -> `.github/workflows/build.yml`
179
+
180
+ Please note that the `Gemfile.lock` of your project must be adapted to include specific versions required by Github's workflow server, i.e. run `bundle lock --add-platform x86_64-linux` to add support for them.
181
+
182
+
183
+ ## Configuration
184
+
185
+ All configurations and customization for this theme are stored under the `conference` property in the `_config.yml` file. You can find an example configuration containing most of the here discussed parameters under `_config.example.yml` in this repository.
186
+
187
+ ### Theme Verification
188
+
189
+ Upon building the theme runs some basic verification to check if all necessary files and configurations are in place. If it encounters an error it shows so in adding an information bar on all your sites. You can disable this, e.g. in a production environment, by setting `show_errors` to `false` (default: `true`).
190
+
191
+ Example:
192
+
193
+ ```yaml
194
+ conference:
195
+ show_errors: false
196
+ ```
197
+
198
+ :warning: Please be sure to disable this parameter for your production system.
199
+
200
+ ### Collection URLs
201
+
202
+ The three required collections containing the files for the talks, speakers and rooms have to be specified in the `_config.yml` file. The first block declares them and sets the URL under which they will later be accessed. The second block defines the default layout for each of the collection.
203
+
204
+ ```yaml
205
+ collections:
206
+ talks:
207
+ output: true
208
+ permalink: /:collection/:title/
209
+ speakers:
210
+ output: true
211
+ permalink: /:collection/:title/
212
+ rooms:
213
+ output: true
214
+ permalink: /:collection/:title/
215
+
216
+ defaults:
217
+ - scope:
218
+ path: ""
219
+ type: talks
220
+ values:
221
+ layout: talk
222
+ - scope:
223
+ path: ""
224
+ type: speakers
225
+ values:
226
+ layout: speaker
227
+ - scope:
228
+ path: ""
229
+ type: rooms
230
+ values:
231
+ layout: room
232
+ ```
233
+
234
+ In order to change the URL of the collection, simply edit the `permalink` property and replace the `:collection` tag (which translates to `talks`, `speakers` and `rooms`) with your desired value. Please note that the talk and speaker overview pages should residue in a folder of the same name.
235
+
236
+ _Note:_ While you might want to change the URLs, the name of the three collections (`talks`, `speakers` and `rooms`) is fixed and cannot be changed.
237
+
238
+
239
+ ### Language
240
+
241
+ In order to adapt the language of the theme set the `lang` property. If you change it from its default, make sure you have copied the internationalization file from this repository to `_data/lang.yml`. Currently the following languages are included:
242
+
243
+ - English: `en` (Default)
244
+ - German: `de`
245
+ - French: `fr`
246
+ - Portuguese: `pt`
247
+
248
+ Example:
249
+
250
+ ```yaml
251
+ conference:
252
+ lang: en
253
+ ```
254
+
255
+ ### Timezone
256
+
257
+ Multiple dynamic features such as showing the current day in the program or live indications require correct timing. Define the timezone in which the conference takes place with the `tz` property set to a valid [UTC timezone offset](https://en.wikipedia.org/wiki/List_of_UTC_offsets) in the format `"+/-HH:MM"`:
258
+
259
+ Example:
260
+
261
+ ```yaml
262
+ conference:
263
+ tz: "+02:00"
264
+ ```
265
+
266
+ ### Navigation Bar
267
+
268
+ The navigation bar is located at the top and visible on every site. On the right it show the title of the website (`site.title`) followed by the links listed under the `links` property of the `navigation` property. See the _Content_ > _Links_ section below for the available properties per link.
269
+
270
+ Example:
271
+
272
+ ```yaml
273
+ conference:
274
+ navigation:
275
+ links:
276
+ - name: Program
277
+ relative_url: /program/
278
+ - live: true
279
+ - name: Previous Editions
280
+ menu:
281
+ - name: 2020 (current)
282
+ disabled: true
283
+ - name: 2019
284
+ relative_url: /2019/
285
+ ```
286
+
287
+ Optionally, a logo or link of your organization hosting the conference can be shown on the right side of the navigation bar. It is activate through the `logo` property under the `navigation` property containing
288
+
289
+ - the text to show (`name`),
290
+ - an absolute link address (`url`), and
291
+ - optionally a logo to show instead of the text (`img`), whereby the path to the image file relative to the `/assets/images/` folder has to be specified.
292
+
293
+ Example:
294
+
295
+ ```yaml
296
+ conference:
297
+ navigation:
298
+ ...
299
+ logo:
300
+ name: Magic Organisation
301
+ img: 'logo.svg' # inside /assets/images/
302
+ url: 'https://github.com'
303
+ ```
304
+
305
+ The navigation bar automatically collapses when the available space is too small (e.g. on a smaller screen). The breakpoints are given by [Bootstrap](https://getbootstrap.com/docs/4.6/layout/overview/#responsive-breakpoints). The default breakpoint is `md` (collapsing if the screen width is smaller than 992px). It can be adapted by setting the `breakpoint` property under the `navigation` property to either `sm`, `md`, `lg`, or `xl`.
306
+
307
+ ### Open Graph Link Preview
308
+
309
+ The theme automatically includes the necessary `<meta>` tags to ease link previewing when sharing links based on the [Open Graph protocol](https://ogp.me/) and [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards). These tags control how a link is presented when shared via different platform and apps. In order to disable these `<meta>` tags add the `disable: true` setting (default: `false`) to the `link_preview` property.
310
+
311
+ In order to generate a meaningful description for each of the links, the preposition for the conference title as given under the `title` property can be defined by using the `preposition` property. For example, if `title` is set to "Conference 2020" the corresponding `preposition` would be "at". The template can then use it to generate descriptions such as "Talk *at* Conference 2020".
312
+
313
+ Optionally, an image which is shown as preview for all links can be specified. For sharing via Open Graph an image ratio of 1.91:1 and an ideal size of 1200x630 pixel is recommended. For sharing via Twitter an image ratio of 1:1 and a minimal size of 600x600 pixel (better 1200x1200 pixel) is recommended. SVG image files are not supported. It is activate through the `img` property under the `link_preview` property containing an image file shown for Open Graph (`open_graph`) and on the Twitter Cards (`twitter`), whereby the path to the image file relative to the `/assets/images/` folder has to be specified.
314
+
315
+ ```yaml
316
+ title: Conference 2020
317
+ preposition: 'at'
318
+
319
+ ...
320
+
321
+ conference:
322
+ link_preview:
323
+ disable: false
324
+ img:
325
+ twitter: 'twitter_preview.png' # inside /assets/images/
326
+ open_graph: 'facebook_preview.png' # inside /assets/images/
327
+ ```
328
+
329
+ ### Main Landing Page
330
+
331
+ The main landing page is shown at the root of the website to greet new visitors. In order to show it you need to create a `index.md` file in the root of your website's folder and specify its layout as `layout: main`. The remaining customizations are specified in the `_config.yml` file.
332
+
333
+ The main page states your site's title (`site.title`) or a logo instead. The logo can be configured through the `logo` property under the `main` property containing
334
+
335
+ - a `img` property specifying the path to the image file relative to the `/assets/images/` folder.
336
+
337
+ Example:
338
+
339
+ ```yaml
340
+ conference:
341
+ main:
342
+ logo:
343
+ img: 'main_logo.png'
344
+ ```
345
+
346
+ The title/logo on the main page is followed by a description of your site (`site.description`) and the content of your `index.md` file. It ends with an optional list of links in the form of buttons. See the _Content_ > _Links_ section below for the available properties per link.
347
+
348
+ Example:
349
+
350
+ ```yaml
351
+ conference:
352
+ main:
353
+ ...
354
+ links:
355
+ - name: Program
356
+ relative_url: /program/
357
+ - name: Tickets
358
+ disabled: true
359
+ absolute_url: ''
360
+ ```
361
+
362
+ ### Information Boxes
363
+
364
+ One or multiple information banners or boxes can be shown at the top of the website just below the navigation bar. They are prominent but dismissable and can inform your visitors about recent changes. They are activate through the `info_bars` property which contains a list for each information banner to show. Each banner consists of
365
+
366
+ - a title (`title`),
367
+ - a color (`color`) following the Bootstrap color scheme (see below), possible values are:
368
+ - `primary` (your website's main color, normally blue)
369
+ - `secondary` (your website's secondary color, normally grey)
370
+ - `success` (green)
371
+ - `alert` (red)
372
+ - `warning` (yellow)
373
+ - `info` (blue)
374
+ - `light` (white)
375
+ - `dark` (dark grey)
376
+ - an additional text (`text`, markdown supported),
377
+ - the option to show it on all pages, only the main landing page (`main_only: true`), or all pages except the main landing page (`pages_only: true`).
378
+
379
+ Example:
380
+
381
+ ```yaml
382
+ conference:
383
+ info_bars:
384
+ - title: Sold Out!
385
+ color: primary
386
+ main_only: true
387
+ text: |
388
+ We're truly sorry but we are sold out.
389
+
390
+ ---
391
+
392
+ Try again next year.
393
+ ```
394
+
395
+ ### Live Indications & Streaming
396
+
397
+ In order to help users navigating the program during the congress, a _Live_ indication can be shown next to talks which are currently taking place. A small JavaScript functions keeps the site automatically up-to-date (without the need to refresh) showing the indication as soon as the talk has started and hiding it once it is over (according to the timetable indicated in the `_data/program.yml` file).
398
+
399
+ This can be further extended if some of the talks have an associated live stream: Upon clicking one of the live indications a modal will open containing the corresponding embedded live stream. The URL to the live stream has to be set via `live` property in each room (see the _Content_ > _Room_ section below). Instead of opening the modal an external link can also be used.
400
+
401
+ In order to activate these functionalities, each day in the `program.yml` file must contain a `date` property (see section _Content_ > _Schedule / Program_ below) and the `live` property has to be set in the configuration file containing
402
+
403
+ - how long a pause between two consecutive talks has to be for the live indication to pause (`stop`),
404
+ - optionally under the `streaming` property:
405
+ + if streaming should be enabled (`enable`), and if enabled
406
+ + how many minutes the stream goes active before a talk (`prepend`),
407
+ + how many minutes the stream stays active after a talk (`extend`),
408
+ + how long a pause between two consecutive talks has to be for the stream to pause (`pause`), and
409
+ + optionally an external (absolute) link to which the user will be redirected instead of opening the modal (`external`),
410
+ - optionally under the `demo` property:
411
+ + if a demonstration mode should be enabled (`enable`), whereby the JavaScript function cycles continuously through the entire program in a few minutes, and if enabled
412
+ + how long the demonstration should take (`duration`), and
413
+ + how long the pause between two demonstration cycle should be (`pause`).
414
+
415
+ ```yaml
416
+ conference:
417
+ live:
418
+ stop: 240 # in minutes
419
+ streaming:
420
+ enable: true
421
+ pause: 60 # in minutes
422
+ prepend: 5 # in minutes
423
+ extend: 5 # in minutes
424
+ demo:
425
+ enable: false
426
+ duration: 300 # in seconds
427
+ pause: 10 # in seconds
428
+ ```
429
+
430
+ ### Map
431
+
432
+ In order to help users finding your venue, an [OpenStreetMap](https://www.openstreetmap.org/) container displaying a map can be shown on any page. The map's initial position is globally defined and thus the same for all map containers. You can define the initial position of the map by setting the default zoom level `default_zoom`, the center coordinates `home_coord`, and the map provider for the tiles `map_provider`. Alternative map providers can be found [here](https://leaflet-extras.github.io/leaflet-providers/preview/).
433
+ The map contains small control buttons to zoom in and out, center the map back to the initial position, and show the visitors current location (has to be manually activated and granted by the visitor).
434
+
435
+ The map can be added to any page by setting `map: true` in its Front Matter or on the location main page by setting `conference.location.map: true` (see _Location Settings_ section below).
436
+
437
+ ```yaml
438
+ conference:
439
+ map:
440
+ default_zoom: 17
441
+ home_coord: 47.37808, 8.53935
442
+ map_provider: "OpenStreetMap.Mapnik"
443
+ ```
444
+
445
+ ### Talk Settings
446
+
447
+ Each talk can have one or multiple categories associated via FrontMatter (see the _Individual Pages: Talks_ section below for more details). Some of these categories can be elevated to so called main categories". These are used to color group the talks across the entire website, particularly in the program. In order to do so add the `main_categories` property under the `talks` property. It consists of a list of all main categories. Each main category consists of:
448
+
449
+ - its name (`name`, must be corresponding to the listed categories in the talk's FrontMatter), and
450
+ - a color (`color`) following the Bootstrap color scheme (see below), possible values are:
451
+ - `primary` (your website's main color, normally blue)
452
+ - `secondary` (your website's secondary color, normally grey)
453
+ - `success` (green)
454
+ - `alert` (red)
455
+ - `warning` (yellow)
456
+ - `info` (blue)
457
+ - `light` (white)
458
+ - `dark` (dark grey)
459
+
460
+ Each talk can have associated links listed at the end of its content. If these links have an icon associated (see _Content_ > _Talks_ below), they are also shown on the talk overview page (e.g. to show in the overview which talk has a video recording and which not). To disable the showing of icon links on the overview page, set the `hide_icons` property to `true` (default: `false`).
461
+
462
+ Example:
463
+
464
+ ```yaml
465
+ conference:
466
+ talks:
467
+ # Talk categories
468
+ main_categories:
469
+ - name: Cat A
470
+ color: info
471
+ - name: Cat B
472
+ color: success
473
+
474
+ # Hide icons on talk overview page
475
+ hide_icons: false
476
+ ```
477
+
478
+ ### Speaker Settings
479
+
480
+ In the program as well as the speaker's overview the speaker's first name can be abbreviated to its first letter. Of course, you also have the option to not specify a first name for each speaker in the first place. In order to shorten the first name add the `show_firstname: true` setting (default: `false`) to the `speakers` property.
481
+
482
+ Example:
483
+
484
+ ```yaml
485
+ conference:
486
+ speakers:
487
+ show_firstname: false
488
+ ```
489
+
490
+ ### Location Settings
491
+
492
+ In case the location of your rooms is obvious (e.g. on a campus) you can decide to disable the location page and links to all the rooms. You still need to create the different rooms as files in the `_rooms/` directory, since they are needed as a reference. But there will not be any link pointing to it (effectively hiding them).
493
+ In order to hide all rooms add the `hide: true` setting (default: `false`) to the `location` property.
494
+
495
+ If your `location` overview file is not located under `/location` you can indicate an alternative path by setting the `url` property (default: `/location`) under the `location` property.
496
+
497
+ The location main page shows a navigation bar listing all the different rooms by name. Due to the quirks of Jekyll, the main page itself cannot be listed by title as defined in its Front Matter. Instead the title of the main landing page for the navigation bar is taken from the language files and defaults to "Directions". In order to change this, you can either change the language files directly (see the _Language_ section above), or you provide an alternative title by setting the `navbar_title` to the desired title under the `location` property.
498
+
499
+ The `location` layout can include a map to point to your venue by adding the `map: true` setting (default: `true`) to the `location` property. See the _Map_ section above for more information.
500
+
501
+ Example:
502
+
503
+ ```yaml
504
+ conference:
505
+ location:
506
+ hide: false
507
+ url: '/location'
508
+ navbar_title: 'Location'
509
+ map: true
510
+ ```
511
+
512
+ The map is based on the [Leaflet](https://leafletjs.com/) JavaScript library. The map object can be customized by adding additional layers with markers, text, or shapes. To do so, one has to edit the main JavaScript file, `assets/js/main.js`:
513
+
514
+ 1. Import the JavaScript library of the theme (via Jekyll `include` command)
515
+ 2. Await the initialization of the theme's object
516
+ 3. Fetch the map object and verify it is set (while the JavaScript code is imported and executed on each page, the map object will only exist on the location site)
517
+ 4. Modify the map.
518
+
519
+ Following an example is given adding a simple marker to the map:
520
+
521
+ ```javascript
522
+ ---
523
+ ---
524
+
525
+ {% include js/conference.js %}
526
+
527
+ window.conference.awaitReady().then(() => {
528
+ const map = window.conference.map.getMap();
529
+
530
+ if (typeof map !== 'undefined') {
531
+ let main_station = L.marker([47.37785, 8.54035], {
532
+ icon: L.divIcon({
533
+ className: '',
534
+ html: '<span class="fas fa-train"></span> Main Station',
535
+ iconSize: [120, 56]
536
+ })
537
+ }).addTo(map);
538
+ }
539
+ });
540
+
541
+ ```
542
+
543
+ ### Program Settings
544
+
545
+ The schedule shown as program can be slightly customized:
546
+
547
+ - The time steps shown with a new line can be adapted with the `time_steps` setting given in minute (default: `15` minutes)
548
+ - Besides the full hour the individual time steps can be hidden by setting `show_alltimes: false` (default: `true`)
549
+
550
+ If your `program` file is not located under `/program` you can indicate an alternative path by setting the `url` property (default: `/program`) under the `program` property.
551
+ Example:
552
+
553
+ ```yaml
554
+ conference:
555
+ program:
556
+ time_steps: 15 # in minutes
557
+ show_alltimes: true
558
+ ```
559
+
560
+ ## Content
561
+
562
+ The different talks, speakers and rooms are stored as a collection of file. Each file contains a small header in form of a YAML block (called [FrontMatter](https://jekyllrb.com/docs/front-matter/)) which is used to store additional information beside a description.
563
+ The actual schedule defining when and in which room a talk takes place is stored as a [YAML data file](https://jekyllrb.com/docs/datafiles/).
564
+
565
+ ### Schedule / Program
566
+
567
+ The schedule of the conference linking the talks with the rooms and indicating when each talk talks place and how long it goes is set in the `_data/program.yml` file. It contains a list of days, whereby each day contains a list of rooms, whereby each room contains a list of talks.
568
+
569
+ Each day consists of
570
+
571
+ - a list of rooms (`rooms`) in which talks are taking place on that day
572
+ - optionally, the day's `name`, e.g. the weekday
573
+ - optionally, the short form of the day's name (`abbr`), and
574
+ - optionally only if no live indications are active, a `date` in the format `YYYY-MM-DD`.
575
+
576
+ Each room consists of
577
+
578
+ - the room's `name` (must correspond to one of the room identifier), and
579
+ - a list of talks (`talks`) which also can be empty `[]`.
580
+
581
+ The order of the rooms in the list defines the order of the rooms as shown in the schedule on the program page. For the live streaming or the room overview the order of the rooms is alphabetical but can be adapted via the [main configuration file](https://jekyllrb.com/docs/collections/#sort-by-front-matter-key).
582
+
583
+ Each talk consists of
584
+
585
+ - a `name` (must correspond to one of the talk identifier),
586
+ - a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formated) or `H:M +∆` whereby ∆ is the day offset in relation to the date given for the given day, and
587
+ - an end time `time_end`.
588
+
589
+ The list of talks should (manually) be ordered by time, i.e. the first occurring talk should be listed first.
590
+
591
+ Example:
592
+
593
+ ```yaml
594
+ days:
595
+ - name: Monday
596
+ abbr: Mo
597
+ date: 2020-01-31
598
+ rooms:
599
+ - name: Room A
600
+ talks:
601
+ - name: Vim Impetus Placerat Cotidieque Ad
602
+ time_start: '12:00'
603
+ time_end: '12:45'
604
+ - name: Condimentum Vitae Sapien Pellentesque
605
+ time_start: '12:45'
606
+ time_end: '13:30'
607
+
608
+ - name: Room B
609
+ talks:
610
+ - name: Arcu Non Odio
611
+ time_start: '12:00'
612
+ time_end: '13:00'
613
+ ```
614
+
615
+ ### Talks
616
+
617
+ Each talk is represented by a file in the `_talks/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
618
+
619
+ - the talk's `name` (used as identifier),
620
+ - one or more existing `speakers` name(s),
621
+ - optionally one or more `categories` of which one should be a main category as defined in the site's configuration,
622
+ - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately and are also included on the talk overview page),
623
+ - optionally a list of `live: links` (see the _Links_ subsection below for the available properties per link) which are shown below the live stream for the given talk in form of buttons, and
624
+ - optionally `hide: true` if the talk's page should not be linked to.
625
+
626
+ ### Speakers
627
+
628
+ Each speaker is represented by a file in the `_speakers/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
629
+
630
+ - the speaker's `name` (used as identifier), as well as its
631
+ - `first_name`,
632
+ - `last_name`,
633
+ - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately), and
634
+ - optionally `hide: true` if the speaker's page should not be linked to.
635
+
636
+ If the speaker's name consists only out of one word, populate the `last_name` property and leave the `first_name` property empty. The last name is generally used for sorting the speakers.
637
+
638
+ ### Rooms
639
+
640
+ Each room is represented by a file in the `_rooms/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
641
+
642
+ - the room's `name`
643
+ - optionally `hide: true` if the room's page should not be linked to, and
644
+ - optionally under the `live` property a URL pointing to a live stream for the given room during the conference (see the section _Live Indications & Streaming_ above), either:
645
+ * as an `absolute_url`, or
646
+ * a `relative_url`.
647
+
648
+ Example:
649
+
650
+ ```yaml
651
+ ---
652
+ name: The Room
653
+ hide: false
654
+ live:
655
+ absolute_url: https://github.com
656
+ ---
657
+
658
+ ...
659
+ ```
660
+
661
+ ### Links
662
+
663
+ Links are used at different location throughout the theme: They can either be used in the configuration file (for the landing page or the navigation bar), or in talks and for speakers. A link can thereby have the following properties:
664
+
665
+ - the text to show (`name`),
666
+ - optionally if it is disabled (`disabled: true`),
667
+ - optionally if it should open in a iframe embedded in a popup-like modal in the site it self (`iframe: true`, e.g. for embedding videos thus having a default iframe ratio of 24:11)
668
+ - optionally an icon to show (indicating the name of a [FontAwesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) icon to be shown if supported at the given location)
669
+ - the actual link address:
670
+ + given relatively to the site's base address: `relative_url:`,
671
+ + given absolute: `absolute_url:`,
672
+ + pointing to a file uploaded to the `/documents` folder (for talks `/documents/slides`, for speakers `/documents/bio`): `file:`
673
+ + pointing to an external video: `video:`
674
+
675
+ Additionally, a navigation bar or main landing page link can also have the following properties:
676
+
677
+ - `menu` containing another list of links. This creates a dropdown menu of multiple sublinks. The sublinks have the same properties as regular links, or
678
+ - `live` making the link only visible during the conference and adds a live indication. The `name` property can be omitted. Using the optional `name_inactive` property shows a placeholder text while the conference is **not** live. If streaming is enabled and any URL property is omitted, a click on the link will open the streaming modal (see section _Live Indications_ above).
679
+
680
+ Using the `file:` indicator, the relative address is automatically set as well as the icon. Using the `video:` indicator, the link is automatically configured to open in an iframe with a corresponding title and the icon is set.
681
+
682
+ Example:
683
+
684
+ ```yaml
685
+ links:
686
+ - name: Slides
687
+ file: slides.pdf
688
+ - name: Recording
689
+ video: https://media.ccc.de/
690
+ ```
691
+
692
+ There exists a Python file in this repository, `_tools/import_resources.py`, which can be used to import resources such as slides and other documents from [pretalx.com](https://pretalx.com/p/about/)) via its API. It automatically downloads all files, stores them and updates the links of the talks concerned.
693
+
694
+ 1. Copy the files `_tools/import_resources.py` and `_tools/requirements.txt` from this repository
695
+
696
+ 2. Create a virtual environment and activate it
697
+
698
+ ```bash
699
+ python -m venv venv
700
+ source venv/bin/activate
701
+ ```
702
+
703
+ 3. Install the requirements
704
+
705
+ ```bash
706
+ pip install -r _tools/requirements.txt
707
+ ```
708
+
709
+ 4. Execute the script, e.g. to show the help type
710
+
711
+ ```bash
712
+ python _tools/import_resources.py --help
713
+ ```
714
+
715
+
716
+ ## Overview Pages
717
+
718
+ For each of the three collections there exist a dedicated layout giving an overview among all items of the collection. Furthermore, there exists a layout to show the program as a time schedule. Simply create an empty page and associate the corresponding layout with it:
719
+
720
+ - `talks/index.md` with `layout: talk-overview`
721
+ - `speakers/index.md` with `layout: speaker-overview`
722
+ - `location/index.md` with `layout: location`
723
+ - `program/index.md` with `layout: program`
724
+
725
+ They can be empty but should contain the `layout` property in the FrontMatter header.
726
+
727
+ If you choose a different location for the overview pages you must:
728
+
729
+ - in case of the `talks` and `speaker` overview file, adapt the URL of the two collections as described further above in the section _Collection URLs_, and
730
+ - in case of the `location` and `program` file, adapt the corresponding `url` parameter as described further above in the sections _Location Settings_ and _Program Settings_.
731
+
732
+ ### Location / Room Overview
733
+
734
+ The `location` layout can include a map container (if not disabled, see the _Location Settings_ section above) which can be customized (see the _Map_ section above).
735
+
736
+ ### Live Stream Overview
737
+
738
+ The `stream-overview` layout contains all active streams on a single page (see the section _Live Indications & Streaming_ above).
739
+
740
+ ### Additional Pages
741
+
742
+ Additional static pages can easily be added as files and linked to via navigation bar or main landing page (see above on how to).
743
+
744
+ Each of these pages can include a map at its end (e.g. to point to your venue) by adding the `map: true` setting to its Front Matter. See the _Map_ section above for more information.
745
+
746
+ ## Design
747
+
748
+ The design is based on the [Bootstrap 4](http://getbootstrap.com) and thus easily expandable. Furthermore, it makes use of the [FontAwesome Icons](fontawesome.com/) across the theme.
749
+ Custom Bootstrap themes or simple color schemes such as designed with [Bootstrap Magic](https://pikock.github.io/bootstrap-magic/) can be added in the [main](assets/css/main.scss) SASS stylesheet:
750
+
751
+ 1. Create a new file under `assets/css/main.scss` with the following content (or copy the one of this repository):
752
+
753
+ ```scss
754
+ ---
755
+ ---
756
+
757
+ $fa-font-path: '{{ site.baseurl }}/assets/webfonts';
758
+
759
+ @import 'conference';
760
+ ```
761
+
762
+ Do not skip the `$fa-font-path` variable or modify it as otherwise, the FontAwesome icons will not be able to load.
763
+
764
+ 2. Add your Bootstrap variables in front of the `@import 'conference'` line, e.g. currently the primary color is set internally to green (instead of Bootstrap's default blue): `$primary: #074 !default;`
765
+ 3. Add any additional CSS styles after it.
766
+
767
+ ## Development
768
+
769
+ If you want to modify this theme and see its changes on an existing project, simply indicate in your `Gemfile` that you want to use the local copy of the theme by adding a `path` indication after the gem instantiation:
770
+
771
+ ```ruby
772
+ group :jekyll_plugins do
773
+ gem "jekyll-theme-conference", path: "../[path to your local theme]"
774
+ end
775
+ ```
776
+
777
+ ## License
778
+
779
+ This project is licensed under the MIT License. You can view [LICENSE.md](LICENSE.md) for more details.
780
+
781
+ This project redistributes other opensource tools and libraries. You can view [REDISTRIBUTED.md](REDISTRIBUTED.md) for third party licenses.