Comprehensive documentation for the IOU Architecture Framework and RONL ecosystem, deployed to iou-architectuur.open-regels.nl
This repository contains the source files for the IOU Architecture documentation website. The site provides comprehensive technical documentation for:
- IOU Architecture Framework - Information architecture for IOU
- RONL Business API - Business API layer for Dutch government services
- CPSV Editor - React application for creating CPSV-AP compliant RDF/Turtle files
- Linked Data Explorer - SPARQL visualization and DMN orchestration tool
- Shared Backend - Node.js API providing TriplyDB and Operaton integration
Production: https://iou-architectuur.open-regels.nl
| Component | Technology | Version |
|---|---|---|
| Static Site Generator | MkDocs | 1.5+ |
| Theme | Material for MkDocs | 9.5+ |
| Internationalization | mkdocs-static-i18n | 1.2+ |
| Version Control | Git | - |
| Hosting | Azure Static Web Apps | - |
| CI/CD | GitHub Actions | - |
- Python 3.10 or higher
- Git
- A text editor (VS Code recommended)
# 1. Clone the repository
git clone https://git.open-regels.nl/showcases/iou-architectuur.git
cd iou-architectuur
# 2. Create virtual environment
python -m venv venv
# 3. Activate virtual environment
# Linux/macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# 4. Install dependencies
pip install -r requirements.txt
# 5. Start development server
mkdocs serveThe site will be available at: http://127.0.0.1:8000
The development server features hot reload - changes to markdown files are reflected immediately in your browser.
iou-architectuur/
βββ docs/
β βββ en/ # English documentation
β β βββ index.md # Homepage
β β βββ cpsv-editor/ # CPSV Editor docs
β β βββ linked-data-explorer/ # Linked Data Explorer docs
β β βββ ronl-business-api/ # RONL Business API docs
β β βββ shared-backend/ # Shared Backend docs
β β βββ contributing/ # Contribution guidelines
β β βββ assets/ # Images and diagrams
β β βββ stylesheets/ # Custom CSS
β βββ nl/ # Dutch documentation (translations)
β β βββ [mirrors en/ structure]
β βββ includes/
β βββ abbreviations.md # Common abbreviations
βββ mkdocs.yml # MkDocs configuration
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore rules
βββ staticwebapp.config.json # Azure SWA configuration
βββ .github/workflows/ # GitHub Actions workflows
βββ README.md # This file
- Create a markdown file in
docs/en/[section]/ - Add the page to
mkdocs.ymlnavigation:
nav:
- Section Name:
- New Page: section/new-page.md- Create Dutch translation in
docs/nl/[section]/ - Test locally with
mkdocs serve
The documentation supports:
- Admonitions: Info boxes, warnings, notes
- Code blocks: Syntax highlighting for 100+ languages
- Mermaid diagrams: Flowcharts, sequence diagrams, etc.
- Tables: GitHub-flavored markdown tables
- Cross-references: Internal links between pages
- Emoji:
:material-check:renders as β
Example:
!!! note "Important"
This is an important note.
```python
def hello_world():
print("Hello, World!")
### Images
Place images in `docs/en/assets/` and reference them:
```markdown

Images are shared between English and Dutch versions (symlinked in docs/nl/assets/).
The site supports English (primary) and Dutch (translation).
docs/
βββ en/
β βββ section/
β βββ page.md # English content
βββ nl/
βββ section/
βββ page.md # Dutch translation
- Write content in English first (
docs/en/) - Create Dutch translation (
docs/nl/) - Keep folder structure identical
- Use English filenames (e.g.,
overview.mdnotoverzicht.md)
The language switcher in the top-right corner allows users to toggle between English and Dutch versions of the same page.
mkdocs serve- Includes live reload
- Draft content visible
- Fast build times
mkdocs build- Outputs to
site/directory - Minified assets
- Optimized for deployment
- Strict mode enabled (fails on warnings)
# Build and check for warnings
mkdocs build --strict
# Serve the production build
mkdocs serve --strictEvery push to the main branch automatically deploys to production via GitHub Actions:
git add .
git commit -m "docs: update content"
git push origin mainPipeline Steps:
- β Install Python dependencies
- β Build site with MkDocs
- β Deploy to Azure Static Web Apps
- β Invalidate CDN cache
Deployment time: ~2-3 minutes
If needed, you can deploy manually using Azure CLI:
# Build locally
mkdocs build
# Deploy to Azure
az staticwebapp upload \
--name iou-architectuur \
--resource-group rg-iou-architectuur \
--source site/ \
--token $AZURE_STATIC_WEB_APPS_API_TOKEN# Check for broken links (after manual edits)
./find-broken-links.sh report
# Clean up old files
./cleanup-ronl-setup.sh- Python - Python language support
- Markdown All in One - Markdown editing tools
- markdownlint - Markdown linting
- Code Spell Checker - Spell checking for documentation
# Markdown linting
markdownlint docs/**/*.md
# Link checking
mkdocs build --strictCustom styles are defined in docs/stylesheets/extra.css and follow the NL Design System:
- Primary color:
#154273(Rijksoverheid blue) - Accent color:
#e17000(Orange) - Status colors: Green, blue, orange, red for compliance states
Theme settings in mkdocs.yml:
theme:
name: material
palette:
- scheme: default
primary: blue
accent: orangeWe welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Test locally:
mkdocs serve - Commit with clear messages:
git commit -m "docs: add XYZ section" - Push to your fork:
git push origin feature/my-feature - Open a merge request
docs: add new section about X
fix: correct typo in Y
feat: add multilingual support for Z
The site uses Azure Static Web Apps built-in analytics:
- Page views
- Unique visitors
- Geographic distribution
- Referral sources
Access analytics in the Azure Portal.
- Automatic SSL certificate via Let's Encrypt
- Forced HTTPS redirects
- Certificate auto-renewal
Configured in staticwebapp.config.json:
{
"globalHeaders": {
"Content-Security-Policy": "default-src 'self'; ...",
"X-Content-Type-Options": "nosniff",
"X-Frame-Options": "DENY"
}
}Check Python version:
python --version # Must be 3.10+Reinstall dependencies:
pip install --upgrade -r requirements.txtCheck file paths:
- Use relative paths:
../other-page.md - Check file actually exists
- Ensure proper casing (case-sensitive on Linux)
Verify image path:
ls -la docs/en/assets/your-image.pngUse correct relative path from the markdown file.
Check symlinks:
ls -la docs/nl/assets
# Should show: assets -> ../en/assets- Issue tracker: GitLab Issues
- Email: mailto:steven.gort@ictu.nl
- MkDocs: https://www.mkdocs.org/
- Material Theme: https://squidfunk.github.io/mkdocs-material/
- Azure Static Web Apps: https://docs.microsoft.com/azure/static-web-apps/
This documentation is licensed under the European Union Public License v1.2 (EUPL-1.2).
- Organization: Provincie Flevoland & RONL Initiative
- Project: IOU Architecture Framework
- Status: β Production
- Version: 0.4
- Last Updated: February 2026