A retro 2D multiplayer RPG where indie hackers and solopreneurs level up their in-game character using real verified data: X (Twitter) follower count and Stripe MRR.
- Framework: Next.js 14 (App Router)
- Game Engine: Phaser 3 (Phase 2)
- Multiplayer: Colyseus (Node.js game server)
- Database: Neon (serverless Postgres)
- ORM: Drizzle ORM
- Auth: X (Twitter) OAuth via Auth.js v5
- Styling: Tailwind CSS + custom pixel art CSS
midforge/
├── apps/
│ ├── web/ # Next.js app (port 3000)
│ └── game-server/ # Colyseus server (port 2567)
└── packages/
├── db/ # Drizzle + Neon schema
└── shared/ # Shared types, quests, combat
npm installcp apps/web/.env.example apps/web/.env.localFill in your credentials:
NEXTAUTH_SECRET— runopenssl rand -base64 32TWITTER_CLIENT_ID/TWITTER_CLIENT_SECRET— from X Developer PortalDATABASE_URL— from Neon dashboard
npm run db:push# Terminal 1 — Next.js (port 3000)
npm run dev:web
# Terminal 2 — Colyseus game server (port 2567)
npm run dev:serverOr run both together:
npm run dev| Route | Description |
|---|---|
/ |
Landing page |
/login |
X OAuth login |
/world |
Main game view (Phaser canvas in Phase 2) |
/leaderboard |
Global rankings by XP |
/profile/[username] |
Player profile with verified stats |
| Route | Method | Description |
|---|---|---|
/api/auth/[...nextauth] |
GET/POST | Auth.js handlers |
/api/player/stats |
GET | Current player data |
Built on Neon · Powered by real revenue · Forged in Midgard