39 Commits

Author SHA1 Message Date
achmad dc0223c504 feat: increase deck capacity from 30 to 1000
Since all cards now use 1 slot regardless of rarity, 30 slots
is too restrictive. Bumped to 1000 so there's effectively no limit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 05:54:44 +07:00
achmad 6d95836d11 feat: replace all user-facing Russian strings with English
Empty Russian and Chinese locale files so English is used regardless
of client language. Translate all CustomGameEventManager error messages,
SendCustomMessage calls, and deck/card UI strings to English.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 04:24:20 +07:00
achmadss e3534c4002 fix: add english tl 2026-05-30 04:18:47 +07:00
achmad 599339e225 feat: make all cards use 1 deck slot regardless of rarity
Override getCardDeckSlots to always return 1 so mythic and higher
rarity cards don't take multiple slots in the 30-slot deck.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 04:10:03 +07:00
achmad 5a7cb40872 chore: revert fix 2026-05-30 03:56:37 +07:00
achmad a9cf6b2ebc fix: card system 2026-05-30 03:54:44 +07:00
achmadss 7472678c3c chore: update gitignore 2026-05-29 20:15:04 +07:00
achmad c8499b8532 chore: separate backend files 2026-05-29 20:03:56 +07:00
achmad 7cb93f947c fix: give nextjs user a valid shell for su
--system flag creates the user with /sbin/nologin, causing
'This account is not available' when entrypoint tries su.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 19:03:49 +07:00
achmad 84bbf5ac4b fix: fix SQLite database permission error on volume mounts
Entrypoint now runs as root, fixes ownership of /app/data to nextjs:nodejs
(uid 1001), then drops privileges via su before starting the app.
This fixes 'unable to open database file' when the host data/ directory
is created by Docker as root and is not writable by the nextjs user.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 19:01:11 +07:00
achmad f03259d443 fix: set admin cookie path to / instead of /admin
Cookie path /admin meant the browser never sent it to /api/admin/check
(the auth check endpoint), so every check returned unauthenticated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 18:56:45 +07:00
achmad a46b3a7ca9 feat: add logging to admin login route
Log password attempt details, secure flag decision, and Set-Cookie header
to help debug login failures.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 18:52:51 +07:00
achmad 549fb20128 fix: remove extra map VPKs, keep only invasion
Remove test.vpk and light_fix.vpk from maps/ folder so the Dota 2
client only shows one map (invasion) in the lobby selection.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:44:23 +07:00
achmad 72b73c4dd6 feat: replace CreateHTTPRequest with CreateHTTPRequestScriptVM
Allows the game client to make HTTP API calls from a listen server
(local lobby) instead of requiring a Steam dedicated server.
CreateHTTPRequestScriptVM has the exact same API signature but works
in both dedicated server and listen server contexts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:36:08 +07:00
achmad 49b790349f feat: update API URL to dota-zombie-invasion.achmad.dev
Point game client (server_config.lua) to the new domain with HTTPS
and enable secure flag on the admin session cookie for HTTPS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:31:35 +07:00
achmad 2a3a56456c feat: add production docker compose file
Add compose.prod.yml for production deployments using pre-built image
from registry.achmad.dev/dota-zombie-invasion:latest with healthcheck
and env-var-based admin password configuration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:27:35 +07:00
achmad 369fb6e65d chore: add package-lock and implementation plan 2026-05-29 17:15:53 +07:00
achmad a46b802643 chore: add .gitignore for node_modules, .next, compiled dota files, and data 2026-05-29 17:14:16 +07:00
achmad 62a34165e4 chore: update postman base_url to localhost:6100
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:13:05 +07:00
achmad b55bf45d34 feat: add Docker setup with multi-stage build
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:12:29 +07:00
achmad f14e6b91f3 feat: add admin contracts and arsenal pages
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:05:09 +07:00
achmad 3f7bda10eb feat: add admin promocodes and store pages
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:04:27 +07:00
achmad e742b662c4 feat: add admin battle pass and matches pages
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:03:28 +07:00
achmad 2239f590ab feat: add admin dashboard and players pages
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 17:01:03 +07:00
achmad 155e837041 feat: add admin layout with sidebar and login
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:45:23 +07:00
achmad 60666015cb feat: add arsenal, marketplace, and contracts handlers
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:42:36 +07:00
achmad a1129f6e6d feat: add equipment handler 2026-05-29 16:41:50 +07:00
achmad ee09d4037c feat: add leaderboard and cards handlers
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:37:18 +07:00
achmad 88c69f534c feat: add game and payments handlers
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:36:44 +07:00
achmad 62611a3685 feat: add battle pass handler with quests, rewards, XP 2026-05-29 16:36:05 +07:00
achmad 44784682ae feat: add player handler with all endpoints 2026-05-29 16:35:07 +07:00
achmad 3fd15cf00b feat: add catch-all API route with handler imports
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:34:16 +07:00
achmad 2e010af1cf feat: add API router
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:31:48 +07:00
achmad 0bd3cb3bb4 feat: add SQLite schema and seed data 2026-05-29 16:31:19 +07:00
achmad 70d2b1b52d feat: scaffold Next.js 14 project
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:30:26 +07:00
achmad 641a6d9bce Clarify payments: auto-grant instead of mock 2026-05-29 16:00:10 +07:00
achmad e01f3dc176 Update docker-compose port to 6100:3000 2026-05-29 15:58:40 +07:00
achmad b264c422d2 Add backend design spec for Zombie Invasion mock server 2026-05-29 15:55:25 +07:00
achmad 777ee9bad8 initial commit 2026-05-29 15:11:31 +07:00