ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A modern quiz bowl platform for scoring, tournament management, and live tournament experiences with QBLive.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
QBSheet is an offline-first electronic scoresheet for quiz bowl. It runs entirely in a web browser.
You can use QBSheet to score a game from a QBJ file. You can also connect it to tournament-control software with QBTCP. For practices and scrimmages, you can create a game directly in QBSheet.
QBSheet works as a website or an installable PWA. Standalone scoring does not require an account, a database, or an internet connection.README 전문 보기 ↗QBSheet is an offline-first electronic scoresheet for quiz bowl. It runs entirely in a web browser.
You can use QBSheet to score a game from a QBJ file. You can also connect it to tournament-control software with QBTCP. For practices and scrimmages, you can create a game directly in QBSheet.
QBSheet works as a website or an installable PWA. Standalone scoring does not require an account, a database, or an internet connection.
The repository also includes QBSheet Director, the desktop tournament-control application. It is a
separate application under apps/director with its own Vite config and Tauri shell,
and it is not part of the website: the deployed site has no URL that launches tournament control. See
running Director below, and the product page at /about/director/.
| What it is | |
|---|---|
| QBSheet Web / Scorer | The browser scoresheet. Offline-first, no account, QBTCP client. |
| QBSheet Director | The desktop tournament-management application. Authoritative tournament state, local SQLite, QBTCP server. |
| QBSheet Live | The participant-facing half: a native iOS app, an App Clip, a responsive web client, and an open protocol for publishing a tournament. |
The website carries the scorer plus a marketing page for each of the other two, at /about/director/
and /about/qblive/. Director is installed on the tournament-control computer; QBSheet Live Web is
served from live.qbsheet.com. Neither runs on the QBSheet website.
Director runs the tournament. Live publishes the tournament.
QBSheet Live is entirely optional and is never required for scoring, QBTCP, scheduling, result acceptance, advancement, statistics, recovery, or persistence. If the internet disappears mid-day, the tournament continues normally and Live catches up afterwards. A tournament's public data lives in the tournament director's own infrastructure — QBSheet does not host it and does not pay for it.
See the QBSheet Live architecture and the QBLive protocol.
There are three primary ways to start a game.
Open a QBJ assignment or tournament file.
If the file contains more than one game, select the game that you want to score.
After the game, export the result as a QBJ file.
QBSheet can also read legacy .qbg files for compatibility.
QBSheet can connect to tournament-control software that supports QBTCP.
Enter the tournament server address. Pair the room with the server. QBSheet can then receive game assignments and send results to the tournament system.
QBSheet also keeps local recovery data on the device.
For protocol information, see QBTCP.
You do not need a tournament system to use QBSheet.
Select Create game. Enter the two teams, the players, and the scoring rules. You can then start the game.
This mode is useful for practices, scrimmages, tryouts, and pickup games.
Created games use the same scorer, corrections, recovery features, and QBJ export as other QBSheet games.
QBSheet uses two standards for interoperability.
QBTCP uses QBJ for game data. File-based games and connected games therefore use the same game format.
QBSheet requires Node.js 22 or later.
git clone https://github.com/gbyo/qbsheet.git
cd qbsheet
npm ci
npm start
Vite starts the local development server.
Director is a separate application and does not run from the root Vite server.
npm run director:dev # the Director user interface, on http://127.0.0.1:1420
npm run director:tauri:dev # the real desktop application, with its native storage and QBTCP server
npm run director:build # typecheck and build the Director frontend
npm run director:test # the Director shell's own suite
The local QBTCP listener and the durable tournament store exist only in the native shell, so the
browser-served user interface can plan a tournament but cannot run one. See
apps/director/README.md.
Run these checks before you submit a change:
npm run lint
npm run typecheck
npm test -- --run
npm run build
QBSheet Live has its own suites. The Cloudflare and iOS ones need workerd and Xcode, so they run in
a separate workflow rather than in the main gate:
npm run qblive:test # protocol, public projection privacy, Live Activity payloads, conformance
npm run live:test # QBSheet Live Web
npm run live:dev # QBSheet Live Web against a running backend
Run the browser end-to-end tests with:
npm run test:browser
For more development information, see CONTRIBUTING.md.
QBSheet builds as a static site. You can host it on GitHub Pages, Cloudflare Pages, or another static host.
Build the production version with:
npm ci
npm run build
The build output is in dist/.
QBSheet uses relative asset paths by default. The same build can work at a domain root, in a repository path, or from a local copy.
Set BASE_PATH if the deployment requires a specific base path:
BASE_PATH=/qbsheet/ npm run build
The service worker provides the application shell for offline use.
Director is not part of that build. It is a desktop application, released per platform from a
director-v* tag by .github/workflows/director-release.yml; see
Director releases.
| Document | Description |
|---|---|
| QBTCP | Protocol for communication with tournament-control software |
| QBJ assignment profile | How QBSheet reads and writes QBJ |
| Transfers | Moving assignments and results by USB, folders, and downloads |
| QBG migration | Compatibility information for the older QBG and API formats |
| Spreadsheet clipboard | Copy one complete game into a shared tournament spreadsheet |
| Test file generation | Information about test files and development fixtures |
| QBSheet Live architecture | How Live fits together, and the canonical domain decision |
| QBLive protocol | The normative public protocol for publishing a tournament |
| QBSheet Live for iOS | iOS targets, universal links, App Store Connect checklist |
| Live Activity | ActivityKit sharding and measured broadcast payload sizes |
| APNs prototype result |
Bug reports, tournament testing, documentation, and code contributions are welcome.
Read CONTRIBUTING.md before you open a pull request.
The Code of Conduct applies to project participation.
Report security problems as described in SECURITY.md. Do not report a security problem in a public issue.
QBSheet is available under the GNU Affero General Public License version 3 or later.
QBSheet includes work derived from the YellowFruit project. See NOTICE.md for attribution and project history.
| What was measured about reaching Apple's push endpoints |
| Live load results | WebSocket load, and APNs channel-consumption modelling |
| Live verification status | What is demonstrated, what is tested, and what is not |
| Director releases | How Director is versioned, built per platform, and published |