diff --git a/.gitignore b/.gitignore index 008e122..03d9a0a 100644 --- a/.gitignore +++ b/.gitignore @@ -202,3 +202,8 @@ $RECYCLE.BIN/ *.lnk # End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,hugo,pycharm+all,vim,direnv + +### CCCB ### +# The calendar the site reads its events from is published next to the site and +# only downloaded here to look at the site locally, see the README. +/static/calendars/ diff --git a/README.md b/README.md index 5f72bd0..c14ea17 100644 --- a/README.md +++ b/README.md @@ -29,20 +29,31 @@ This is the website of the CCCB. Every change you make on the project will be reflected in your browser as long as `hugo serve` is running. -The *"Nächste Veranstaltungen"* table on the home page is generated by post-processing in `./build.sh`, not by Hugo, so -it is **not** visible under `hugo serve`. To preview the fully built site (including the home-page calendar), or to -ready the site for upload, run: +The *"Nächste Veranstaltungen"* table on the home page and the calendar under `/verein/calendar/` are rendered in the +browser by `static/js/upcoming.js` and `assets/js/calendar.js`. Both fetch `/calendars/all.ics`, which is **not** +generated by Hugo and is not part of this repo — it is published separately on the web server. Without it both tables +stay empty. Download the published calendar into `static/`, which Hugo serves under the same path, and they work +locally, under `hugo serve` as well as in a built site: + +```shell +mkdir -p static/calendars +curl -o static/calendars/all.ics https://berlin.ccc.de/calendars/all.ics +``` + +The file is only there to look at the site, it is not checked in. Download it again whenever you want the events that +are currently published. + +Hugo does generate an `.ics` feed per section (for example `/veranstaltungen/index.ics`) from the `dtstart`, `dtend` +and `rrule` front matter of the pages in `content/veranstaltungen/`, using the `.ics` templates under `layouts/`. + +To build the site for upload, run: ```shell ./build.sh -python3 -m http.server -d public 1313 ``` -`build.sh` replaces the `CALENDAR` placeholder in `index.html` with the upcoming-events table. It depends on Python -with the `icalendar`, `python-dateutil`, and `pytz` packages, plus a `de_DE.UTF-8` locale (used to format weekday -names). Inside `nix develop` these are provided automatically. - -To build with *nix*: `nix build '.?submodules=1#production-content'` +This deletes `public/` and runs `hugo` with the parameters from `.hugo-params`. To build with *nix* instead: +`nix build '.?submodules=1#production-content'` ## Making a change @@ -59,8 +70,7 @@ To build with *nix*: `nix build '.?submodules=1#production-content'` ## Nix stuff -- After entering the shell with `nix develop`, hugo is available and `hugo serve` should work -- Python including required packages will be available, so the `build.sh` should work without a venv +- After entering the shell with `nix develop`, hugo is available and `hugo serve` and `./build.sh` should work - You can build the staging and production builds with `nix build .#staging-content` and `nix build .#production-content` - Do not update the nixpkgs branch - 25.05 contains a newer hugo version that is incompatible with the theme (last