The Platform · how it works
Platform architecture
What each page does, what the platform stores, where every piece of data lives, and which page reads or writes it.
1. The big picture
The website is only files; it has no server of its own. Every page talks directly to Firebase: it signs in (students and teachers invisibly, the content team with email and password) and reads and writes the Realtime Database over one live connection. Changes appear on other screens within a fraction of a second.
2. Data map: what is stored, and who reads or writes it
R the page reads it W the page writes it RW both. All of this lives in the Firebase Realtime Database (in Demo mode, in the browser's own storage instead).
Students are anonymous everywhere: a name like "Blue Falcon 7" only identifies someone inside one game. No email, phone or real name is stored for students.
3. A live game, step by step
4. Why it scales
Built in
- Split question bank: every question and learning outcome has a grade + subject key with a database index; pages load only what they show.
- Catalog: a small outline rebuilt automatically after every import, approval or edit.
- Small live traffic: phones listen to the current question and their own score only.
- Date-indexed reads: leaderboards and Insights download only the chosen period; the review queue only the chosen status.
- Clean-up: old live-game records can be deleted from the admin portal; leaderboards and Insights keep their own copies.
- Stable IDs: question IDs never change, so reports and exports stay valid for years.
- One design file (css/theme.css) and one settings screen (admin portal) instead of edits across many files.
Limits to plan for
- Free Firebase plan: 100 devices connected at the same time (about 2–3 classes playing at once), 1 GB stored, 10 GB downloaded per month. The pay-as-you-go plan raises this to 200,000 connections.
- Insights read raw answer rows. Beyond roughly a million answers per period, switch to daily summaries or export to Google BigQuery.
- No accounts: students can't be followed across games, and the answers in the bank can be read by anyone who knows how. Add accounts + Cloud Functions when needed.
5. Where files come from
| What | From | Used by |
|---|---|---|
| Pages, styles, scripts, sample lesson | Your website (e.g. Firebase Hosting) | All pages |
| Fonts (Baloo 2, Figtree) | fonts.googleapis.com | All pages (set in css/theme.css) |
| Firebase SDK (sign-in + database) | www.gstatic.com | All pages, only when Firebase is configured |
| QR code maker | cdnjs.cloudflare.com | host.html (lobby) |
| Excel reader and writer (SheetJS) | cdnjs.cloudflare.com | admin.html, insights.html |
| Office.js (talks to PowerPoint) | appsforoffice.microsoft.com | addin.html (the PowerPoint add-in) |
| Browser storage | The device itself | Rejoin after refresh (play), sound settings, "My suggestions", Demo mode data |