尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A four-cut photo booth for the Computer Science Society fair. Visitors take eight photos, pick four, choose a strip design, and download a PNG photo, an MP4 moving strip, or both.
Import this repository into Vercel with the repository root as the Root Directory. The checked-in vercel.json publishes the browser interface as a static site. There is no backend: no database, storage, environment variables or API functions are needed, and nothing runs on the booth laptop.
Open the deployed HTTPS site in a current Chrome or Edge browser and try a demo round. Photos and videos stay in the browser and are never uploaded.
Before the event, expand Booth archive at the top of the site, press Choose / enable archive folder, select Downloads, and allow write access. The browser creates:
Downloads/
cssbooth/
photo/ # Finished four-photo PNG strips
video/ # Silent MP4 strips with four camera clips playing together
You can also select an existing cssbooth folder. The app remembers the folder handle, but the browser may ask you to enable permission again after restarting. Only the folder handle is stored in IndexedDB; photos are never saved in browser storage. Selecting another parent folder puts cssbooth inside that folder.
Once permission is enabled, PNGs and MP4s save automatically as they are created. Existing files in an older picture folder stay there. Permanent local copies do not expire. Photo and video downloads work even if the operator has not enabled the local archive. A website cannot silently choose a filesystem folder without browser permission.
All four numbered steps are accessible without prerequisites; only exporting requires four selected photos. Leaving a countdown pauses it without erasing partial shots. Camera images are mirrored and fitted without cropping. Countdown, flash and other screen controls are not baked into photos. The transparent Nottingham and CSS logos and the phrase We don't Code, We Build appear on every strip.
Raw camera shots, their countdown clips and the finished strip stay in the browser's current-round memory and are never sent anywhere. No microphone is used. Files already downloaded or saved in the permanent local archive remain with their owners.
Existing recordings/, photo-strips/, share-media/ and .legacy-signing-backup/ files from older versions are not served or published. New versions do not write to these folders.
Requires Node.js 18+ for checks and the optional local development preview. Browser libraries are pinned and bundled in vendor/ with their licenses; no npm dependencies are required.
npm run check
npm test
npm run build
npm start
npm start opens a development preview at http://localhost:3000.
Production publishes only the allowlisted browser assets in dist/. It excludes media, backups, server preview code and tests. The build refuses unexpected files in dist/ to avoid accidentally publishing data.
Before the event, test the live webcam and both archive folders. MP4 generation uses H.264 with Mediabunny/WebCodecs, and decodes the recorded camera clips with WebCodecs. No clips are replaced by still-photo slideshows. Current Chrome or Edge is required on the booth computer.