www/README.md
Hauke Mehrtens d135a72247 README: describe the calendar as it is built today
`build.sh` no longer post-processes anything: since the switch to ICS files it
just deletes `public/` and runs `hugo`. The `CALENDAR` placeholder, the Python
dependency on `icalendar`, `python-dateutil` and `pytz`, and the `de_DE.UTF-8`
locale requirement are all gone, and nothing in `packages.nix`, `devShells.nix`
or `flake.nix` pulls in Python any more. Drop those claims.

Describe instead where the two calendar views actually come from: the
"Nächste Veranstaltungen" table and the calendar page are rendered in the
browser from `/calendars/all.ics`, which is published separately on the web
server and is not generated by Hugo, so both stay empty in a local build. That
also replaces the old advice to preview them via `./build.sh` plus a local HTTP
server, which no longer helps.

Mention the per-section `.ics` feeds Hugo does generate, so the ICS templates
under `layouts/` are not mistaken for the source of `all.ics`.

Fixes: c28f04c6e8 ("switch to ics files; make calendars work; fix some minor issues")
Assisted-by: Claude:claude-opus-5
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-22 21:03:00 +02:00

2.5 KiB

CCCB Website

This is the website of the CCCB.

CCCB logo

Getting started

  1. Get Hugo: https://gohugo.io/getting-started/installing

  2. Clone this repo (--recursive is needed to check out submodules)

    git clone --recursive https://git.berlin.ccc.de/cccb-website-team/www.git cccb-website
    
  3. Switch directory

    cd cccb-website
    
  4. Run hugo webserver

    hugo serve
    
  5. Point your browser to: http://localhost:1313/

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 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. Locally those two tables therefore stay empty; check them on the staging site instead.

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:

./build.sh

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

  1. Use your local dev setup (see Getting started) or via the Forgejo editor.
  2. Make your change in staging branch.
  3. Commit (and push) your change.
  4. GitHub Actions is running the release workflow.
  5. Create a merge request to merge changes from staging to production branch. Ask somebody to check merge request or if small change, merge yourself.
  6. GitHub Actions is running the release workflow.
    • If successfull, check Website if change is correct.
  7. Profit!

Nix stuff

  • 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 checked June 2025)

Made with ❤️ and Hugo.