Project Maintenance
Content, development, validation, and static hosting for DevSecHops
Project Structure
The site uses Astro with MDX content collections. The homepage, archive, episode pages, and documentation all render to static HTML. Only theme selection, archive controls, sharing, and reading indicators require browser JavaScript.
src/pages/index.astro: homepage and latest episode.src/pages/blog/[slug].astro: episode renderer.src/pages/docs/[...slug].astro: documentation renderer.src/content.config.ts: blog and documentation schemas.src/lib/mdx.ts:Card,Cards, andAvatarcomponents.data/users.ts: participant names, photos, and LinkedIn links.
Add An Episode
- Copy the most recent MDX file in
content/blogand name itep-<number>.mdx. - Update
title,description,author,date,episode,participants,tags, andvideo. - Use participant IDs from
data/users.ts. Leavevideo.youtubeIdempty until the episode video is available. - Follow the current research and editorial requirements in
AGENTS.md. - Run the checks below and open the resulting episode page.
Keep these six third-level news headings, in this order, beneath ## In the News:
- DevOps Related News
- Cyber Security
- Compliance and Government
- Industry News
- Community News
- Fun Tools and Reads
Hosts, video, tags, dates, and the section navigation are rendered from metadata. Do not duplicate them in the episode body. Preserve existing episode text and historical formats when making presentation changes.
Development And Checks
Use Bun with Node.js 22.12 or newer.
bun install --frozen-lockfile
bun run dev
bun run types:check
bun run lint
bun run build
The development server normally uses port 4321. In agent sessions, Astro 7 may start it in the background; use bunx astro dev status, bunx astro dev logs, or bunx astro dev stop. Use the URL printed by the running server rather than starting duplicates.
After UI changes, check search, topic filters, reset, sorting, theme persistence, episode sharing, video rendering, and section links. Verify desktop and narrow browser widths. Touch behavior, safe areas, and mobile keyboard behavior still need physical-device checks.
Themes And Motion
Shared CSS tokens live in src/styles/global.css. The default dark theme uses warm white and citrus on charcoal; light mode uses pale paper and olive. Fonts and icons are bundled locally. Motion uses CSS entry, hover, and page transitions, with reduced-motion alternatives.
Static Hosting
Astro builds to out/. Cloudflare Pages should use the Astro or manual preset, bun install --frozen-lockfile && bun run build, and output directory out.
Set PUBLIC_SITE_URL=https://sechops.dev for canonical links, RSS, and the sitemap. The older NEXT_PUBLIC_SITE_URL is supported as a fallback. Use BUN_VERSION=1.3.1 and a Node 22 release at least 22.12.
The optional Dockerfile serves the same static output. It retains the project’s internal base images. No Worker or application server is required.
Generated Routes
/rss.xml: all episode summaries and dates./sitemap-index.xml: generated sitemap./robots.txt: crawler and sitemap declarations./llms-full.txt: plain-text documentation export./og/docs/.../image.png: documentation social images.
Existing episode and docs URLs remain stable across the Astro migration.