Guide for managing speakers, sessions, sponsors, and content for the DevOpsDays Zurich website.
/data/*.json- Structured data (speakers, sessions, sponsors, team)/content/- Markdown content pages/static/images/- Images and logos
-
Add image:
/static/images/speakers/firstname-lastname.webp -
Update data: Edit
/data/speakers.json{ "id": "firstname-lastname", "name": "First Last", "image": "/images/speakers/firstname-lastname.webp", "page": "/speakers/firstname-lastname/" } -
Create detail page:
/content/speakers/firstname-lastname.md--- title: "First Last" description: "First Last - DevOpsDays Zurich 2025" --- Brief bio and background. ## About Detailed biography... ## Expertise - Area 1 - Area 2 ## Social Links - LinkedIn: [username](https://linkedin.com/in/username) - Twitter: [@handle](https://twitter.com/handle)
-
Update data: Edit
/data/sessions.json{ "id": "talks/session-slug", "title": "Session Title", "type": "talk", "day": "2025-06-15", "time": "14:00 - 14:45", "room": "Main Hall", "speakers": ["firstname-lastname"] }Types:
keynote,talk,ignite,workshop,other -
Create detail page:
/content/sessions/talks/session-slug.md--- title: "Session Title" description: "Session description" type: "session" sessionId: "talks/session-slug" --- Session overview. ## Abstract Detailed description... ## What You'll Learn - Learning objective 1 - Learning objective 2 ## Who Should Attend Target audience...
-
Add logo:
/static/images/sponsors/company-name.webp- Use transparent background
- Minimum width: 400px
- WebP format preferred
-
Update data: Edit
/data/sponsors.json{ "id": "company-name", "name": "Company Name", "level": "gold", "logo": "/images/sponsors/company-name.webp", "website": "https://company.com", "description": "Gold Sponsor", "featured": true }Levels:
platinum,gold,silver,bronze,event,community,partner -
Regenerate banner (local only):
npm run generate:banner
Edit /data/team.json:
{
"id": "member-name",
"name": "First Last",
"role": "Organizer",
"bio": "Brief bio...",
"image": "/images/team/member-name.webp",
"email": "email@example.com",
"social": {
"twitter": "https://twitter.com/handle",
"linkedin": "https://linkedin.com/in/username"
}
}Roles: Organizer, Volunteer, Program Committee
Edit /data/events.json:
{
"year": 2025,
"date": "2025-06-15",
"endDate": "2025-06-16",
"status": "current",
"venue": "Zรผrich HB",
"city": "Zรผrich",
"attendees": 300,
"theme": "Building Resilient Systems"
}Status: upcoming, current, past
Content pages are in /content/. Edit markdown files directly:
---
title: "Page Title"
description: "SEO description"
---
# Main Heading
Content in standard Markdown format...Control site sections in /config.yaml:
params:
features:
show_program: true # Program page visibility
show_tickets: true # Tickets page and CTA buttons
show_cfp: false # Call for Papers button
show_speakers: true # Speakers page visibilityCommon scenarios:
- Before CFP opens:
show_cfp: false - Before schedule ready:
show_program: false - After sold out:
show_tickets: false
- Location:
/static/images/speakers/ - Format: WebP, JPEG, or PNG
- Naming:
firstname-lastname.webp - Size: 400x400px min, square ratio
- Quality: Professional headshot
- Location:
/static/images/sponsors/ - Format: WebP or PNG (transparent)
- Naming:
company-name.webp - Size: 400px width min
- Quality: High-resolution
- Location:
/static/images/team/ - Format: WebP, JPEG, or PNG
- Naming:
firstname-lastname.webp - Size: 400x400px min, square ratio
The main branch is protected. All changes require Pull Requests.
- Navigate to file โ Click pencil icon
- Make changes
- Select "Create a new branch for this commit"
- Describe changes โ "Propose changes"
- Create Pull Request
# Create branch
git checkout -b update-speakers
# Make changes, then commit
git add .
git commit -m "Add speaker: Jane Doe"
# Push and create PR
git push origin update-speakersThen create PR on GitHub.
# Clone repository
git clone https://github.com/dod-zh/web.git
cd web
# Start local preview
hugo server -D- Every PR gets automatic preview URL on Cloudflare Pages
- Preview URL:
https://preview-pr-{number}.devopsdays-ch.pages.dev - Check PR comments for link
- Updates on each commit
- PR merged to
mainโ deploys automatically to Cloudflare Pages - Live at https://devopsdays.ch in ~2-3 minutes
- Update CFP URL in
config.yaml - Set
show_cfp: true - Update event dates in
data/events.json
- Set
show_cfp: false - Review submitted sessions
- Add speakers to
data/speakers.json - Add sessions to
data/sessions.json - Create speaker pages in
content/speakers/ - Create session pages in
content/sessions/ - Set
show_program: trueandshow_speakers: true
- Update ticket URL
- Set
show_tickets: true
- Add logos to
static/images/sponsors/ - Update
data/sponsors.json - Verify banner generates correctly
- Update status to
pastindata/events.json - Add photos/videos
- Archive recordings
| File | Purpose |
|---|---|
data/speakers.json |
Speaker listings |
data/sessions.json |
Conference schedule |
data/sponsors.json |
Sponsor information |
data/team.json |
Team members |
data/events.json |
Event history |
content/speakers/ |
Speaker bio pages |
content/sessions/ |
Session detail pages |
content/event/ |
Event pages |
config.yaml |
Site configuration |
Q: Do I need coding knowledge?
A: No. Edit JSON and Markdown files directly on GitHub.
Q: JSON vs Markdown files?
A: JSON = structured data lists. Markdown = long-form content.
Q: How long until changes go live?
A: ~2-3 minutes after PR merge to main.
Q: Can I preview changes?
A: Yes. Every PR gets automatic preview URL on Cloudflare Pages.
Q: What if I make a mistake?
A: All changes tracked in Git. Easy to revert.
- Technical Setup: DEVELOPER.md
- Feature Flags: docs/FEATURE_FLAGS.md
- Issues: https://github.com/dod-zh/web/issues
- Email: organizer@devopsdays.ch