Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/UAnirudh/IntelliPlan/llms.txt

Use this file to discover all available pages before exploring further.

The IntelliPlan Chrome Extension brings your planner right into the browser you already use for schoolwork. It displays a live badge count of pending assignments on the extension icon so you always know your workload at a glance, and it injects a quick-access panel directly into Canvas (*.instructure.com) and StudentVue (*.edupoint.com) pages — no tab-switching required. The extension authenticates with your existing IntelliPlan account and communicates exclusively with intelliplan.tech over HTTPS.

What the Extension Does

Assignment Badge

The extension icon shows a live badge with the count of pending assignments. The background service worker polls /tasks/unified every 30 minutes via a Chrome alarm and updates the badge text and colour — red for overdue, blue for due today.

Page Injection

Content scripts run at document_idle on Canvas, StudentVue, PowerSchool, Aeries, Schoology, and several other SIS domains, surfacing an IntelliPlan panel without leaving the page.

Account Login

Sign in directly from the popup with your IntelliPlan email and password. Your token is persisted in chrome.storage.local so you stay logged in across browser restarts.

Quick Actions

View tasks, your saved schedule, and grades — all from the extension popup, backed by the same API endpoints the main web app uses.

Installing in Developer Mode

The extension ships as source in the extension/ directory of the repository. Chrome’s Developer Mode lets you load it directly without publishing to the Web Store.
1

Open Chrome Extensions

Navigate to chrome://extensions in your Chrome browser (or any Chromium-based browser such as Edge or Brave).
2

Enable Developer Mode

Toggle Developer mode on using the switch in the top-right corner of the extensions page. Three new buttons appear: Load unpacked, Pack extension, and Update.
3

Load the Extension

Click Load unpacked and select the extension/ directory from your cloned IntelliPlan repository. Chrome will immediately register the extension and show its icon in the toolbar.
4

Sign In

Click the IntelliPlan toolbar icon. The popup presents a login form. Enter your IntelliPlan email and password — the extension posts your credentials to /api/auth/login and stores the returned bearer token in chrome.storage.local under the key intelliplan_token.
5

Visit a Supported Page

Navigate to any Canvas, StudentVue, Schoology, PowerSchool, Aeries, Infinite Campus, Skyward, or eSchoolPlus page. The content scripts load automatically and inject the IntelliPlan panel.
Developer Mode extensions remain loaded across Chrome restarts. If Chrome flags the extension as “unpacked”, that is expected behaviour — it simply means the extension was not installed from the Chrome Web Store.

Manifest Overview

The extension is a Manifest V3 extension (manifest_version: 3, version 1.1.0). Key declarations from extension/manifest.json:
extension/manifest.json
{
  "manifest_version": 3,
  "name": "IntelliPlan",
  "version": "1.1.0",
  "description": "AI-powered study planning for students",
  "action": {
    "default_popup": "popup.html",
    "default_title": "IntelliPlan"
  },
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": [
        "*://*.instructure.com/*",
        "*://*.edupoint.com/*",
        "*://*.powerschool.com/*",
        "*://*.aeries.net/*",
        "*://*.infinitecampus.com/*",
        "*://*.infinitecampus.org/*",
        "*://*.skyward.com/*",
        "*://*.eschoolplus.com/*",
        "*://*.schoology.com/*"
      ],
      "js": [
        "scrapers/router.js",
        "scrapers/powerschool.js",
        "scrapers/aeries.js",
        "scrapers/infinitecampus.js",
        "scrapers/skyward.js",
        "scrapers/eschoolplus.js",
        "scrapers/generic.js",
        "content.js"
      ],
      "run_at": "document_idle"
    }
  ],
  "permissions": ["storage", "alarms", "notifications"],
  "host_permissions": [
    "https://intelliplan.tech/*",
    "https://www.intelliplan.tech/*"
  ]
}
The storage, alarms, and notifications permissions power local token persistence, periodic badge refresh, and browser notifications respectively. No tab or browsing-history permissions are requested.

Authentication Flow

The popup manages its own auth state using chrome.storage.local. The token key (intelliplan_token) and user key (intelliplan_user) are set on successful login and cleared on sign-out.
extension/popup.js (auth constants)
const BASE_URL = "https://intelliplan.tech";

const AUTH_ENDPOINTS = {
  login:    "/api/auth/login",
  register: "/api/auth/register",
  me:       "/api/auth/me",
  logout:   "/api/auth/logout"
};

const STORAGE_KEYS = {
  token: "intelliplan_token",
  user:  "intelliplan_user"
};
Every subsequent request attaches the token as a Bearer header:
extension/popup.js (API fetch helper)
async function apiFetch(path, options = {}) {
  const session = await getSession();
  const headers = {
    "Content-Type": "application/json",
    ...(options.headers || {})
  };

  if (session.token) {
    headers.Authorization = `Bearer ${session.token}`;
  }

  return fetch(BASE_URL + path, {
    credentials: "omit",
    ...options,
    headers
  });
}
credentials: "omit" is intentional — the extension communicates via bearer token only, never relying on session cookies, which keeps the auth model portable across browser profiles.
The popup has three tabs — Tasks, Schedule, and Grades — each backed by a standard IntelliPlan API endpoint. All requests require a valid Authorization: Bearer <token> header.
Loads overdue, today, and upcoming assignments for display and badge calculation. The background service worker (background.js) also polls this endpoint every 30 minutes to update the toolbar badge count and fire notifications.Response shape
{
  "overdue":   [{ "title": "Chapter 5 Reading", "due_date": "2025-06-08", "course": "AP Biology", "priority": "High" }],
  "today":     [{ "title": "Problem Set 3",     "due_date": "2025-06-10", "course": "Calculus",   "priority": "Medium" }],
  "upcoming":  []
}
The badge text is set to the sum of overdue + today items. Red badge for any overdue work; blue badge for today-only.
Returns the student’s saved AI-generated study schedule. The popup shows today’s blocks with time slot, assignment name, course, and duration. A “Generate one in IntelliPlan” link opens the scheduler if no schedule is saved.
Returns per-course grade data pulled live from the connected school platform. Displays course name, percentage, letter grade, and a colour-coded bar.
Called when the user submits the login form in popup.html. Returns a bearer token stored under intelliplan_token in chrome.storage.local.Request body
{
  "email": "student@example.edu",
  "password": "••••••••"
}

Supported School Platforms

The content scripts cover every major SIS and LMS in use:
Domain PatternPlatform
*.instructure.comCanvas LMS
*.edupoint.comStudentVue / Synergy
*.powerschool.comPowerSchool
*.aeries.netAeries SIS
*.infinitecampus.com / *.infinitecampus.orgInfinite Campus
*.skyward.comSkyward
*.eschoolplus.comeSchoolPlus
*.schoology.comSchoology
If your school’s Canvas instance uses a custom domain (e.g. canvas.myschool.edu), the content script will not auto-inject. Use the popup directly — it has full access to your tasks, schedule, and grades regardless of which page you’re on.

Options Page

The extension includes an options.html options page, accessible via right-clicking the toolbar icon → Options. Use it to configure notification preferences and manage your linked IntelliPlan account.

Build docs developers (and LLMs) love