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