This repository hosts the source code for the official QGIS Project website:
π https://qgis.orgHere you'll find everything you need to build, develop, and contribute to the QGIS website.
This repository is only for the main QGIS website (qgis.org).
If you are looking for the source code or want to contribute to QGIS subdomain websites, please visit their respective repositories below.
Each subdomain has its own codebase and contribution process:
- plugins.qgis.org (GitHub: QGIS-Plugins-Website) β QGIS Plugins Repository
- hub.qgis.org (GitHub: QGIS-Hub-Website) β QGIS Resources Hub
- feed.qgis.org (GitHub: qgis-feed) β QGIS Feed Manager
- planet.qgis.org (GitHub: QGIS-Planet-Website) β QGIS Planet Blog Aggregator
- members.qgis.org (GitHub: QGIS-Members-Website) β QGIS Sustaining Members Portal
- certification.qgis.org (GitHub: QGIS-Certification-Website) β QGIS Certification Programme Platform
- changelog.qgis.org (GitHub: QGIS-Changelog-Website) β QGIS Changelog Manager
- uc2025.qgis.org (GitHub: QGIS-UC-Website) β QGIS User Conference Website
Table of Contents
This project is licensed under the MIT License. See the LICENSE file for details.
QGIS-Website/
βββ πΌοΈ assets/ # Mainly used to store the schedule.csv file
βββ βοΈ config/ # Hugo configuration files
βββ π content/ # Markdown content files (pages, posts)
βββ ποΈ data/ # Data files (YAML, JSON, TOML) for site variables
βββ π docs/ # Project documentation
βββ πΌοΈ img/ # Images files used by this README
βββ π§© layouts/ # Hugo templates and partials
βββ π§ͺ playwright/ # Playwright end-to-end test scripts
βββ π¦ public/ # Generated site output (after `hugo` build)
βββ ποΈ resources/ # Hugo-generated resources (e.g., minified assets)
βββ π οΈ scripts/ # Utility scripts for development/maintenance/harvesting
βββ π» source/ # Mainly used to store the qugsneews.atom file
βββ π static/ # Static files served as-is (e.g., favicon, robots.txt)
βββ π¨ themes/ # Hugo themes
βββ βοΈ config.toml # Main Hugo configuration file
βββ π€ CONTRIBUTING.md # Contribution guidelines
βββ π fetch_feeds.py* # Script to get sustaining members and other feeds to update our web site
βββ π LICENSE # Project license
βββ βοΈ Makefile # Build/Deployment automation commands
βββ π README.md # Project overview and instructions
βββ π REQUIREMENTS.txt # Python dependencies (pip)
βββ π shell.nix # Nix shell environment definition
βββ π‘ vscode.sh* # VSCode helper script for Nix shell environment
We are fine with using LLM's and Generative Machine Learning to act as general assistants, but the following three guidelines should be followed:
- Repeatability: Although we understand that repeatability is not possible generally, whenever you are verbatim using LLM or Generative Machine Learning outputs in this project, you must also provide the prompt that you used to generate the resource.
- Declaration: Sharing the prompt above is implicit declaration that a machine learning assistant was used. If it is not obvious that a piece of work was generated, include the robot (π€) icon next to a code snippet or text snippet.
- Validation: Outputs generated by a virtual assistant should always be validated by a human and you, as contributor, take ultimate responsibility for the correct functionality of any code and the correct expression in any text or media you submit to this project.
The scripts/
folder contains utility scripts to assist with data loading, and project maintenance. Below is a summary of each script:
Script Name | Description |
---|---|
fetch_feeds.py |
Simple script to get sustaining members and other feeds and update our web site with them |
vscode.sh |
Launch VSCode with all settings and extensions needed to productively work on this project |
scripts/get_commit_hash.sh |
Get the current commit hash of this repository and write it in config/commit.toml for the website version. |
scripts/changelog_harvest.py |
Will create/update a visual-changelogs at content/project/visual-changelogs based on the data at data/conf.json. |
scripts/hub_maps_harvest.py |
Harvest maps data from https://maps.qgis.org |
scripts/resize_image.py |
Contains utilities to optimize images (resize, transform to webp, check validity). |
scripts/sanitize_commercial_supports.py |
Checks each supporter's URL at https://qgis.org/resources/support/commercial-support/ and removes each invalid ones. |
scripts/update_donors_from_file.py |
It will update the json file (data/donors.json ) ordered alphabetically by the first name based on an input file. |
scripts/update_donors.py |
It will update the json file (data/donors.json ) ordered alphabetically by the first name based on Stripe donations. |
scripts/update-schedule.py |
It will update data/conf.json and content/schedule.ics |
βοΈ Note: Run each script from the project root. Some scripts may require environment variables or configurationβsee comments within each script for usage details.
Please refer to the Nix section in CONTRIBUTING.md.
We welcome contributions! Please read the CONTRIBUTING.md for guidelines on how to get started.
Have questions or feedback? Feel free to open an issue or submit a Pull Request!
- Tim Sutton β Original author and lead maintainer of the QGIS Website project
- Kontur Team β Responsible for the design and development of the current website version
- Lova Andriarimalala β Core developer and ongoing maintainer
- QGIS Contributors β See the full list of amazing contributors who have helped make this website possible.
Made with β€οΈ by Tim Sutton (@timlinux), Lova Andriarimalala (@Xpirix) and QGIS Contributors.