DrawSplatTM Open Whiteboard

Widget Security Boundary

Per-widget security boundary and data inventory

Districts and reviewers asked for a single page that answers: "What does each DrawSplatTM widget actually do with student data?" This page lists every widget and game served from the DrawSplatTM static site, what it stores, what external requests it makes, and what student data (if any) it collects.

Widget Security Boundary — the short version

Per-widget data inventory

Every widget and game served from this site is listed below. Columns: where the widget runs, what local storage it uses, what external network requests it makes during normal play, and whether it touches student-identifying data.

Classroom widgets (/solutions/)

WidgetlocalStorage / sessionStorageExternal requestsStudent-identifying data
Bingo Card GeneratorNoneNoneNone
Bingo CallerNoneNoneNone — player names typed at runtime stay in memory
Coin FlipperNoneNoneNone
Dice RollerNoneNoneNone — optional player names typed at runtime stay in memory
Dicebreaker CreatorNoneNoneNone
Draw & SketchNoneNoneNone
Fortune Wheel (teacher)Saved setup blobs (no student data)NoneNone
Fortune Wheel (student)NoneNoneNone
Markdown StudioAuto-save of the current document onlyNoneNone unless the user pastes such data into their own document
Meme PuzzleNoneNoneNone
Rubric BuilderSaved rubrics drafted by the userNoneOnly if the user types student names into a rubric; stays in their browser
Story WheelSaved prompt setsNoneNone
Wheel SpinnerNoneNoneNone — entries typed at runtime stay in memory
Word Search MakerNoneNoneNone

DrawSplatTM Games (/games/ and /solutions/dotsboxes/)

GamelocalStorage / sessionStorageExternal requestsStudent-identifying data
Castles & CatapultsNoneNoneNone — optional player names typed at runtime stay in memory
Dots and BoxesNoneNoneNone — optional player names typed at runtime stay in memory
Flood FillNoneNoneNone
Flow FreeNoneNoneNone
Fun QuizNoneNoneNone
Lights OutNoneNoneNone
Tangram PackingNoneNoneNone
UntangleNoneNoneNone

Whiteboard and admin pages

PageStorageExternal requestsStudent-identifying data
/app/whiteboard.htmlLocal .drawsplat.json save format; optional localStorage for preferencesOnly the configured Apps Script /exec URL (if a teacher has set one) or the self-hosted MySQL backend URLOnly the data the school or district explicitly entered — e.g. student name on a turn-in. No data leaves the browser unless a backend is configured.
/admin/admin.html (Teacher Admin)Local admin preferences; admin passcode prompt held in memory onlyConfigured Apps Script /exec URL onlyAdmin reads / writes age band, parent requests, audit log, etc. — only when explicitly invoked by the admin.
/parents/index.html (Family Access Tools)NoneConfigured Apps Script /exec URL only, when a parent submits a requestThe parent submits their own name/email plus the student name they request data for. Used only to route the ticket to the school admin.
/community/ (Community Board)Sign-in token (HMAC bearer) and "last visited" timestampThe Community Apps Script /exec URL configured by the site operatorAuthor name + email on posts that the user voluntarily submitted to the board. Used for moderation routing.

Network egress declaration

By default a fresh install of DrawSplatTM makes zero outbound network requests from a widget page. Outbound requests happen only when:

No widget calls advertising, analytics, third-party-tracker, or social-network domains. The repository commit history and the inline <meta http-equiv="Content-Security-Policy"> on every page are the verifiable record.

iframe / embed posture

DrawSplatTM pages set frame-ancestors 'none' in CSP. A school portal that wants to embed a DrawSplatTM widget should run the embed in an <iframe sandbox="allow-scripts allow-same-origin"> with only the permissions the widget actually needs — never enable allow-modals, allow-popups, or allow-top-navigation unless the specific widget documents that it requires them. The portal’s own Permissions Policy should also disable camera, microphone, geolocation, payment, and usb on the embed unless the specific widget needs them.

Where this fits in the privacy story