Pyronear's official website, built with Hugo (extended, v0.166 or newer).
brew install hugo # or see https://gohugo.io/installation/
hugo serverThen open http://localhost:1313. Build the static site into public/ with:
hugo --gc --minify| What | File |
|---|---|
| Home page copy (hero, intro, contact form, footer) | content/_index.<lang>.md |
| Other pages (About, How it works, Deployments, Support us, Press) | content/<page>/index.<lang>.md |
| Buttons, form labels, short UI text | i18n/<lang>.yaml |
| Key figures (home and About) | data/figures.yaml |
| Deployment map markers | data/deployments.yaml |
| Partners | data/partners.yaml |
| Supporters | data/sponsors.yaml |
| Press items | data/medias.yaml |
| Site settings, languages, social links, form endpoint | hugo.toml |
| Templates | layouts/ |
| Styles and scripts | assets/css/main.css, assets/js/ |
| Images | static/img/; photos used in a page's Markdown go next to it in content/<page>/ (the hero photo is in assets/img/) |
| Default social share image | static/img/og.jpg |
| Leaflet (map library) | static/vendor/leaflet/ |
Each page's URL is set by slug in its front matter, and its place in the menu by menus.main.weight.
Languages: French (default, served at /), English (/en/), Spanish (/es/) and Catalan (/es-ct/).
- Press items: newest first. Items with an
imageare shown as cards, the others in the list below. Addfeatured: trueto show an item on the home page (keep it to 3). Quote dates (date: "09.2025"). - Partners and supporters: newest last.
- Put photos in the page folder (for example
content/how-it-works/) and reference them by file name:. They are converted to WebP at several sizes. Strip location metadata (GPS) before adding a photo. {{< gallery >}} ... {{< /gallery >}}shows the images inside as a grid.{{< youtube id="VIDEO_ID" title="..." loading="lazy" >}}embeds a video from youtube-nocookie.com.{{< hf-space "owner/name" "https://owner-name.hf.space" >}}embeds a Hugging Face demo that only loads when opened.- A page's share image can be set with
images: [photo.jpg]in its front matter.
Each entry in data/deployments.yaml is one marker. Use approximate coordinates (department or region level), never the exact position of a station.
Add an entry to data/partners.yaml or data/sponsors.yaml with a description in every language:
- name: Example
url: https://example.org/
logo: /img/example.png
description:
fr: ...
en: ...
es: ...
es-ct: ...Prefer putting the logo in static/img/ over linking to an external image.
.github/workflows/deploy.yml builds the site on every pull request and deploys it to GitHub Pages on every push to main (or when run manually from the Actions tab). The repository's Pages source must be set to "GitHub Actions". The site URL comes from the repository's Pages settings (custom domain website.pyronear.org for now), so changing the domain needs no code change.
The form posts to a Google Apps Script (URL in hugo.toml) that stores messages in a Google Sheet and sends an email. The sheet and script are in Pyronear's Google Drive.