This is the repository for the website of the Freifunk Community Berlin. The website is built using the static website generator Hugo.
- Clone this repository
- Load submodule with
git submodule init
andgit submodule update
- Install Hugo (>=0.120.0)
- Install Node (>=20)
- Load js dependencies with
npm install
For quick start you can use the hugo development server.
hugo server -w
First you must generate the content. You can set the environment variables HUGO_MATRIX_ACCESS_TOKEN
, HUGO_MATRIX_HOME_SERVER
and HUGO_GITHUB_ACCESS_TOKEN
to get real activity informations. Else some dummy data is used.
HUGO_GITHUB_ACCESS_TOKEN="<github_secret>" HUGO_MATRIX_ACCESS_TOKEN="<matrix_secret>" HUGO_MATRIX_HOME_SERVER="htps://matrix.org" hugo --minify -b <baseURL>
The files are generated in the public
directory and need to be served with a webserver (see deployment chapter).
├── .github/workflows # Config for pipelines to test and deploy
├── archetypes # Template for new content
├── content # Pages as markdown files
├── layouts # Reusable elements
├── static # Images and videos
└── themes # Theme, integrated via submodule
The website is deployed automatically via GitHub actions. The main branch is at berlin.freifunk.net. The other branches could be accessed via dev.berlin.freifunk.net/<BRANCH_NAME>/
.
The actions are defined in .github/workflows
and could be configured with GitHub variables and secrets. The content is served with caddy on the Freifunk servers. The configurations for the production and development webserver are in the Caddyfile as part of the ansible setup.
To display up to date information, we fetch and generate some data during the build process. These informations are available as shortcodes for the content and as partials for the templates. They are used at various places of the website.
- map-nodecount (ff-community api)
- community-lastchange (ff-community api)
- activities-mailinglist (activities section)
- activities-matrix (activities section)
- activities-github (activities section)
The events for the calendar are stored in simple markdown files. To create a new event, use the following commands:
hugo new content --kind event events/<EVENT_NAME>.de.md
hugo new content --kind event events/<EVENT_NAME>.en.md
Now you can edit the event at events/<EVENT_NAME>.de.md
and events/<EVENT_NAME>.en.md
.