The student-facing half of Studyhall, a white-label course platform. One build of this app serves every school on the platform: Appwrite deploys it into each customer's own project as a Site, and site variables carry the school's name and colour.
It is a TanStack Start app rendered on the server.
Students sign in, read lessons, download handouts, and sit a quiz. Results are written back with a permission that names the student, so only that student and the school can read them.
Appwrite gives every request to a site a short-lived key in the x-appwrite-key header, scoped to
the scopes the site was created with. This app reads that header and uses it for the request it
arrived on. There is no API key in its environment, nothing to rotate, and nothing to leak.
Quiz questions carry their correct answer, and the questions table grants no read permission to signed-in users. The browser only ever receives prompts and options; marking happens on the server.
npm install
cp .env.example .env # add a project ID and a development key
npm run devThe platform deploys this repository into each customer's project with createTemplateDeployment,
pinned to a release tag. See the Studyhall operator for the provisioning code.
| Setting | Value |
|---|---|
| Framework | TanStack Start |
| Adapter | SSR |
| Install command | npm install |
| Build command | npm run build |
| Output directory | ./dist |