Pages & Routes
Complete inventory of all 400+ pages and routes in ArgoBox organized by category, rendering mode, and purpose
Pages & Routes
ArgoBox has approximately 400+ pages split across public content, admin tools, playgrounds, API endpoints, and authenticated user features. This is the complete route inventory, organized by category with rendering mode noted for each group.
Route Summary
| Category | Count | Rendering | Auth Required |
|---|---|---|---|
| Public pages | 17 | Static (SSG) | No |
| Blog & journal | 7 | Static (SSG) | No |
| Docs & learning | 6 | Static (SSG) | No |
| Command center | 9 | Static (SSG) | Admin |
| Playgrounds | 21 | Static (SSG) | No (some gated) |
| Admin | 238 | Mostly SSR | Admin |
| User portal | 12 | SSR | Member+ |
| Auth | 2 | SSR | No |
| Total | ~400+ | Most admin/user/API pages use SSR (prerender=false); SSR count is 250+ |
Public Pages (17) -- Static
These pages are prerendered at build time and served from the CDN. No authentication, no server logic, no cold starts.
| Route | Purpose |
|---|---|
/ |
Homepage -- hero section, featured projects, recent posts |
/about |
About page -- mission statement with three pillars (Build It Wrong First, Span The Distance, Ship The Lab), stat rings, capabilities grid, operator bio, tech stack |
/contact |
Contact form (form submission goes to SSR API endpoint) |
/homelab |
Homelab overview -- hardware inventory, network topology, photos |
/architecture |
System architecture diagrams and explanations |
/services |
Services page -- infrastructure consulting, hiring, workshops with three service lanes (Build, Hire, Learn) |
/community |
Community hub -- Discord, GitHub, blog links, build-in-public pillars, recent posts |
/cost |
Cost analysis -- platform cost vs AWS/GCP/Azure/Hetzner comparison, Cloudflare free tier breakdown, CTA for services |
/workflows |
Development and deployment workflows |
/projects |
Project gallery -- build swarm, ArgoOS, command center, etc. |
/resources |
Curated links, tools, and references |
/ask |
Public Q&A / knowledge base search |
/status |
Public status page -- service health overview |
/telemetry |
Telemetry and analytics dashboard (anonymized) |
/404 |
Custom 404 page with navigation suggestions |
/rss.xml |
RSS feed for blog posts |
The contact form on /contact is a static page, but the form submission posts to /api/contact which is an SSR endpoint with rate limiting and email delivery.
Blog & Journal (7) -- Static
Content-driven pages rendered from Astro's content collections.
| Route | Purpose | Collection |
|---|---|---|
/blog |
Blog index -- paginated post listing with category filters | posts |
/blog/[slug] |
Individual blog post | posts |
/journal |
Journal index -- engineering log entries | journal |
/journal/[...slug] |
Individual journal entry (supports nested paths) | journal |
/posts/[slug] |
Legacy post URL (redirects or renders directly) | posts |
/categories/[category] |
posts | |
/tags |
posts |
The [slug] and [...slug] patterns are Astro dynamic routes. At build time, Astro generates one HTML page per content entry. The [...slug] rest parameter supports nested directory structures in the journal collection.
Content Collection Integration
Each route uses getCollection() to fetch entries and render() to convert Markdown/MDX to HTML:
---
import { getCollection } from 'astro:content';
export async function getStaticPaths() {
const posts = await getCollection('posts');
return posts.map(post => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
const { Content } = await post.render();
---
<Content />
Docs & Learning (6) -- Static
Documentation and educational content, also rendered from content collections.
| Route | Purpose | Collection |
|---|---|---|
/docs |
Documentation hub -- section index with navigation | docs |
/docs/[...slug] |
Individual doc page (supports nested sections) | docs |
/learn |
learn | |
/learn/[...slug] |
learn | |
/configurations |
Configuration file index | configurations |
/configurations/[slug] |
Individual configuration reference | configurations |
The docs collection supports deep nesting (/docs/cloudflare/tunnels, /docs/build-swarm/architecture, etc.) through the [...slug] rest parameter. The section and order frontmatter fields control how docs are grouped and sorted in the navigation sidebar.
Command Center (9) -- Static (SSG)
The command center provides infrastructure monitoring dashboards. All pages are statically generated with client-side data fetching for live updates.
| Route | Purpose |
|---|---|
/command |
Command center landing -- dual-galaxy overview dashboard |
/command/control-center |
Mission control -- tabs for system overview, deployment, monitoring |
/command/infrastructure |
Infrastructure status -- servers, VMs, containers across both sites |
/command/media |
Media management -- Plex, storage, transcoding status |
/command/network |
Network topology -- Tailscale mesh, subnets, latency |
/command/personal |
Personal tools -- Obsidian vaults, git repos, backup status |
/command/portal |
Portal dashboard -- quick links, service shortcuts |
/command/services |
Service health -- uptime, response times, status checks |
/command/space |
Space view -- visual infrastructure map with node connections |
These pages use React islands with client:load to fetch live data after the static shell renders. Data comes from /api/gateway, /api/services, and /api/command proxy endpoints.
Playgrounds (12) -- Static (SSG)
Interactive lab environments with ephemeral containers/VMs provisioned by the lab engine (10.0.0.210:8094).
| Route | Purpose |
|---|---|
/playground |
Playground hub -- available labs, challenge tracking, session management |
/playground/apkg-tutorial |
apkg package manager tutorial -- guided walkthrough |
/playground/argo-os |
Argo OS lab -- full QEMU VM with VNC + terminal access |
/playground/build-swarm |
Build swarm simulation -- orchestrator and drone concepts |
/playground/containers |
Container lab -- ephemeral LXC with terminal access |
/playground/iac |
Infrastructure as Code lab -- Ansible/Terraform exercises |
/playground/infrastructure |
Infrastructure monitoring simulation |
/playground/monitoring |
Monitoring and observability lab |
/playground/networking |
Networking lab -- subnets, routing, firewall rules |
/playground/ollama |
Ollama AI lab -- local model inference exercises |
/playground/rag |
RAG pipeline lab -- embeddings, retrieval, generation |
/playground/terminal |
Terminal lab -- command-line challenges in ephemeral LXC |
Playgrounds are statically rendered shells. The LabLauncher component provisions ephemeral containers/VMs on Proxmox IO via the lab engine, then TerminalEmbed or VNCEmbed connects to the provisioned instance. Labs run on an isolated network (vmbr99, 10.99.0.1/24) with dual-node failover between Proxmox IO and Proxmox Titan.
Admin (46) -- Mostly SSR
The admin panel is the largest route group. Most routes require the admin role and are server-rendered. A few pages (proxmox console, public swarm view, sandbox demos) are statically generated.
Core Admin
| Route | Rendering | Purpose |
|---|---|---|
/admin |
SSR | Admin dashboard -- content stats, feature flags, quick actions |
/admin/edit |
SSR | Content editor -- create/edit posts, journal entries, docs |
/admin/review |
SSR | Content review queue -- needs review / needs work items |
/admin/pipeline |
SSR | Content pipeline -- draft → review → publish workflow |
/admin/content-lab |
SSR | AI content lab -- generation, coaching, voice checking |
/admin/dashboard-profiles |
SSR | Dashboard profile designer -- widget layouts, themes |
/admin/settings |
SSR | Admin settings and configuration |
/admin/auth-bounce |
SSR | Cloudflare Access authentication bounce handler |
AI & Argonaut
| Route | Rendering | Purpose |
|---|---|---|
/admin/chat |
SSR | Multi-model streaming AI chat |
/admin/workbench |
SSR | Multi-conversation AI workspace |
/admin/rag |
SSR | RAG knowledge base administration |
/admin/argonaut |
SSR | Argonaut AI agent dashboard |
/admin/argonaut/chat |
SSR | Argonaut chat interface |
/admin/argonaut/profile |
SSR | Argonaut personality profile editor |
/admin/argonaut/profiles |
SSR | Argonaut profile management |
/admin/argonaut/tasks |
SSR | Argonaut task queue |
/admin/argonaut/writer |
SSR | Argonaut AI writer |
Infrastructure
| Route | Rendering | Purpose |
|---|---|---|
/admin/homelab |
SSR | Service registry and credential manager |
/admin/servers |
SSR | Server monitoring -- CPU, memory, storage, network |
/admin/proxmox |
SSG | Proxmox VM/CT browser with VNC and terminal |
/admin/proxmox/console |
SSG | Embedded Proxmox console (noVNC/xterm.js) |
/admin/mm-terminal |
SSR | MasaiMara Unraid terminal (xterm.js over WebSocket) |
/admin/cloudflare |
SSR | Cloudflare status -- deployments, tunnels, analytics |
/admin/probe-studio |
SSR | Infrastructure probe management |
Build Swarm & Jobs
| Route | Rendering | Purpose |
|---|---|---|
/admin/build |
SSR | Build pipeline -- trigger builds, view logs, artifacts |
/admin/build-swarm |
SSR | Build fleet management -- drone status, queue |
/admin/build-swarm-public-v3 |
SSG | Public-facing swarm status (v3 API) |
/admin/swarm |
SSG | Swarm overview dashboard |
/admin/jobs |
SSR | Job auto-apply engine management |
Security & Users
| Route | Rendering | Purpose |
|---|---|---|
/admin/security |
SSR | Security scanning and audit |
/admin/users |
SSR | User CRUD, role assignment, feature gating |
Pentest Suite
| Route | Rendering | Purpose |
|---|---|---|
/admin/pentest |
SSR | Pentest dashboard -- multi-node targeting |
/admin/pentest/console |
SSR | VNC/terminal console for Kali VM |
/admin/pentest/recon |
SSR | Reconnaissance scanner |
/admin/pentest/exploit |
SSR | Exploit tools |
/admin/pentest/webapp |
SSR | Web application scanner |
/admin/pentest/reports |
SSR | Scan report viewer |
/admin/pentest/targets |
SSR | Target management |
OpenClaw
| Route | Rendering | Purpose |
|---|---|---|
/admin/openclaw |
SSR | OpenClaw AI gateway dashboard |
/admin/openclaw/config |
SSR | OpenClaw configuration viewer |
/admin/openclaw/cron |
SSR | OpenClaw cron job management |
/admin/openclaw/skills |
SSR | OpenClaw skills registry |
Sandbox & Playground Admin
| Route | Rendering | Purpose |
|---|---|---|
/admin/sandbox |
SSR | Sandbox hub -- demo experience management |
/admin/sandbox/demo |
SSG | Demo mode experience |
/admin/sandbox/workbench |
SSG | Sandbox workbench |
/admin/playground |
SSR | Playground node switching, failover control |
Admin Navigation
The admin panel uses a module-based sidebar navigation defined in src/config/modules/*.ts (auto-discovered via import.meta.glob). Sections include Content, AI Tools, Infrastructure, Security, and Settings. The CommandPalette component (triggered by Ctrl+K) provides fuzzy search across all admin routes and actions.
User Portal (8) -- SSR
Authenticated user features available to member role and above.
| Route | Purpose |
|---|---|
/user |
User portal landing -- profile, quick actions |
/user/dashboard |
Unified all-in-one homelab dashboard (site matrix, service cockpit, container panel) |
/user/access |
Curated access command surface for VPN/public/LAN route selection |
/user/settings |
User preferences -- theme, notifications, display name |
/user/editor |
Content editor -- write posts/journal entries |
/user/workbench |
Development workbench -- file browser, terminal |
/user/sites |
Site management -- domain status, deployment info |
/user/email |
User email/communications surface |
/user/bogart/dashboard |
Bogart alias route redirecting to /user/dashboard |
Auth (2) -- SSR
Authentication flow pages.
| Route | Purpose |
|---|---|
/auth/login |
Login handler -- processes CF Access callback, sets session |
/auth/logout |
Logout handler -- clears session cookies, redirects to home |
These are thin handlers that process Cloudflare Access authentication results. The actual login UI is provided by Cloudflare Access (hosted on argobox.cloudflareaccess.com).
Route File Structure
Routes map directly to files in src/pages/:
src/pages/
├── index.astro # /
├── about.astro # /about
├── contact.astro # /contact
├── blog/
│ ├── index.astro # /blog
│ └── [slug].astro # /blog/[slug]
├── journal/
│ ├── index.astro # /journal
│ └── [...slug].astro # /journal/[...slug]
├── docs/
│ ├── index.astro # /docs
│ └── [...slug].astro # /docs/[...slug]
├── admin/
│ ├── index.astro # /admin
│ ├── posts/
│ │ ├── index.astro # /admin/posts
│ │ ├── new.astro # /admin/posts/new
│ │ └── [slug].astro # /admin/posts/[slug]
│ └── ...
├── command/
│ ├── index.astro # /command
│ └── ...
├── playground/
│ ├── index.astro # /playground
│ └── ...
├── auth/
│ ├── login.astro # /auth/login
│ └── logout.astro # /auth/logout
├── user/
│ └── ...
└── api/
└── ... # API routes (see api-endpoints.md)
Rendering Decision Guide
When adding a new page, the rendering mode is determined by what the page needs:
| Page Needs | Rendering Mode | Why |
|---|---|---|
| Static content only | SSG (prerender = true) |
Fastest, cheapest, cached at edge |
| User authentication | SSR | Must read request headers at runtime |
| Live data from APIs | SSR | Must fetch current data per request |
| Environment variables | SSR | Only available at runtime |
| KV or D1 access | SSR | Cloudflare bindings only available at runtime |
| Content from collections | SSG | Collections are resolved at build time |
| Dynamic query params | SSR | Must read URL at runtime |