Securing the Realm website - An 8-bit castle-themed journey through cybersecurity, Azure, and AI.
Securing the Realm transforms complex cybersecurity and AI topics into epic adventures. Through engaging storytelling and technical demonstrations, we explore Azure innovation, Microsoft AI, and responsible technology practices—all framed within the enchanting world of tabletop gaming.
- Bun (package manager and runtime)
bun installStart the development server:
bun run devThe site will be available at http://localhost:4321.
Build the static site for production:
bun run buildThis will:
- Sync YouTube videos from the Securing the Realm channel to the talks collection
- Run TypeScript type checking
- Build the static site
The built site will be in the dist/ directory.
Note: To build without syncing YouTube videos (faster for testing), use:
bun run build:fastThis project uses Biome for linting and formatting.
Check for lint and format issues:
bun run lintAuto-fix lint and format issues:
bun run lint:fixFormat code only:
bun run formatThe site automatically syncs videos from the Securing the Realm YouTube channel into the talks collection. Videos are only added if they don't already exist (checked by videoUrl).
To manually sync YouTube videos:
bun run sync:youtubeThis creates JSON files in src/content/talks/ for each new video.
Preview the production build locally:
bun run preview/
├── public/ # Static assets (favicon, images)
├── src/
│ ├── assets/ # Optimized images and assets
│ │ └── pixel/ # Pixel art assets for castle theme
│ ├── components/ # Reusable Astro components
│ ├── content/ # Content collections (blog, talks, projects)
│ │ ├── blog/ # Blog posts in Markdown/MDX
│ │ ├── talks/ # Talk metadata (JSON)
│ │ ├── projects/ # Project metadata (JSON)
│ │ └── config.ts # Content collection schemas
│ ├── layouts/ # Page layouts
│ │ └── Base.astro # Base HTML structure
│ ├── pages/ # File-based routing
│ │ ├── index.astro # Home page (Castle Gate)
│ │ ├── about.astro # Mission page
│ │ ├── blog/ # Library pages
│ │ ├── talks/ # Tower pages
│ │ ├── forge/ # Projects pages
│ │ ├── newsletter/ # Newsletter signup
│ │ └── 404.astro # Custom 404 page
│ └── styles/ # Global styles and design tokens
│ ├── tokens.css # CSS custom properties (colors, spacing, etc.)
│ └── global.css # Global styles and utilities
└── astro.config.mjs # Astro configuration
Create new blog posts in src/content/blog/ as Markdown or MDX files:
---
title: "Your Post Title"
description: "Brief description"
pubDate: 2025-01-15
tags: ["tag1", "tag2"]
draft: false
---
# Your content hereTalks are stored in src/content/talks/ as JSON files. You can add talks manually or sync them from YouTube.
Manual Entry:
Create a JSON file in src/content/talks/:
{
"title": "Talk Title",
"date": "2025-01-15",
"event": "Event Name",
"videoUrl": "https://youtube.com/watch?v=...",
"slidesUrl": "https://example.com/slides",
"summary": "Talk description",
"tags": ["Azure", "AI"]
}YouTube Sync:
The build process automatically syncs videos from the Securing the Realm YouTube channel. Videos are only added if they don't already exist (checked by videoUrl), so manually created talk entries won't be overwritten.
To manually trigger a sync:
bun run sync:youtubeAdd projects to src/content/projects/ as JSON files:
{
"name": "Project Name",
"description": "Project description",
"repoUrl": "https://github.com/...",
"tech": ["TypeScript", "Azure"],
"status": "active"
}The site is automatically deployed to GitHub Pages when changes are pushed to the main branch. The workflow:
- Builds the Astro site
- Uploads the
dist/directory as an artifact - Deploys to GitHub Pages
The site is available at https://securing.quest.
The site uses a custom design system inspired by 8-bit fantasy aesthetics:
- Colors: Teal background (#0f3c46), gold accents (#d5a425), parchment (#f3e9d2)
- Typography: Press Start 2P for headings, Georgia for body text
- Theme: Castle navigation with Tower (talks), Library (blog), Forge (projects), and Arcane Scrolls (newsletter)
See src/styles/tokens.css for the complete design token system.
The site template is based on work under the Tailwind Plus license. All other code is MIT licensed. Content is released under CC BY-SA 4.0.