Add AvailableMission (extends Mission with estimatedSuccessChance,
canStart), AbandonMissionResponse type. Extend Mission with description,
minLevel, rewardItemName/Quantity; ClaimMissionResponse with moneyChange,
fine, lootItem fields; City with mapX/mapY; MarketEntry with basePrice.
Add abandonMission() API call.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cities endpoint now returns map coordinates for the SVG map renderer.
Market endpoint includes basePrice so the client can compute price
trend deltas relative to the item base value.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each mission type now has a typeConfig (moneyFactor, xpFactor, repFactor,
riskShift, requiredItemChance, lootChance). startMission checks minLevel.
claimMission awards loot items on success; applies a police-scaled fine
on failure. New abandonMission endpoint (POST /:id/abandon, −1 rep).
computeSuccessChance extracted for reuse between listAvailable and claim.
Narrative template pool expanded (4 templates × 4 types).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add mapX/mapY to City for SVG map positioning; add description,
minLevel, rewardItemId/Quantity to Mission; add named relations
MissionRequiredItem and MissionRewardItem on Item. Seed updated
with Italian city coordinates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add all game screens: Login, Dashboard, Market (buy/sell), Inventory,
Missions, Travel (city selection), Leaderboard; wired via react-router
in App.tsx with protected routes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add JWT-based AuthContext (login/logout, token persistence), typed
HTTP client with auth header injection, REST API functions for all
game endpoints, and shared TypeScript types.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add Vite + React + TypeScript setup, package.json (react-router-dom,
socket.io-client), global CSS, app entry point and environment
config.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Set up authenticated Socket.IO server; broadcasts market updates,
world events, and mission notifications to connected clients in
real time.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add node-cron jobs for periodic market price updates, mission
generation, and world event generation; all wired through a central
scheduler module.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add routes and services for all game domains: market buy/sell with
dynamic pricing, mission generation and completion, player stats and
travel, inventory queries, leaderboard, city list, and world events.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implement registration and login endpoints with bcrypt password
hashing and JWT token issuance; all game routes depend on this.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Define Prisma schema (Player, City, Good, InventoryItem, Transaction,
Mission, WorldEvent), initial migration SQL, and seed script to
populate cities and goods with base game data.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add package.json (Fastify, Prisma, Redis, JWT), TypeScript config,
Dockerfile, docker-compose with Postgres and Redis services, and
.gitignore with data directory rules.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>