尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Turtle Typers is a multiplayer typing race. One screen acts as the “board”: it shows the lobby, a live race where each player’s turtle moves based on typing progress, and a podium for the top finishers. Players use their own devices (often phones) to join, enter a name, and type the same prompt as quickly and accurately as they can. Better typing moves your turtle forward; everyone sees the race unfold together in real time.
The app is a small full-stack demo: a Node.js server with Express serves the UI and hosts a WebSocket server (ws) so the display and all player clients stay synchronized. The front end uses Vue 3 from a CDN. It works well for classrooms, parties, or any setting where you want a shared big screen plus personal keyboards.
Player join screen (teal lobby, Turtle Typers title, scan-to-join QR, and name field):
http://localhost:3000/ — lobby, live race board, and podium for 1st–3rd place. The lobby shows a 6-digit game PIN (like Kahoot).http://localhost:3000/join on each device, type the game PIN and a name, and join. The host starts the round from the display after everyone is in.Each host screen gets its own game PIN, so several games can run at once without mixing players.
The server in index.js serves static files from public/ and runs a WebSocket server on the same HTTP port so all clients stay in sync.
npm install
node index.js
The app listens on port 3000. You should see Server is ready... in the terminal.
There is no npm start script in package.json yet; use node index.js or add a start script if you prefer.
The front end in public/app.js connects to a WebSocket URL at the top of connectSocket. For local play, use the same host as your server, for example:
this.socket = new WebSocket("ws://localhost:3000");
Comment out or remove any production URL (for example a hosted wss://… endpoint) while testing locally. Use wss:// only when the page is served over HTTPS.
| Path | Role |
|---|---|
index.js | Express app, static hosting, WebSocket game state |
public/index.html | Main display / host UI |
public/player.html | Player phone UI |
public/app.js | Vue app, socket client, game flow |
The HTML references images (for example a QR code on the lobby screen and artwork on the player page). If those files are not in public/, replace the paths or add the images there. Sound effects are loaded from /sounds/ in app.js; add those files under public/sounds/ if you want audio.
See package.json (ISC unless you change it).