Layout polls active missions every 20s and on socket events; shows a
red badge on the Missioni nav tab when missions are ready to claim.
CSS additions: SVG map styles with pulse animation, chance bar,
mission type chips, lock/abandon styles, market trend tags,
quicklinks row, nav badge.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Market rows show a TrendTag: 💰 affare when buyPrice < basePrice,
📈 vendi when sellPrice > basePrice. Leaderboard subscribes to
leaderboard:updated socket event to refresh without polling.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Home screen now loads active missions alongside player/events data.
Shows a "Missioni in corso" card with per-mission countdown and
inline Riscuoti button (with toast feedback). Quick-access buttons
to Missioni, Mercato, Classifiche replace the single leaderboard link.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Available missions now show description, type chip (colored by type),
success probability bar (green/gold/red), minLevel lock with 🔒.
Reward loot item displayed in footer. Active missions show reward
loot and an Abandon button (confirm dialog, −1 rep warning).
Result modal shows loot and fine details.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace plain list with a styled SVG Italy outline (mainland, Sicily,
Sardinia). Cities rendered as markers: color by risk level, pulse
animation for current city, ⚡ icon for active events. Clicking a
marker or a list row opens a travel modal with city details and
confirm button. List remains as compact fallback below the map.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>