Skip to main content
Site Architecture

Pages & Routes

Complete inventory of all 184 pages and routes in Arcturus-Prime organized by category, rendering mode, and purpose

February 23, 2026

Pages & Routes

Arcturus-Prime has approximately 184 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

CategoryCountRenderingAuth Required
Public pages17Static (SSG)No
Blog & journal7Static (SSG)No
Docs & learning6Static (SSG)No
Command center10Static (SSG)Admin
Playgrounds12Static (SSG)No (some gated)
Admin46Mostly SSRAdmin
User portal8SSRMember+
Auth2SSRNo
Total~184165 SSG / 19 SSR

Public Pages (17) — Static

These pages are prerendered at build time and served from the CDN. No authentication, no server logic, no cold starts.

RoutePurpose
/Homepage — hero section, featured projects, recent posts
/aboutAbout page — mission statement with three pillars (Build It Wrong First, Span The Distance, Ship The Lab), stat rings, capabilities grid, operator bio, tech stack
/contactContact form (form submission goes to SSR API endpoint)
/homelabHomelab overview — hardware inventory, network topology, photos
/architectureSystem architecture diagrams and explanations
/servicesServices page — infrastructure consulting, hiring, workshops with three service lanes (Build, Hire, Learn)
/communityCommunity hub — Discord, GitHub, blog links, build-in-public pillars, recent posts
/costCost analysis — platform cost vs AWS/GCP/Azure/Hetzner comparison, Cloudflare free tier breakdown, CTA for services
/workflowsDevelopment and deployment workflows
/projectsProject gallery — build swarm, ArgoOS, command center, etc.
/resourcesCurated links, tools, and references
/askPublic Q&A / knowledge base search
/statusPublic status page — service health overview
/telemetryTelemetry and analytics dashboard (anonymized)
/404Custom 404 page with navigation suggestions
/rss.xmlRSS 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.

RoutePurposeCollection
/blogBlog index — paginated post listing with category filtersposts
/blog/[slug]Individual blog postposts
/journalJournal index — engineering log entriesjournal
/journal/[...slug]Individual journal entry (supports nested paths)journal
/posts/[slug]Legacy post URL (redirects or renders directly)posts
/categories/[category]Posts filtered by categoryposts
/tagsTag cloud and tag-filtered post listingsposts

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.

RoutePurposeCollection
/docsDocumentation hub — section index with navigationdocs
/docs/[...slug]Individual doc page (supports nested sections)docs
/learnLearning tracks index — difficulty levels, prerequisiteslearn
/learn/[...slug]Individual learning modulelearn
/configurationsConfiguration file indexconfigurations
/configurations/[slug]Individual configuration referenceconfigurations

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 (10) — Static (SSG)

The command center provides infrastructure monitoring dashboards. All pages are statically generated with client-side data fetching for live updates.

RoutePurpose
/commandCommand center landing — dual-galaxy overview dashboard
/command/buildBuild swarm monitoring — drone status, package progress, queue
/command/control-centerMission control — tabs for system overview, deployment, monitoring
/command/infrastructureInfrastructure status — servers, VMs, containers across both sites
/command/mediaMedia management — Plex, storage, transcoding status
/command/networkNetwork topology — Tailscale mesh, subnets, latency
/command/personalPersonal tools — Obsidian vaults, git repos, backup status
/command/portalPortal dashboard — quick links, service shortcuts
/command/servicesService health — uptime, response times, status checks
/command/spaceSpace 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.42.0.210:8094).

RoutePurpose
/playgroundPlayground hub — available labs, challenge tracking, session management
/playground/apkg-tutorialapkg package manager tutorial — guided walkthrough
/playground/argo-osArgo OS lab — full QEMU VM with VNC + terminal access
/playground/build-swarmBuild swarm simulation — orchestrator and drone concepts
/playground/containersContainer lab — ephemeral LXC with terminal access
/playground/iacInfrastructure as Code lab — Ansible/Terraform exercises
/playground/infrastructureInfrastructure monitoring simulation
/playground/monitoringMonitoring and observability lab
/playground/networkingNetworking lab — subnets, routing, firewall rules
/playground/ollamaOllama AI lab — local model inference exercises
/playground/ragRAG pipeline lab — embeddings, retrieval, generation
/playground/terminalTerminal lab — command-line challenges in ephemeral LXC

Playgrounds are statically rendered shells. The LabLauncher component provisions ephemeral containers/VMs on Proxmox Izar-Host 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 Izar-Host and Proxmox Tarn-Host.

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

