The official website of Open Knowledge Belgium — an umbrella organisation (vzw/asbl) for the many open-knowledge and open-data initiatives in Belgium.
It's a fast, static site built with Astro. All content lives as plain Markdown in this repo, so it's easy to read, review, and contribute to — no CMS or login required.
We welcome contributions from the community — fixing a typo, adding a story, updating an activity, or improving the site itself.
The easiest way: edit a Markdown file straight on GitHub (use the ✏️ button on any file) and open a pull request. For anything bigger, fork the repo and run it locally (below).
Common edits:
| I want to… | Edit |
|---|---|
| Publish a story / blog post | add a file in src/content/stories/ |
| Add or update an activity / project | a file in src/content/activities/ |
| Change the Home / About / Team pages | src/content/pages/ |
| Update navigation, footer, contact | src/config/site.ts |
See Editing content for the field details. Every pull request gets a preview build, and once merged it deploys to openknowledge.be automatically.
Requires Node.js 22+ and pnpm.
pnpm install
pnpm dev # http://localhost:4321
pnpm build # production build → dist/
pnpm preview # preview the production build| Framework | Astro — static output |
| Interactivity & animation | React islands + motion (scroll reveals, hover) |
| Styling | Tailwind CSS + the Relume design system + OKBE brand tokens |
| Content | Markdown via Astro content collections |
| Hosting | GitHub Pages (auto-deploy on push to main) |
src/
├── components/
│ ├── react/ # interactive/animated islands (Hero, Navbar, grids, newsletter…)
│ └── ui/ # design-system primitives (button, card, input)
├── content/
│ ├── stories/ # blog posts (Markdown)
│ ├── activities/ # projects & communities (Markdown)
│ └── pages/ # Home / About / Team (Markdown frontmatter)
├── config/site.ts # nav, footer, socials, contact — one place
├── layouts/ # page shell + SEO/head
├── lib/ # content helpers
├── pages/ # routes
└── styles/ # global styles + article typography
public/uploads/ # images, referenced with absolute /uploads/… paths
All content is plain Markdown with a small YAML frontmatter block at the top.
A story — src/content/stories/<yyyymmdd-slug>.md
---
title: Your headline
date: 2026-01-31
author: Your name
tags: [open data, event]
excerpt: One-sentence summary (optional).
---
Your post, in Markdown. Images go in public/uploads/stories/<slug>/ and are
referenced like /uploads/stories/<slug>/photo.jpgAn activity — src/content/activities/<slug>.md
status: activelists it under “Active now”;status: past(the default) files it under “Past activities”. When nothing is active, the site invites people to start something.- Other fields:
name,logo,tags,to(website),catchphrase,featured_image,contact_info,members.
Home / About / Team — src/content/pages/{home,about,team}.md.
- Deep purple
#301948and electric purple#641bff - Headings in Work Sans, body in Chivo
The signup form posts to an n8n automation
(automation.openknowledge.be) that stores subscribers. The endpoint lives in
src/config/site.ts.
Code is released under the MIT License. Site content is © Open Knowledge Belgium, shared under CC BY 4.0 unless noted otherwise.