diff --git a/app/forge/page.tsx b/app/forge/page.tsx
new file mode 100644
index 0000000..0b26d93
--- /dev/null
+++ b/app/forge/page.tsx
@@ -0,0 +1,79 @@
+"use client";
+import { Hammer, History, Target, Code2 } from "lucide-react";
+import PageLayout from "@/components/PageLayout";
+
+export default function ForgePage() {
+ return (
+
+
+
+
+
+ TheForge
+
+
+
+
+ The Forge is where I document my current engineering focus. This space
+ reflects active builds, experimental prototypes and gives a taste of
+ my next releases.
+
+ Exploring procedural generation and state-machine-driven AI behaviors.
+ The goal is to bridge my experience in systems architecture with
+ real-time game loops and interactive storytelling.
+
+
+ {/* Milestones / Changelog */}
+
+
+ Development_Log
+
+
+
+
+ 2026-02-02
+
+
+ Implemented dynamic weather patterns using custom shaders.
+
+
+
+
+ 2026-01-28
+
+
+ Optimized asset loading pipeline for faster initial scene entry.
+
- A registry of operational services and experimental R&D. Services
- labeled
+ A registry of self hosted operational services and experimental R&D.
+ Services labeled
[VPN] are secured via
Tailscale to maintain a hardened perimeter for sensitive telemetry.
diff --git a/app/page.tsx b/app/page.tsx
index d326cff..711a922 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -2,7 +2,7 @@
import Link from "next/link";
import { motion, Variants } from "framer-motion";
-import { Globe, Smartphone, Server, Gamepad2 } from "lucide-react";
+import { Globe, Smartphone, Server, Gamepad2, Hammer } from "lucide-react";
import { useState } from "react";
import MonitorCard from "@/components/MonitorCard";
import PageLayout from "@/components/PageLayout";
@@ -170,20 +170,28 @@ export default function Home() {
/>
{/* Bottom Row: The Forge */}
-
-
-
-
-
-
The Forge
-
- Indie Game Dev & Creative Prototypes
-
-
-
+
+
+
+
+
+
+
+
+ The Forge
+
+
+
+
+ A space where I demonstrate what I am currently working on and
+ any future projects.
+
+
+
+
diff --git a/data/forge.ts b/data/forge.ts
new file mode 100644
index 0000000..b9ecc09
--- /dev/null
+++ b/data/forge.ts
@@ -0,0 +1,26 @@
+import { ForgeProject } from "@/types";
+
+export const ACTIVE_BUILD: ForgeProject = {
+ id: "pixelpals",
+ name: "PixelPals",
+ status: "Alpha",
+ engine: "Godot 4.x",
+ description:
+ "A mobile-first creature collection game focusing on procedural behaviors and lightweight state-management.",
+ highlights: [
+ "State-machine AI",
+ "Custom Shader Pipelines",
+ "Mobile-optimized Loops",
+ ],
+ externalLink: "/projects/pixelpals", // Link to your internal portfolio or a dedicated site
+ changelog: [
+ {
+ date: "2026-02-03",
+ update: "Refined touch-input latency for mobile devices.",
+ },
+ {
+ date: "2026-01-25",
+ update: "Integrated local SQLite database for creature persistence.",
+ },
+ ],
+};
diff --git a/data/lab.ts b/data/lab.ts
index 733e105..4dd9297 100644
--- a/data/lab.ts
+++ b/data/lab.ts
@@ -9,7 +9,7 @@ export const LAB_SERVICES: LabService[] = [
stack: ["Next.js", "Node", "SQLite"],
visibility: "public",
url: "https://observatory.georgew.dev",
- gitUrl: "https://git.georgew.dev/george/observatory",
+ gitUrl: "https://git.georgew.dev/georgew/mission-control",
image: "/lab/observatory.jpg",
uptimeId: 12,
},
@@ -22,6 +22,7 @@ export const LAB_SERVICES: LabService[] = [
visibility: "public",
url: "https://surf.georgew.dev/d/adrx6b4/llangennith-beach-surf-data?orgId=1&from=now-24h&to=now&timezone=browser&refresh=1h&theme=dark&kiosk=true",
image: "/lab/surf-hub.jpg",
+ gitUrl: "https://git.georgew.dev/georgew/surf-hub",
uptimeId: 13,
},
{
@@ -31,8 +32,8 @@ export const LAB_SERVICES: LabService[] = [
"Dedicated audiobook server for the household. Primarily used for our Brandon Sanderson, Patrick Rothfuss, and Dungeon Crawler Carl marathons.",
stack: ["Docker", "Compose", "Tailscale", "rclone"],
visibility: "tailscale",
- url: "https://audio.georgew.dev",
image: "/lab/audiobookshelf.jpg",
+ gitUrl: "https://git.georgew.dev/georgew/audiobookshelf",
uptimeId: 6,
},
{
@@ -42,8 +43,8 @@ export const LAB_SERVICES: LabService[] = [
"A specialized tracker for our anime watch-lists! Features custom metadata hooks to keep our seasonal progress in sync.",
stack: ["Docker", "Redis", "Tailscale"],
visibility: "tailscale",
- url: "https://anime.georgew.dev",
image: "/lab/yamtrack.jpg",
+ gitUrl: "https://git.georgew.dev/georgew/yamtrack",
uptimeId: 11,
},
{
@@ -53,8 +54,9 @@ export const LAB_SERVICES: LabService[] = [
"Personal document management system with OCR and automated tagging. Digitizing our physical mail and records into a searchable, versioned archive.",
stack: ["Docker", "Redis", "PostgreSQL"],
visibility: "tailscale",
- url: "https://paperless.georgew.dev",
image: "/lab/paperless.jpg",
+ gitUrl: "https://git.georgew.dev/georgew/paperless-ngx",
+
uptimeId: 14,
},
{
@@ -64,8 +66,8 @@ export const LAB_SERVICES: LabService[] = [
"Automated monitoring for the essentials: NASA news updates, hobby stock alerts, and Telegram pings the second a new episode of 'The Traitors' drops.",
stack: ["Telegram API", "Webhooks"],
visibility: "tailscale",
- url: "https://alerts.georgew.dev",
image: "/lab/change-detection.jpg",
+ gitUrl: "https://git.georgew.dev/georgew/change-detection",
uptimeId: 15,
},
{
@@ -75,7 +77,6 @@ export const LAB_SERVICES: LabService[] = [
"The 'Engine Room.' Utilizing Portainer for orchestration, Dozzle for log streaming, and Watchtower for automated container lifecycle management across the Hetzner node.",
stack: ["Portainer", "Dozzle", "Watchtower"],
visibility: "tailscale",
- url: "https://portainer.georgew.dev",
image: "/lab/portainer.jpg",
},
{
@@ -85,7 +86,6 @@ export const LAB_SERVICES: LabService[] = [
"The 'Source of Truth' for the home infrastructure. Contains deployment guides, network maps, and disaster recovery procedures for the entire node.",
stack: ["Wiki.js", "Markdown"],
visibility: "tailscale",
- url: "https://wiki.georgew.dev",
image: "/lab/wikijs.jpg",
uptimeId: 5,
},
@@ -93,11 +93,9 @@ export const LAB_SERVICES: LabService[] = [
id: "dashboard",
name: "System Dashboard",
description:
- "The central entry point for the GeorgeW ecosystem. A high-level overview providing unified access to all public and VPN-secured services.",
- stack: ["Next.js", "Docker", "Reverse Proxy"],
- visibility: "public",
- url: "https://dash.georgew.dev",
- gitUrl: "https://git.georgew.dev/george/homepage",
+ "The central entry point for the GeorgeW ecosystem, used as my personal home page. A high-level overview providing unified access to all public and VPN-secured services.",
+ stack: ["Homepage", "Docker", "Reverse Proxy"],
+ visibility: "tailscale",
image: "/lab/dashboard.jpg",
},
];
diff --git a/public/lab/dashboard.jpg b/public/lab/dashboard.jpg
new file mode 100644
index 0000000..5ceea70
Binary files /dev/null and b/public/lab/dashboard.jpg differ
diff --git a/types/index.ts b/types/index.ts
index effeca5..93c1690 100644
--- a/types/index.ts
+++ b/types/index.ts
@@ -47,3 +47,14 @@ export interface LabService {
image: string;
uptimeId?: number;
}
+
+export interface ForgeProject {
+ id: string;
+ name: string;
+ status: "Alpha" | "Beta" | "R&D";
+ engine: string;
+ description: string;
+ highlights: string[];
+ externalLink?: string;
+ changelog: { date: string; update: string }[];
+}