# Soulless Necromancer Web multiplayer necromancer game: build a zombie or shadow army, roam a shared map, and delve into click-combat crypts. ## Stack - **Client:** React + Vite + TypeScript - **Server:** Node.js + Express + Socket.io + TypeScript - **Database:** PostgreSQL + Prisma ## Prerequisites - Node.js 20+ - Docker (for PostgreSQL) ## Setup ```bash # From repo root npm install npm run db:setup # starts Postgres on :5433, pushes schema, seeds items npm run dev # API :3001 + Vite :5173 ``` Open [http://localhost:5173](http://localhost:5173). Postgres runs on **port 5433** by default (see `server/.env`) to avoid clashing with a local Postgres on 5432. ## Play loop 1. **Register** with email, password, character name, and specialty (`ZOMBIE` or `SHADOW`). 2. **World map** — click tiles to move (max 3 Manhattan steps). Other online players appear live. 3. **Portal** — stand next to the pulsing portal tile and click it to enter your personal dungeon instance. 4. **Dungeon** — click empty tiles to **move** (Move mode) or switch to **Summon** to place units. Summons walk toward enemies when nothing is in range; combat is automatic in range. Clear the floor for XP, loot, and floor progression. 5. **Progression** — spend stat points on level-up; equip relics from the Relics panel. Outside dungeons, HP and energy regenerate slowly while you are online on the world map. ## Useful scripts | Script | Description | |--------|-------------| | `npm run db:up` | Start Postgres container | | `npm run db:migrate` | Apply Prisma migrations | | `npm run db:seed` | Seed item catalogue | | `npm run dev` | Run client + server | ## Env Server env lives in `server/.env` (see defaults for local Docker Postgres).