RouteRenderingPurpose
/adminSSRAdmin dashboard — content stats, feature flags, quick actions
/admin/editSSRContent editor — create/edit posts, journal entries, docs
/admin/reviewSSRContent review queue — needs review / needs work items
/admin/pipelineSSRContent pipeline — draft → review → publish workflow
/admin/content-labSSRAI content lab — generation, coaching, voice checking
/admin/dashboard-profilesSSRDashboard profile designer — widget layouts, themes
/admin/settingsSSRAdmin settings and configuration
/admin/auth-bounceSSRCloudflare Access authentication bounce handler

AI & Argonaut

RouteRenderingPurpose
/admin/chatSSRMulti-model streaming AI chat
/admin/workbenchSSRMulti-conversation AI workspace
/admin/ragSSRRAG knowledge base administration
/admin/argonautSSRArgonaut AI agent dashboard
/admin/argonaut/chatSSRArgonaut chat interface
/admin/argonaut/profileSSRArgonaut personality profile editor
/admin/argonaut/profilesSSRArgonaut profile management
/admin/argonaut/tasksSSRArgonaut task queue
/admin/argonaut/writerSSRArgonaut AI writer

Infrastructure

RouteRenderingPurpose
/admin/homelabSSRService registry and credential manager
/admin/serversSSRServer monitoring — CPU, memory, storage, network
/admin/proxmoxSSGProxmox VM/CT browser with VNC and terminal
/admin/proxmox/consoleSSGEmbedded Proxmox console (noVNC/xterm.js)
/admin/mm-terminalSSRMeridian-Host Unraid terminal (xterm.js over WebSocket)
/admin/cloudflareSSRCloudflare status — deployments, tunnels, analytics
/admin/probe-studioSSRInfrastructure probe management

Build Swarm & Jobs

RouteRenderingPurpose
/admin/buildSSRBuild pipeline — trigger builds, view logs, artifacts
/admin/build-swarmSSRBuild fleet management — drone status, queue
/admin/build-swarm-public-v3SSGPublic-facing swarm status (v3 API)
/admin/swarmSSGSwarm overview dashboard
/admin/jobsSSRJob auto-apply engine management

Security & Users

RouteRenderingPurpose
/admin/securitySSRSecurity scanning and audit
/admin/usersSSRUser CRUD, role assignment, feature gating

Pentest Suite

RouteRenderingPurpose
/admin/pentestSSRPentest dashboard — multi-node targeting
/admin/pentest/consoleSSRVNC/terminal console for Kali VM
/admin/pentest/reconSSRReconnaissance scanner
/admin/pentest/exploitSSRExploit tools
/admin/pentest/webappSSRWeb application scanner
/admin/pentest/reportsSSRScan report viewer
/admin/pentest/targetsSSRTarget management

OpenClaw

RouteRenderingPurpose
/admin/openclawSSROpenClaw AI gateway dashboard
/admin/openclaw/configSSROpenClaw configuration viewer
/admin/openclaw/cronSSROpenClaw cron job management
/admin/openclaw/skillsSSROpenClaw skills registry

Sandbox & Playground Admin

RouteRenderingPurpose
/admin/sandboxSSRSandbox hub — demo experience management
/admin/sandbox/demoSSGDemo mode experience
/admin/sandbox/workbenchSSGSandbox workbench
/admin/playgroundSSRPlayground 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.

RoutePurpose
/userUser portal landing — profile, quick actions
/user/dashboardUnified all-in-one homelab dashboard (site matrix, service cockpit, container panel)
/user/accessCurated access command surface for VPN/public/LAN route selection
/user/settingsUser preferences — theme, notifications, display name
/user/editorContent editor — write posts/journal entries
/user/workbenchDevelopment workbench — file browser, terminal
/user/sitesSite management — domain status, deployment info
/user/emailUser email/communications surface
/user/bogie/dashboardbogie alias route redirecting to /user/dashboard

Auth (2) — SSR

Authentication flow pages.

RoutePurpose
/auth/loginLogin handler — processes CF Access callback, sets session
/auth/logoutLogout 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 Arcturus-Prime.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 NeedsRendering ModeWhy
Static content onlySSG (prerender = true)Fastest, cheapest, cached at edge
User authenticationSSRMust read request headers at runtime
Live data from APIsSSRMust fetch current data per request
Environment variablesSSROnly available at runtime
KV or D1 accessSSRCloudflare bindings only available at runtime
Content from collectionsSSGCollections are resolved at build time
Dynamic query paramsSSRMust read URL at runtime
routespagesnavigationarchitecture