hackertours/README.md
Stefan Bethke 79eac5c7c5
All checks were successful
/ build (pull_request) Successful in 23s
/ cleanup-staging (pull_request) Successful in 3s
Make sure missing data is handled gracefully
2026-10-16 18:58:29 +02:00

48 lines
No EOL
1.9 KiB
Markdown

# Hackertours Web Site
## Complete the checkout
We need the submodule for the theme, so update/clone the submodules:
```shell
git submodule update --init --recursive
```
## Run in dev mode
```shell
hugo server --buildFuture --buildDrafts
```
Then open http://localhost:1313
## Shortcode: Language badge
Use the `lang` shortcode to mark whether a tour is in German, English or bilingual. It renders a small superscript badge next to the text, with details when hovered over or parsed by a screenreader.
- German: `{{< lang de >}}`
- English: `{{< lang en >}}`
- Bilingual: `{{< lang deen >}}`
## Shortcode: Tour schedule
The tour overview of an event (`content/*/<event>/_index.md`) shows the schedule with `{{< schedule >}}`. It reads `data/schedule/<event>.yaml`, which is shared by both languages:
```yaml
days:
- day: 1
date: "2025-12-27"
tours:
- { time: "11:30", tour: xfel, lang: deen }
- { time: "12:00", tour: city-walk, lang: de }
```
- `tour` is the slug of the tour page in the event section. The card shows that page's title, without the event prefix, and links to it.
- `lang` is `de`, `en` or `deen`, or a list of these. It renders the same badge as the `lang` shortcode.
- `time` is `HH:MM` with a leading zero (`09:30`). Tours are sorted by time, so their order in the file doesn't matter.
Wide screens get one column per day on an hour grid, with tours that start at the same time side by side. The first column shows the hour wherever the first day has no tour in it. On narrow screens a day picker shows one day at a time, starting with today's day during the event.
For a different event than the page's section, pass its name: `{{< schedule 39c3 >}}`.
Without a data file, or without any tours in it, the shortcode renders nothing and the build logs a warning. To silence it, for example for an upcoming event, add `warning-schedule-empty` to `ignoreLogs` in `hugo.yaml`.