The Galaxy Community Hub is the community and documentation website for the Galaxy Project. The site is built with Astro and content is written in Markdown. Anyone can contribute through GitHub.
Content lives in the /content/ directory. Most pages are an index.md file inside a directory whose path becomes the URL. News pages are the exception: they route by frontmatter slug, while the filesystem layout is just for organization:
| File path | URL |
|---|---|
content/events/2025-10-20-galaxy-workshop/index.md |
galaxyproject.org/events/2025-10-20-galaxy-workshop/ |
content/news/2025/2025-01-galaxy-update/index.md |
galaxyproject.org/news/2025-01-galaxy-update/ |
The easiest way is to use the edit link on any Hub page — click the GitHub icon in the upper right corner. This takes you to the source file in GitHub where you can edit it directly and submit a pull request.
In the GitHub web interface, navigate to the appropriate directory under /content/ and click "Add file" → "Create new file". For news items, create the year bucket first, then add your-page-name/index.md inside it (for example content/news/2026/my-news-item/index.md). GitHub will create the directory for you.
Directory naming rules: Use lowercase letters, numbers, and hyphens. The directory name becomes the URL slug.
community/galaxy-south-africa/ ✓
community/GalaxySouthAfrica/ ✗ (camelCase)
events/2025-05-06-spoc_meet/ ✗ (underscore)
A CI lint check enforces these rules on every PR. If your directory name doesn't match, the check will fail and tell you what to rename.
What gets normalized automatically: If a legacy directory has camelCase or underscores, the build normalizes it — GalaxySouthAfrica becomes galaxy-south-africa, spoc_meet becomes spoc-meet. Redirects are generated from the old name.
Letters next to numbers are fine as-is: gcc2026, pag31, lkj34 are all valid and won't be split. You can also write gcc-2026 if you prefer — it's your choice. The normalizer does not insert or remove hyphens at letter-digit boundaries.
Date-prefixed directories (like 2025-10-15-my-event) keep the date prefix unchanged; only the part after the date is normalized.
Each file starts with YAML metadata between --- markers:
---
title: "My Page Title"
---Common fields:
| Field | Used in | Description |
|---|---|---|
title |
All pages | Page title (required) |
date |
News, events | Publication or start date in 'YYYY-MM-DD' format |
tease |
News, events | Short description shown in listings |
tags |
All pages | Array of tags, e.g. [training, webinar] |
autotoc |
All pages | Show table of contents (default: true) |
components |
All pages | Set to true to enable interactive components |
Events have additional fields:
| Field | Description |
|---|---|
days |
Duration in days |
continent |
Two-letter code: AF, AS, AU, EU, GL, NA, SA |
location |
Object with name: and optional url: |
contact |
Event contact information |
subsites |
Array of subsites to display on, e.g. [global, eu] |
Content is written in standard GitHub Flavored Markdown. Prefer Markdown over raw HTML whenever possible — it's easier to maintain and renders more consistently.
Place images in the same directory as your index.md and reference them with relative paths:
For images shared across pages, use /images/... paths (these are served from content/images/). Example: /images/logos/galaxy_project_logo.jpg.
For news and event posts, credit organisers and supporters in frontmatter using contributions:
---
title: "My Event"
date: 2026-03-05
contributions:
organisers:
- bgruening
- deNBI
funding:
- deNBI # organisation
- elixir-europe # organisation
- eosc-life # grant
- edctp-eu # grant
---contributions.organiserssupports contributor and organisation IDscontributions.fundingsupports organisation and grant IDs, and can include multiple funders- IDs should come from
CONTRIBUTORS.yaml,ORGANISATIONS.yaml, andGRANTS.yamlshared with the GTN, please edit them directly in the GTN repository.
This metadata is used to build recognition on the Hub, including /hall-of-fame/ listings and each profile's attributed news/event contributions.
The Hub provides interactive components like icons, video embeds, and social media embeds. To use them, add components: true to your frontmatter:
---
title: "My Page"
components: true
---
Check out this tool: <Icon name="laptop" />
<Twitter user="galaxyproject" />
<VegaEmbed spec="chart.json" />Available components: Icon, VegaEmbed, Twitter, Mastodon, VideoPlayer, Carousel, Flickr, Supporters, Contacts, MarkdownEmbed, CalendarEmbed, Insert.
Important: Files with components: true are processed as MDX, which means a few things that work in regular Markdown need different syntax:
- Use
{/* comment */}instead of<!-- comment --> - Avoid bare
<>(use<>) - Escape angle brackets before numbers like
<500(use<500)
The content:lint check will catch files where components: true is missing or unnecessary.
For previewing changes beyond what GitHub's preview offers:
git clone https://github.com/your-username/galaxy-hub.git
cd galaxy-hub
make devThis starts a dev server at http://localhost:4321 with hot reload. See astro/README.md for build, test, and lint commands.
Before opening a PR, run:
make content-lint
make validate-metadataNote: The dev server is case-insensitive for URLs but production is case-sensitive. Always use lowercase URLs.
- Fork the repository and create a branch
- Make your changes
- Submit a pull request with a description of what you changed and why
After a PR or two, maintainers will add you to the Editors group so you can commit directly.
The content of the Galaxy Hub is licensed under the Creative Commons Attribution 4.0 International License. The code is licensed under the MIT License.