236 Commits

Author SHA1 Message Date
Vantz Stockwell
d4222a650c fix: Use TCP port check for NATS healthcheck
NATS image has no wget/curl. Use bash TCP check on port 4222 instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:26:41 -05:00
Vantz Stockwell
4df4a0a2cd fix: Replace NATS healthcheck — ldm signal was triggering shutdown
The old healthcheck used nats-server --signal ldm which puts NATS into
lame duck (shutdown) mode. Use the /healthz HTTP endpoint instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:20:33 -05:00
Vantz Stockwell
68f399659b fix: Remove duplicate NATS store_dir and jetstream flags from compose
Config file already sets jetstream and store_dir. Duplicate CLI flags
cause NATS to exit with error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:13:49 -05:00
Vantz Stockwell
271c9f43fa fix: Remap ports to avoid conflicts — 8087/8088/8089
Frontend nginx: 8087, API: 8088, NATS: 8089. Removed NATS
monitoring and WebSocket host ports (not needed externally).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:10:01 -05:00
Vantz Stockwell
cb6cb8fb45 fix: Resolve 75 compile errors across 13 backend files
Remove deprecated #[axum::async_trait] from 2 middleware files (native
async traits on Rust 1.88+). Fix 71 stub handlers: change return type
from ApiResult<impl IntoResponse> to ApiResult<Json<Value>> and replace
todo!() with proper JSON stub responses. Clean compile, zero errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:03:36 -05:00
Vantz Stockwell
a6db98f198 fix: Disable lettre default features to resolve native-tls conflict
lettre defaults pull in native-tls which conflicts with tokio1-rustls-tls.
Explicitly list needed features with default-features = false.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:54:48 -05:00
Vantz Stockwell
ef5ee0f844 fix: Switch Dockerfile to Debian-based Rust image for 1.88+ support
Dependencies require Rust 1.88. Alpine images lag behind. Switched
to rust:latest (Debian) for build and debian:bookworm-slim for runtime.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:51:27 -05:00
Vantz Stockwell
c20ed2d384 fix: Change nginx port to 8087 — port 80 taken by NPM
NPM handles SSL termination and proxies to 8087.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:50:30 -05:00
Vantz Stockwell
fd509eea96 fix: Bump Rust image to 1.85 for edition2024 support
Dependency moxcms requires edition2024 feature, stabilized in Rust 1.85.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:48:54 -05:00
Vantz Stockwell
2c3688c914 fix: Make Cargo.lock optional in Docker build
Cargo.lock may not exist before first build. Use wildcard copy
so Docker doesn't fail if lockfile is missing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:45:04 -05:00
Vantz Stockwell
d91ceb5b24 feat: Build Early Access page with backend email capture
Combined page: countdown timer (Feb 28), email capture with server
count segmentation (wired to POST /api/early-access), Founding Admin
Program (25 slots), demo dashboard preview placeholders, roadmap
voting, and launch timeline. Backend: Axum handler, migration for
early_access_signups table with email + server_count + created_at.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:51:55 -05:00
Vantz Stockwell
597f2ec379 feat: Build 5 marketing pages with layout and routing
Landing page (hero, problem, shift, capabilities, wipe orchestration,
infrastructure, public sites, CTA), Pricing (3-tier cards), How It Works
(4-step walkthrough + architecture diagram), FAQ (10-item accordion),
Roadmap (6-phase timeline). All under /site/* with MarketingLayout
(sticky nav, 4-column footer). Routes wired, build clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:45:34 -05:00
Vantz Stockwell
5d911d4165 docs: Add B2B reseller plan for hosting providers
Wholesale pricing model ($6/server/mo), bulk provisioning API spec,
host dashboard requirements, pitch framework, and revenue projections.
Model B — fast to market, hosts control markup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:34:07 -05:00
Vantz Stockwell
f39e376704 docs: Add 10 momentum pages — full launch content kit
How It Works, Security, Roadmap, Live Demo, Hosting Providers,
Documentation Hub, Status, Pricing, Changelog, Founder. These
build perceived scale, trust, and conversion infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:30:02 -05:00
Vantz Stockwell
c08128156b docs: Add Corrosion Manifesto
Positioning document — draws the line between babysitting and
orchestration. Ready for marketing page or standalone deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:26:15 -05:00
Vantz Stockwell
cb2dedb5d2 docs: Add landing page copy, CodeFling listing, FAQ, and comparison sheet
Marketing assets for launch — landing page copy, marketplace description,
FAQ for support load reduction, and competitive comparison table.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:24:38 -05:00
Vantz Stockwell
a160ba2df4 feat: Build final 9 admin views + swap final hero graphic
Views: Plugins, Wipes, WipeProfiles, WipeCalendar, WipeHistory,
Maps, Analytics, StoreManage, ModuleStore. All 20/20 admin views
now implemented. Updated hero graphic to final version.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:20:01 -05:00
Vantz Stockwell
c45567670e feat: Implement 6 views + updated hero — Server, Chat, Team, Notifications, Settings, Setup Wizard
Server: Connection status, start/stop/restart controls, config editor
with edit mode, automation toggles (crash recovery, force wipe, auto-update).

Chat Log: Message feed with channel filter (global/team/server), search,
flag/unflag per message, timestamped entries with channel badges.

Team: Member table with role badges, invite form with role select,
pending/active status, remove action.

Notifications: Discord webhook, Pushbullet, email toggle cards.
6 event triggers (wipe start/complete/fail, crash, offline, purchase).

Settings: 3-tab layout (Account, License, Domain). Account editing,
license info display, subdomain + custom domain config with CNAME hint.

Setup Wizard: 3-step flow (Configure → Install Agent → Done).
Connection type radio cards, RCON/game port config, companion agent
install instructions with license key pre-filled.

Also swaps hero graphic to corrected version (two-column Control vs
Infrastructure layout per brand brief).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:12:24 -05:00
Vantz Stockwell
b767cce6ec feat: Implement Console and Players views — two core admin screens
Console: Terminal-style RCON interface with timestamped output,
color-coded log types, command input, clear button, and connection
status indicator. Uses server.sendCommand() from the store.

Players: Full management table with search, online/offline/all
filter tabs, Steam ID display, session time, ping, playtime,
admin badges, and kick/ban action buttons. Sorted online-first.

Both views use Oxide Orange brand colors per guidelines.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:01:46 -05:00
Vantz Stockwell
e237333861 fix: Resolve all TypeScript build errors — path aliases + unused params
Adds baseUrl and @/* path mapping to tsconfig.app.json so vue-tsc can
resolve @/types, @/stores, and @/composables. Prefixes unused stub
parameters with _ to satisfy noUnusedParameters. Full build now passes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 23:00:26 -05:00
Vantz Stockwell
da571b5b86 feat: Swap login/register hero to new marketing graphic
Replaces the plain trefoil mark with the full product hero —
cracked trefoil, tagline, and feature bullets from the architecture spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:55:06 -05:00
Vantz Stockwell
993db90e1f feat: Align UI to brand guidelines — Oxide Orange #F26622 replaces red accent
Defines oxide color scale (50-950) via Tailwind v4 @theme directive.
Swaps all accent red-* classes to oxide-* across layouts, auth views,
and footer. Semantic reds (error banners, offline status, stop button)
intentionally preserved.

Brand spec: Corrosion_Management_Brand_Guidelines.pdf

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:48:35 -05:00
Vantz Stockwell
c12acd39a3 feat: Upgrade favicon to multi-size ICO + PNG set, add wordmark asset
Proper favicon.ico with 16/32/64px PNG variants for cross-browser
coverage. Apple-touch-icon fallback. Adds CORROSION MANAGEMENT
wordmark PNG for text-based branding contexts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:42:52 -05:00
Vantz Stockwell
72249279d6 feat: Wire up brand kit — favicon, logos, and hero mark across all layouts
Copies brand assets to frontend/public (favicon.png, logo.png, logo-hero.png).
Updates index.html, LoginView, RegisterView, DashboardLayout sidebar, and
PublicLayout footer with proper branding.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:40:56 -05:00
Vantz Stockwell
11e5d18f81 fix: Add missing frontend dependencies (pinia, vue-router, lucide-vue-next)
These were installed in the previous session but not saved to package.json.
Production build now succeeds (39KB gzipped).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:52:23 -05:00
Vantz Stockwell
a53cb4d8a5 feat: Implement server endpoints, store, and live dashboard
Backend: Server connection/config/admins DB queries, server API routes
with auth-gated endpoints (overview, config CRUD, admin management).
Frontend: Server store wired to API, dashboard fetches server data on
mount with live status indicators, uptime formatting, and server
config display. Logout now redirects to /login.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:51:49 -05:00
Vantz Stockwell
5668675b6a feat: Implement full auth pipeline — login, register, JWT, bootstrap
Backend auth flow is now functional:
- services/auth.rs: Argon2id password hashing, JWT access/refresh tokens
- services/encryption.rs: AES-256-GCM encrypt/decrypt, hex token generation
- api/auth.rs: Login, register, refresh, logout, /me endpoints
- middleware/auth.rs: JWT Bearer token extractor (FromRequestParts)
- db/users.rs + licenses.rs: Full CRUD with runtime queries (no compile-time DB)
- main.rs: Bootstrap admin user on first run via ADMIN_EMAIL/ADMIN_PASSWORD env vars
- NATS connection now optional for dev (graceful fallback)
- Added hex and http crates to Cargo.toml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:49:37 -05:00
Vantz Stockwell
9217f77998 feat: Implement login, register, and dashboard views
Build complete auth flow with dark-themed CORROSION branding,
loading states, error handling, client-side validation, and
placeholder dashboard with stat cards and quick actions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:46:35 -05:00
Vantz Stockwell
e2f2f64d33 scaffold: Vue 3 frontend — router, stores, views, composables, layouts
Complete frontend skeleton: Vite + Vue 3 + TypeScript + Tailwind CSS,
Pinia stores (auth, server, wipe, plugins), authenticated API composable,
full route tree with auth guards, DashboardLayout with sidebar nav,
23 view stubs across auth/admin/public, all TypeScript interfaces.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:42:21 -05:00
Vantz Stockwell
175d6f0a7b scaffold: Docker infrastructure — Compose, Nginx, NATS, Dockerfile
4-service stack (PostgreSQL 16, NATS JetStream, Rust API, Nginx),
multi-stage Rust build with dependency caching, wildcard subdomain
routing for public sites, WebSocket support, rate limiting zones.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:42:15 -05:00
Vantz Stockwell
5b18a52634 scaffold: Initial database migration — 24-table multi-tenant schema
Full PostgreSQL schema with license_id tenant scoping on every table,
4 default RBAC roles (Owner, Head Admin, Moderator, Viewer), JSONB
configs for wipe profiles, webstore, and notification channels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:42:10 -05:00
Vantz Stockwell
e5ed25a86a scaffold: Backend API routes, DB queries, and middleware stubs
88 handler stubs across 13 route files, 66 DB query stubs across
11 modules, auth/license extractors, and rate limit middleware.
All bodies are todo!() — ready for Phase 1b implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:42:05 -05:00
Vantz Stockwell
5c11050eca scaffold: Backend core — Cargo.toml, main.rs, config, models, panel adapter
Axum server entry point, AppConfig, AppState, ApiError, all model
structs (auth, license, server, wipe), and the PanelAdapter trait
that abstracts AMP/Pterodactyl/companion connections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:41:58 -05:00
Vantz Stockwell
26cbeb5d4c chore: Add .gitignore and .env.example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:41:52 -05:00
Vantz Stockwell
cc8c1e3519 feat: Add 15 backend service stub files with TODO implementations
Stub files for all services declared in services/mod.rs:
- Panel adapters: AMP, Pterodactyl, Companion (NATS-based)
- Wipe pipeline: WipeEngine, Scheduler, HealthChecker, BackupManager
- Infrastructure: NatsBridge (JetStream), SteamUpdateWatcher, MapManager
- Notifications: Discord webhooks, Pushbullet push notifications
- Platform: LicenseService, CloudflareService, encryption utilities

Each file has struct definitions, method signatures with proper types,
and descriptive TODO comments outlining the implementation plan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:35:16 -05:00
Vantz Stockwell
1935a46822 docs: Initial architecture spec for Corrosion platform 2026-02-14 21:29:04 -05:00