josh 2a6629af79 Revitalize backend: working cloud saves, logout, and account UX
Cloud saves were fully built but never wired up — useCloudSave() hook was
never called, no load-from-cloud flow existed, and there was no way to
continue a saved game. Logout was completely missing (no endpoint, no UI).
Accounts felt like a gate behind the invite wall rather than real accounts.

Backend: add tokenVersion to users for server-side token invalidation,
POST /auth/logout bumps it to revoke all JWTs, GET /auth/me returns
profile, GET /saves/latest returns most recent save with full gameData.
All createToken calls now include tokenVersion. Auth middleware rejects
tokens with stale tokenVersion.

Frontend: wire up useCloudSave() in App (auto-saves every 60 ticks with
error handling), fetch cloud save on startup for registered users, show
"Continue Your Game" card on NewGameScreen, add Log Out button with
confirmation in Settings, show username in sidebar, 401 interceptor
clears auth and reloads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-28 19:32:03 -04:00

Token Empire

A browser-based incremental/idle game where you manage an AI company from a garage startup to building AGI. Navigate the real tensions of the AI industry: scaling compute, training frontier models, balancing safety vs capability, hiring talent, and competing with rival labs.

Target: 4-8 hour single playthrough | Platform: Desktop browser | Price: Free

Quick Start

# Prerequisites: Node.js 18+, pnpm 10+
pnpm install
pnpm dev

The web app starts at http://localhost:5173 (or the next available port). The backend server starts alongside it for cloud saves and leaderboards.

Tech Stack

Layer Choice
Frontend React 19 + TypeScript, Vite
State Zustand (slice pattern, localStorage persistence)
Styling Tailwind CSS (custom dark theme)
Charts Recharts
Backend Hono (Node.js)
Database PostgreSQL + Drizzle ORM
Monorepo Turborepo + pnpm workspaces

Project Structure

token-empire/
├── apps/
│   ├── web/              # React frontend (Vite)
│   └── server/           # Hono API backend
└── packages/
    ├── shared/           # Types, constants, formatters
    └── game-engine/      # Pure TS simulation (no DOM dependencies)

The game engine is fully decoupled from React. It runs identically for real-time ticks, offline catch-up, and testing.

Game Overview

Four Eras

  1. Startup (~30 min) — First datacenter, first model, first customers
  2. Scale-up (~2 hr) — Growth, multiple datacenters, specializations
  3. Big Tech (~4 hr) — Global operations, regulation, IPO
  4. AGI (~8 hr) — Endgame push, AI agents, custom chips

Core Loop

Buy GPUs → Allocate compute → Train models → Deploy → Earn revenue → Expand

Key Systems

  • Infrastructure — Datacenters across 7 global regions with different costs, latency, and risks
  • Research — Tech tree with generation upgrades and specialization branches
  • Models — Train, tune, and deploy models with capability scores across reasoning, coding, creative, multimodal, and agents
  • Market — Consumer subscriptions and B2B API with token-based pricing
  • Talent — Four departments (Research, Engineering, Ops, Sales) with hiring and morale
  • Competitors — AI rival labs with distinct personalities that react to your moves
  • Events — 40+ events across industry, regulatory, PR, internal, market, and geopolitical categories
  • Safety — Tradeoff between capability benchmarks and safety; low safety risks PR disasters
  • Funding — VC rounds from Seed to IPO with dilution mechanics
  • Achievements — 15 milestones tracking progression

Scripts

pnpm dev          # Start all apps in development mode
pnpm build        # Production build
pnpm typecheck    # Type-check all packages
pnpm lint         # Lint all packages
pnpm clean        # Clean build artifacts

Backend Setup

The backend requires PostgreSQL for cloud saves and leaderboards. Set the connection string in apps/server/.env:

DATABASE_URL=postgresql://user:password@localhost:5432/token_empire

Run migrations:

cd apps/server
pnpm db:push

The game works fully offline without the backend — saves persist to localStorage.

Documentation

  • Architecture Guide — Technical deep dive into the engine, state management, and simulation systems
  • How to Play — Player guide with mechanics, strategies, and tips

License

All rights reserved.

S
Description
No description provided
Readme 2.2 MiB
Languages
TypeScript 99.6%
Dockerfile 0.2%