尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Cybersecurity education through simulated incident-response gameplay. Next.js 16 · TypeScript · Tailwind CSS 4 · Motion · xterm.js — real-time attacker-vs-defender multiplayer over WebSockets + Upstash Redis.
All gameplay is a client-side simulation against fictional targets. See
AGENTS.mdfor the simulation boundaries and engineering conventions.
https://php2shell-live.vercel.app — first deployment (production domain of the hobby project; the repo is git-connected so pushes auto-deploy and PRs get preview deployments).
The opening heap strip is a labeled illustration; every product frame is a
real production capture. The full edit plan lives in storyboard.json.
cd video
npm install
npm run render # remotion render src/index.tsx Main out/php2shell-live-demo.mp4 --codec h264 --crf 23
npm run still # poster frame -> out/poster.png
Sources: storyboard.json (scene timings/captions), video/src/ (composition
at 1920x1080, 30 fps). Screenshots are consumed straight from docs/media/
via Config.setPublicDir; the small docs/media/crops/ derivatives are
ffmpeg re-crops of the same captures (regenerate with ffmpeg -i <src> -vf crop=iw*W:ih*H:iw*X:ih*Y).
One continuous journey: Visualize → Defend → Verify.
/play)Real-time attacker-vs-defender rooms on top of the same simulation engine:
upgradeWebSocket) with
an automatic REST polling fallback; heartbeats drive presence.KV_REST_API_URL/KV_REST_API_TOKEN, injected by the Upstash
integration), so players on different function instances stay in sync.playerId + server-issued
bearer token; role gates reject cross-role actions.defend/attack
ids, verify, reset); unknown payloads are rejected before state
changes. Call signs are control-char-stripped and capped at 24 chars.p2s:room:<CODE>); one
room's players/actions/snapshots never touch another's.Cache-Control: no-store;
sockets live up to maxDuration = 300; presence is heartbeat-derived
(~9 s) and ghosts older than 2 min are pruned on join.nvm use # Node 24 (see .nvmrc)
npm ci
npm run dev # http://localhost:3000
npm run lint && npm run typecheck && npm test && npm run build
CI (.github/workflows/ci.yml) runs the same gates on every push and PR.
next start automatically use the polling fallback./ and /play (the 390px dashboard-header wrap
regression was fixed in this branch).AGENTS.md — architecture, TypeScript standards, component and testing
conventions, security-simulation boundaries.ENVIRONMENT.md — toolchain, Devin environment persistence, MCP
integrations, deploy readiness..devin/skills/ — project skills for Devin sessions (frontend-design,
security-simulation, browser-qa, deployment-check).docs/JUDGE_DEMO.md — 90-second judge-demo script + submission text.