COMMAND HUB // IDENTITY LAYER
OR
?
LOADING...
LOGOUT
SYSTEMS ONLINE ⚡ PUTER CLOUD 🗺️ GRUDGEWARLORDS.COM ☠ RACALVIN THE PIRATE KING

Grudge Game Editor

Central hub for all Grudge Studio production systems. Games, assets, AI tools, community management, Web3 identity, and live deployments — unified under one roof.

61
PUTER APPS
120+
DEPLOYMENTS
7
LIVE GAMES
USERS
SOLANA ACTIVE
MySQL 8 LIVE
SERVICES
SIGN IN TO UNLOCK
QUICK ACCESS
MY GRUDGE ID
IDENTITY HUB
PUTER APPS
61 APPS
LIVE DEPLOYMENTS
PUTER.SITE
DNS & SERVER SETUP
GRUDGEWARLORDS.COM

⚙ api.grudge-studio.com — Backend + AI Workers

Add these records in your DNS provider (Cloudflare / Namecheap / etc)

TYPENAMEVALUETTLNOTE
CNAMEserver cname.vercel-dns.com Auto Then add api.grudge-studio.com as custom domain in Vercel dashboard
— OR — server 74.208.155.229 300 A record pointing directly to your GrudgeNetwork/Radmin IP

🏰 gruda.grudgewarlords.com — Studio Deployment Hub

TYPENAMEVALUETTLNOTE
CNAMEgruda grudgestudio.puter.site Auto Points to your Puter deployment — upload this hub file there

📡 Radmin VPN Local Server Config

Run this on your GrudgeNetwork machine (WSL/Linux) to expose the Node backend:

# WSL / Linux terminal on GrudgeNetwork (74.208.155.229) # Install Node + PM2 if not already done curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm install -g pm2 # Clone or create your server project mkdir -p ~/grudge-server && cd ~/grudge-server npm init -y npm install express cors dotenv mysql2/promise # Create .env DATABASE_URL="your-neon-pooler-connection-string" GEMINI_API_KEY="PROXIED_VIA_BACKEND" PORT=9666 CORS_ORIGIN="https://grudgewarlords.com,https://gruda.grudgewarlords.com" # Start with PM2 (persists across reboots) pm2 start server.js --name grudge-server pm2 startup && pm2 save # Your server is now at: # http://74.208.155.229:9666 (local VPN) # https://api.grudge-studio.com (after DNS propagates)

🗄️ MySQL 8 — Single Source of Truth Schema

