Engineering
- TypeScript classroom app prefers
@davenai/sdk/edu - When prompts or domain logic must stay private, the BFF uses
@davenai/sdk/serverwith an explicit verifiedsessionandproxy - Both browser and BFF SDK clients set the registered app’s
expectedAppSlug -
session.getContext()succeeds from a Hubsession+proxynew-tab launch - Quote sends only
billing.quote({ mediaType })and Hub returns school-pool credits (text 1 / image 10). Do not forward to the Daven MCPslug/codequote - A quote 422 does not abort generate. Debit happens on create 2xx
- Image
modelisgpt-image-2.5. Omitting it selects Davennano-banana-2 - Classroom text uses
gpt-5.6-luna. Do not shipgpt-5-mini+ reasoning + a small token cap (EMPTY_RESULT) - Image download limit does not drop Daven PNGs that often exceed 5MB
- MCP key only in server env (no
VITE_/ client env) - Browser never calls Daven APIs with the key
- App works on HTTPS (or localhost for local checks)
- Generation flow: quote → create → poll → preview/download
- Waiting and error UI are clear (no crashes)
- Session expiry/401 preserves saved work and shows the Hub relaunch action
Submit
- One student text and one student image from Hub Start before Submit / Master Approve
- Playground checklist passed
- Submit to Daven completed
- Student final submit retries with a stable
externalArtifactIdand never auto-submits - Submission assets use public permanent HTTPS URLs, not localhost, IP literals, or internal hosts
- Do not POST page data URLs through one Vercel BFF body. Hub
upload-urlthen HTTPS envelope only - Teacher activity Submissions shows the primaryUrl / page images
Security
- No MCP / Daven secrets in the frontend
- The app never sends its session to an arbitrary launch proxy; custom proxy allowlists are static configuration only
- No full secrets in logs or error UI
Classroom UX
- Hosted existing apps keep hosted-app invariants (identity stays, Edu AI only, no key fallback)
- Tab favicon is Classroom Hub
/brand/classroom-logo.png(tab title is the app name) -
hostedUrlishttps://{slug}.edu-app.daven.ai - EN / KO (or target locales) labels
- AI never overwrites student text without an explicit action
- Preview / download / regenerate paths
- Usable on laptop and phone
