User management
Create, promote/demote, suspend/block, and remove accounts. 🚫
suspends or blocks an account — denies login and signs out any
already-open session immediately, reversible any time. Deleting an
account permanently deletes everything it owns — courses, events,
documents, goals, and to-dos.
API usage
Successful Gemini/OpenWeather/OpenRouteService requests, per account — including requests against an account's own key (gear icon → API keys), called out inline as "(N own key)" so they're still attributed to that account rather than disappearing from the count. The totals below cover only the shared key specifically — the number that actually matters for quota risk, since own-key requests don't touch it.
| Account |
Gemini (today) |
Gemini (all-time) |
Weather (today) |
Weather (all-time) |
Travel (today) |
Travel (all-time) |
No API requests logged yet.
Google OAuth
Currently unused — everyone's "Google Calendar"
section in Settings now uses a simpler pasted-link method
instead (no admin setup needed, see README.md). This OAuth path
still works end-to-end if set up here, kept for a future session
that wants its real deletion-detection back; it's just not
wired into Settings' UI right now. One client for the whole
app — from a free Google Cloud project: enable the Calendar
API, configure the OAuth consent screen (External, scope
.../auth/calendar.readonly, add test users), then
create an OAuth Client ID (type "Web application") with both
http://127.0.0.1:8788/api/google-calendar/oauth/callback
and https://studentm8.uk/api/google-calendar/oauth/callback
as authorized redirect URIs.