-- Run in MySQL CLI CREATE TABLE IF NOT EXISTS users ( id CHAR(36) PRIMARY KEY DEFAULT (UUID()), grudge_id VARCHAR(255) UNIQUE NOT NULL, puter_id VARCHAR(255) UNIQUE, username VARCHAR(255) UNIQUE NOT NULL, display_name TEXT, email VARCHAR(255) UNIQUE, phone TEXT, password_hash TEXT, -- OAuth providers discord_id VARCHAR(255) UNIQUE, google_id VARCHAR(255) UNIQUE, github_id VARCHAR(255) UNIQUE, -- Web3 solana_wallet VARCHAR(255) UNIQUE, crossmint_wallet TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, last_login DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS characters ( id CHAR(36) PRIMARY KEY DEFAULT (UUID()), user_id CHAR(36) REFERENCES users(id), name TEXT, race TEXT, class TEXT, level INT DEFAULT 1, stats JSON DEFAULT (JSON_OBJECT()), gear JSON DEFAULT (JSON_OBJECT()), faction TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS game_sessions ( id CHAR(36) PRIMARY KEY DEFAULT (UUID()), user_id CHAR(36) REFERENCES users(id), game TEXT, data JSON DEFAULT (JSON_OBJECT()), started_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS assets ( id CHAR(36) PRIMARY KEY DEFAULT (UUID()), owner_id CHAR(36) REFERENCES users(id), type TEXT, name TEXT, url TEXT, metadata JSON DEFAULT (JSON_OBJECT()), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

🚀 Deploy This Hub to gruda.grudgewarlords.com

# 1. Upload grudge-hub-v2.html to Puter as index.html # in the folder mapped to grudgestudio.puter.site # (or any puter.site you add the CNAME for) # 2. In Puter File Manager: # → Navigate to your site folder # → Upload this file as index.html # → Done — changes are instant # 3. DNS CNAME added? Wait 5-30 min for propagation # then visit: https://gruda.grudgewarlords.com
TECH STACK & DEPENDENCIES
VPS 74.208.155.229

🏗️ Backend Services (Docker Compose)

SERVICECONTAINERPORTURL
Grudge Identitygrudge-id3001id.grudge-studio.com
Wallet Servicewallet-service3002(internal only)
Game APIgame-api3003api.grudge-studio.com
AI Agentai-agent3004(internal only)
Account APIaccount-api3005account.grudge-studio.com
Launcher APIlauncher-api3006launcher.grudge-studio.com
WebSocketws-service3007ws.grudge-studio.com
MySQL 8grudge-mysql3306(internal only)
Redis 7grudge-redis6379(internal only)

📦 Core Dependencies

PACKAGEPURPOSELAYER
Node.js 20Runtime for all backend servicesBackend
Express.js 4REST API framework for all servicesBackend
Socket.IO 4.7WebSocket — /game, /crew, /global, /pvp namespacesBackend
mysql2MySQL 8 driver with connection poolingBackend
ioredisRedis 7 client — rate limiting, pub/sub, cachingBackend
jsonwebtokenJWT auth (issued by grudge-id, verified everywhere)Backend
bcryptjsPassword hashing for local authBackend
ColyseusMultiplayer game server framework (headless-server)Game Server
BabylonJS3D engine for game clientsFrontend
React 19UI framework for Vercel-deployed frontendsFrontend
Three.js3D rendering for web game clientsFrontend
Web3AuthSolana wallet authentication (JWKS-verified)Auth
@solana/web3.jsSolana blockchain interactionWeb3
Crossmint SDKServer-side custodial wallets + cNFT mintingWeb3

☁️ Infrastructure & DevOps

TOOLPURPOSESTATUS
Docker ComposeContainer orchestration for all servicesACTIVE
CoolifySelf-hosted PaaS on VPS (deploy management)ACTIVE
TraefikReverse proxy — TLS termination, routingACTIVE
Cloudflare WorkersEdge compute — site, dashboard, R2 CDN, auth-gatewayACTIVE
Cloudflare R2S3-compatible object storage for game assetsACTIVE
Cloudflare KVEdge key-value — status caching, rate limitingACTIVE
VercelFrontend deployments (all game clients + apps)ACTIVE
GitHub ActionsCI/CD — lint, test, deploy on pushACTIVE
PM2Process manager for non-Docker Node servicesAVAILABLE
Wrangler CLICloudflare Worker deploy toolACTIVE

🧠 AI & Tooling

SERVICEUSE CASEINTEGRATION
Claude (Anthropic)Character generation, story AI, code assistServer-side API
Gemini (Google)AI console, NPC dialogue, fast inferenceServer-side API
OpenAI / DALL-EImage generation for characters, islandsServer-side API
Puter AIClient-side AI (user-pays model, $0 cost)Client SDK
Meshy / TripoText-to-3D voxel model generationServer-side API
Twilio VerifySMS OTP for phone authenticationServer-side API

🎮 Game Server Stack

COMPONENTPURPOSEPORT / URL
Colyseus ServerAuthoritative multiplayer rooms (combat, islands)7777 (internal)
Socket.IO /gameIsland rooms — real-time player movement, eventsws.grudge-studio.com
Socket.IO /crewCrew chat + coordinationws.grudge-studio.com
Socket.IO /globalServer-wide broadcasts (kills, claims, events)ws.grudge-studio.com
Socket.IO /pvpPvP matchmaking + arena statews.grudge-studio.com
Redis Pub/SubCross-process event bridge for WS namespaces6379 (internal)
ObjectStore APIStatic game data (weapons, armor, recipes, races)GitHub Pages

🔐 Auth Providers

PROVIDERENDPOINTSTATUS
Email / PasswordPOST /auth/login + /auth/registerLIVE
Discord OAuthGET /auth/discord → callbackLIVE
Google OAuthGET /auth/google → callbackLIVE
GitHub OAuthGET /auth/github → callbackLIVE
Web3Auth (Phantom)POST /auth/walletLIVE
Puter CloudPOST /auth/puterLIVE
Phone SMS (Twilio)POST /auth/phone-send + /phone-verifyLIVE
Guest (Device ID)POST /auth/guestLIVE
SSO CookieGET /auth/sso-checkLIVE
AI COMMAND CONSOLE
GRUDGE AI
GRUDGE AI // Grudge AI Backend
✓ GRUDGE AI CONSOLE INITIALIZED
→ GRUDGE AI API connected
→ Context: Grudge Studio | Owner: Racalvin The Pirate King
→ Stack: Node/TS, Solana, MySQL 8, Puter, Vercel, Radmin VPN
✓ Ready — type a command or use shortcuts above
GRUDGE ❯