尚未偵測到更新。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.