Session log — Build kit for Peter Sargeant

← All session logs

Session log — Build kit for Peter Sargeant

16 June 2026, evening · Zoom Companion · Hasmukh with Claude · auto-published from the local journal entry. A polished narrative version can be requested in any future Claude session.

Summary

The operator asked for a way to share how the Camera Monitor app was built with a friend, Peter Sargeant, so that Peter could paste a single prompt into his own Claude Code account and end up with the same app. The session produced two shareable documents: a build-story explainer and a self-contained Claude Code build prompt. No actual app source files were changed.

To get the documents accurate, the full project context was read first: the authoritative project memory under the Zoom-Apps directory key, then main.js, renderer/renderer.js, renderer/index.html, renderer/styles.css, both broadcast overlays (stats-overlay.html, participant-counter.html), package.json and .env.example.

Decisions

  • Created a new for-peter/ folder at the project root to hold the two deliverables, rather than scattering them or putting them in version-controlled app paths.
  • Split the deliverable in two, matching the operator's request: an explainer MD for understanding plus the Zoom account setup, and a separate paste-ready prompt for the actual build.
  • Chose a high-fidelity prompt approach: embed the complete, proven source for all nine files verbatim (overlays especially, since their look lives in exact CSS), rather than a looser specification. Reasoning: the operator wants Peter to reliably end up with the same beautiful app.
  • Front-loaded the prompt with twelve non-negotiable constraints drawn from the hard-won lessons (require not UMD, sign JWT in main, upsertUser as single source of truth, leaveMeeting not leave, popup killer, account-bound SDK key, the Embed programmatic-join toggle, and so on) so Peter's Claude does not re-stumble and can adapt if the SDK has drifted.
  • Genericised away everything Mobilearn and Medilearn specific (bot email, appId, tenant names, the not-authorised UI string) into placeholders, because the SDK key is account-bound, so Peter must build against his own Zoom account.
  • Did not run the SessionStart publish queue for the three outstanding session logs, and did not send anything outward, since the operator did not request those this turn.

Changes made

  • Added for-peter/Camera-Monitor-Build-Story.md: a friendly but technical explainer covering what the app does, the two-process architecture, the OBF then ZAK then guest join chain, the Zoom Marketplace setup Peter must do himself, a twelve-row lessons table, and how to use the prompt.
  • Added for-peter/Camera-Monitor-Claude-Code-Prompt.md: a single self-contained prompt of roughly 1,360 lines. Contains the mission, exact stack and versions, the twelve constraints, the complete genericised source for all nine files (package.json, .gitignore, .env.example, main.js, and the full renderer/), and a closing setup and verification checklist.
  • Added a session-chapter marker in the live session for the build-kit work.
  • Verified the prompt: code fences balanced, no leftover part-two sentinel, and zero Mobilearn or Medilearn references in the prompt file.
  • No changes to any runtime app file (main.js, renderer, styles, overlays, package.json all untouched).

Follow-ups

  • Offered to zip the for-peter/ folder or draft an email to Peter with both files attached. Awaiting the operator's go-ahead and Peter's email address before any send.
  • The morning-after publish queue still lists three session logs not yet published to documentation.mobilearn.africa (2026-05-20-session-participant-counter-dashboard.md, 2026-05-23-session-date-query.md, 2026-05-23-session.md). Left untouched this session; the operator can ask for the publish run when ready.
  • If Peter wants the optional OBF cross-account joining, he will need the extra OAuth setup on his Meeting SDK app, which the build story flags as optional and advanced.