The all-in-one student productivity hub. SEQTA · Microsoft 365 · AI Notebooks · Flashcards · your Claude subscription — in one beautiful desktop app.
Windows · macOS · Linux · built with Electron + React + TypeScript
SchoolMod started life as a browser extension that patched school websites. 2.0 is a complete ground-up rebuild — a native desktop app that brings the tools students actually use into one clean, fast, private workspace.
Everything runs locally on your device. Your notes, decks and credentials never touch a SchoolMod server (there isn't one).
| 🏠 Dashboard | Your day at a glance — greets you by your real name, next lesson, assessments due, cards to review, quick actions. |
| ✨ AI Assistant | A streaming study chat powered by your own Claude subscription. One click installs Claude Code and signs you in — no wrapper or API key to configure. |
| 📓 Notebooks | A private NotebookLM. Drop in PDFs, Word docs or notes and chat with them — answers are grounded in your sources with inline citations. One-click summaries and study guides. |
| 🃏 Flashcards | A Gizmo-style flashcard engine. Generate cards from any topic or your notes with AI, then review them with proven SM-2 spaced repetition. |
| 📅 SEQTA | Your live timetable, assessments, homework and notices — plus your name and student photo in the corner. Signs in through Microsoft SSO and reads the SEQTA JSON API directly. |
| 🔷 Microsoft 365 | One-click launch for OneNote, Word, Excel, PowerPoint, Teams, Outlook, OneDrive & To Do, plus your recent OneDrive files via Microsoft Graph. |
| 🧮 Mathspace | Launch Mathspace and get step-by-step worked solutions from your AI tutor, with a practice streak tracker. |
| 🎓 Education Perfect | Launch EP and get an AI study coach that builds a revision sheet with practice questions for any topic. |
| 🔔 Bell times | Live current-period tracker with a countdown to the next bell — ported from the original SchoolMod repo, including Trinity's Tuesday and Friday variants. |
| ⌘ Command palette | Ctrl/⌘+K to jump anywhere or fire an action. |
| ⏱️ Focus · To-do · Scratchpad | A Pomodoro timer tracking daily focus minutes, a task list, and an auto-saving notepad. |
| 🎨 Polished & yours | Light/dark themes, 8 accent colours, custom frameless window, keyboard-friendly. |
This is a new desktop app, developed alongside the original browser-extension repo — nothing from main has been removed. Enhancements that belong in a study tool (bell times, Education Perfect, Mathspace, SEQTA, school profiles) have been rebuilt natively here.
The predecessor's quiz auto-answer scripts (AutoBOT, Kahoot/Blooket, hw-bot.html), the Education Perfect answer-extraction notes, the Mathspace shop/avatar GraphQL overrides, and the FortiGuard filter bypass are deliberately not carried over — they do your schoolwork for you, unlock paid cosmetics, or evade school network controls. They remain untouched on the original branch.
Grab the latest build from the Releases page:
- Windows —
SchoolMod-2.0.0-Setup.exe(recommended — launches in well under a second) orSchoolMod-2.0.0-Portable.exe(no install, but self-extracts ~100MB on every launch — expect several seconds each time, even after the first run) - macOS —
SchoolMod-2.0.0-arm64.dmg(Apple Silicon) /-x64.dmg(Intel) - Linux —
SchoolMod-2.0.0.AppImage
Builds are currently unsigned, so Windows SmartScreen / macOS Gatekeeper will warn on first launch. On Windows choose More info → Run anyway; on macOS right-click the app → Open.
Open Settings in the app to connect each integration. All are optional — use what you want.
One click. In Settings → Claude AI (mode Claude Code · one-click), hit Connect Claude. SchoolMod:
- installs Claude Code (
npm i -g @anthropic-ai/claude-code) if it isn't already, - runs the login and opens the authorisation URL in your browser,
- then drives Claude directly through the CLI with your subscription — no server, no API key.
Advanced: the OpenAI wrapper mode still works if you'd rather point at a running
claude-code-openai-wrapper.
Three ways to connect, chosen in Settings → SEQTA:
- SSO (recommended). Enter your school portal URL, email and password. SchoolMod signs in through Microsoft SSO using a bundled Python helper (needs Python with
requests+beautifulsoup4), then reads the SEQTA JSON API directly — giving you your real name, student photo, timetable, assessments, homework and notices. If the HTTP login can't complete, it automatically falls back to a headless Puppeteer browser login. - MCP server. SchoolMod acts as an MCP host and launches the Seqta-MCP-Server. Point it at how to run the server and hit Connect & test.
- Direct login. For non-SSO schools: portal URL + username/password. The password goes straight to your school's server; only the session cookie is kept locally.
- Register a free public-client app in Azure / Entra ID with device-code flow enabled.
- Paste the application (client) ID into Settings → Microsoft and click Connect — you'll get a code to enter at microsoft.com/devicelogin.
npm install # install dependencies
npm run dev # launch the app with hot-reload
npm run build # type-check-free production bundle (main + preload + renderer)
npm run build:win # package Windows installer + portable exe
npm run build:mac # package macOS dmg + zip (must run on macOS)Windows build note: electron-builder unpacks a
winCodeSignhelper that contains macOS symlinks. If you hit "Cannot create symbolic link", either enable Windows Developer Mode (Settings → For developers) or runnode scripts/seed-wincodesign.mjsonce. CI runners are unaffected.
- Electron + electron-vite — desktop shell & bundling
- React 18 + React Router + Zustand — UI
- Tailwind CSS — styling & theming
- Claude Code CLI (driven via
claude -p --output-format stream-json) — the AI, using your subscription - OpenAI SDK — optional wrapper mode
- @modelcontextprotocol/sdk — SchoolMod as an MCP host (SEQTA MCP option)
- puppeteer-core — headless SEQTA login fallback (uses your system Chrome/Edge)
- pdfjs-dist + mammoth — document ingestion
- Pure-TypeScript BM25 retrieval + SM-2 scheduling — no cloud, no vector DB
src/
├── main/ Electron main process
│ ├── index.ts app lifecycle, window, CSP
│ ├── ipc.ts typed IPC handlers
│ ├── store.ts local JSON persistence
│ └── services/ claude · claudeCli · seqta · seqtaDirect · seqtaPuppeteer · mcpClient · notebooks · rag · flashcards · graph
├── preload/ secure contextBridge API (window.api)
├── shared/ types & IPC channel names
└── renderer/src/ React app
├── pages/ Dashboard, Assistant, Notebooks, Flashcards, Seqta, Microsoft, Mathspace, EducationPerfect, Settings
├── components/ TitleBar, Sidebar, UI kit
├── lib/ markdown, helpers
└── store/ app/theme state
resources/ seqta_session.py (bundled SSO helper)
SchoolMod is a study productivity tool. It does not, and will not, automate quizzes, bypass web filters, or do your assessments for you. Its predecessor's auto-answer bots and filter-bypass tools were intentionally not carried over.
MIT © ZDStudios