-
Notifications
You must be signed in to change notification settings - Fork 23
Architecture Overview
GitHub Action edited this page Jun 28, 2025
·
2 revisions
This document provides a detailed overview of the Scrum Guide Expansion Pack's technical -Architecture-Overview and design decisions.
- Hugo - Static site generator (Extended v0.146.0+ required for new template system)
- Bootstrap 5 - CSS framework for responsive design
- Font Awesome - Icon library
- Azure Static Web Apps - Hosting platform
- Git - Version control
- GitHub Actions - CI/CD pipeline
- PowerShell - Scripting and automation
- Markdown - Content authoring
graph TB
A[Content Authors] --> B[Markdown Files]
B --> C[Hugo Build Process]
C --> D[Static HTML/CSS/JS]
D --> E[Azure Static Web Apps]
F[Translators] --> G[i18n YAML Files]
G --> C
H[Developers] --> I[Layouts & Templates]
I --> C
J[GitHub Actions] --> C
E --> K[CDN Distribution]
K --> L[End Users]
The main Hugo site directory containing all source files:
site/
├── content/ # Markdown content files
│ ├── _index.md # Homepage content
│ ├── creators/ # Creator profiles
│ ├── download/ # Download pages
│ └── guide/ # Main guide content
├── layouts/ # HTML templates (Hugo v0.146.0+ structure)
│ ├── baseof.html # Base template (moved from _default/)
│ ├── home.html # Homepage template (renamed from index.html)
│ ├── single.html # Single page template (moved from _default/)
│ ├── list.html # List template (moved from _default/)
│ ├── guide/ # Guide-specific layouts
│ ├── creators/ # Creator-specific layouts
│ ├── _partials/ # Reusable components (renamed from partials/)
│ ├── _shortcodes/ # Custom shortcodes (renamed from shortcodes/)
│ └── _markup/ # Render hooks for markdown elements
├── static/ # Static assets
│ ├── css/ # Custom stylesheets
│ ├── images/ # Images and graphics
│ └── pdf/ # PDF files
├── data/ # Structured data files
├── i18n/ # Translation files
└── hugo.yaml # Hugo -Configuration-Reference
Comprehensive project documentation for contributors and maintainers.
Auto-generated static site files (not committed to version control in production).
-
hugo.yaml
- Main Hugo -Configuration-Reference -
hugo.*.yaml
- Environment-specific -Configuration-References -
staticwebapp.config.*.json
- Azure Static Web Apps -Configuration-References
The site supports multiple languages using Hugo's built-in i18n features:
-
English (
en
) - Default language -
German (
de
) - Deutsch -
Spanish (
es
) - Español -
French (
fr
) - Français
- Guide Content - Main Scrum expansion content
- Creator Profiles - Information about authors
- Download Pages - PDF and resource downloads
- Static Pages - About, legal, etc.
Hugo's new template system (v0.146.0+) follows a streamlined lookup order that considers multiple identifiers:
-
Custom Layout - Defined in front matter (
layout: myCustomLayout
) -
Page Kinds -
home
,section
,taxonomy
,term
,page
-
Standard Layouts -
list
,single
,all
-
Output Format -
html
,rss
,json
-
Language -
en
,de
,es
, etc. - Page Path - Content-specific paths for targeted templates
-
No
_default/
folder: All default templates moved tolayouts/
root -
Renamed folders:
partials/
→_partials/
,shortcodes/
→_shortcodes/
-
New
_markup/
folder: For render hooks (links, images, code blocks) -
Homepage template:
index.html
→home.html
-
Base templates:
list-baseof.html
→baseof.list.html
For a guide page (/guide/my-guide/
), Hugo looks for templates in this order:
-
layouts/guide/my-guide/single.html
- Most specific -
layouts/guide/single.html
- Content type specific -
layouts/single.html
- Default single template -
layouts/baseof.html
- Base template
-
baseof.html
- Base template with common HTML structure -
home.html
- Homepage template (renamed fromindex.html
) -
single.html
- Individual page template -
list.html
- List/index page template -
all.html
- New catch-all template for any page type
cd site
hugo server -D --bind 0.0.0.0 --port 1313
cd site
hugo --minify --environment production
-
Local (
hugo.local.yaml
) - -Development-Guide settings -
Preview (
hugo.preview.yaml
) - Preview/staging settings -
Canary (
hugo.canary.yaml
) - Canary release settings -
Production (
hugo.yaml
) - Production settings
The site is deployed using Azure Static Web Apps with:
- Automatic builds from GitHub Actions
- Custom domains support
- SSL certificates automatically managed
- CDN distribution globally
- Environment-specific -Deployment-Guides
- Production - Main live site
- Preview - Staging environment
- Canary - Early access features
- Static generation - No server-side processing
- Minification - CSS, JS, and HTML minification
- Image optimization - Responsive images and WebP support
- CDN delivery - Global content distribution
- Caching headers - Aggressive caching for static assets
- Incremental builds during -Development-Guide
- Asset bundling and minification
- Template caching for faster rebuilds
- Static files only - No server-side vulnerabilities
- HTTPS only - All traffic encrypted
- CSP headers - Content Security Policy implementation
- Repository access - GitHub permissions
- -Deployment-Guide access - Azure permissions
- Review process - Pull request requirements
- Google Analytics - Traffic and user behavior
- Azure Application Insights - Performance monitoring
- GitHub Actions - Build and -Deployment-Guide status
- Page views per language
- Download statistics for PDFs
- User engagement metrics
- Create new i18n file in
i18n/[lang].yaml
- Add language -Configuration-Reference in
hugo.yaml
- Create translated content in
content/
directory - Update navigation templates
- Create content archetype in
archetypes/
- Design specific layout in
layouts/
- Configure front matter requirements
- Update navigation and menus
- Shortcodes for reusable content components
- Partial templates for shared functionality
- Data files for structured content
- Custom CSS/JS for enhanced features
- Content growth - Efficient content organization
- Language expansion - Additional Translation-Guide
- Feature additions - New content types and functionality
- Hugo updates - Regular framework updates
- Dependency management - Bootstrap and other libraries
- Security patches - Keeping dependencies current
🔙 Back to: Documentation Home
➡️ Next: -Development-Guide Guide