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