StudentM8

New here?

New event

Keeps the planner from scheduling study sessions right up against this event — e.g. 30 min after a tiring lab, or 10 min either side of a commute.

Linked documents

    Study helper

    Get an AI summary and key topics for this document, then ask for study guidance on anything you don't understand.

    Scheduling settings

    Controls the planner's "Plan my week" and the free-hours total — not any single event.

    How much a course's low running grade (Grades tab) should push its goal ahead of others for contested free time when planning your week. 0 = grades have no effect (deadlines only, today's behavior); 100 = full effect.

    How much an approaching "important" mock (flagged on the Grades tab, within 2 weeks) should push its course's goal ahead of others for contested free time. Ramps up the closer the mock gets. 0 = no effect; 100 = full effect. Stacks with the low-grade boost above.

    Used by the "Focus timer" on the Agenda's study-session widget only — independent of the max work block/break settings above, which stay the planner's own knobs.

    API keys

    Optional — set your own free key to use your own quota for a feature instead of the app's shared one. Leave a box blank and save to go back to the shared key.

    Calendar feed

    A read-only link you can subscribe to from Google Calendar, Apple Calendar, or Outlook, so your events also show up there. Anyone with this URL can view your calendar — treat it like a password, and regenerate it if it's ever shared by mistake.

    Google Calendar

    Sign in with Google to import events from one of your calendars. Read-only — nothing is ever written back to Google. Once connected, use the icon in the topbar to run (or re-run) the import.

    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 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 two 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)

    Google OAuth

    Powers every account's "Connect Google Calendar" (Settings → "Google Calendar"). 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.

    Dev inbox

    Bug reports and feature requests from every account — open ones first.

    To-do sync

    Changes made offline sync automatically once you're back online. Anything that couldn't sync stays here until you retry or discard it.

    Type at least 2 characters — ↑↓ to navigate, Enter to open, Esc to close.

    Use a template

    Quick start

    My templates

    Quick add

    Describe an event in plain English — it'll prefill a New event form for you to review before saving.

    Send feedback

    Found a bug, or have an idea? It goes straight to the developer — you'll see its status and any reply below once it's been looked at.

    Your reports

    Import timetable

    Upload a photo or PDF of your timetable — Gemini pulls out the weekly classes for you to review before anything's added.

    Import syllabus

    Upload a photo or PDF of a course syllabus — Gemini pulls out the graded assignments and exams for you to review before anything's added.

    Import from Google Calendar

    Reading your calendar…