Documentation

ULAB Student Companion

A Chrome side-panel extension for ULAB students on the student URMS portal (urms-online.ulab.edu.bd) β€” a light visual reskin plus a self-advising checker, built the same way as its sibling project, ULAB Faculty Companion.

This extension is under active development. Only the login and home pages of the student portal have been mapped so far (reference-html/login.html, reference-html/dashboard.html) β€” schedule, billing, preregistration, results and profile pages are not yet reskinned or scraped, and a further UI-revamp reference is expected. See Roadmap below.

πŸ—οΈ Architecture

Same shape as ULAB Faculty Companion: a plain MV3 Chrome extension, no build step, everything running client-side against the student's own already-logged-in urms-online.ulab.edu.bd session β€” no third-party server involved anywhere.

manifest.json          MV3 manifest β€” side_panel + host_permissions
background.js          service worker: opens the side panel on icon click
sidebar/                side panel shell (feature rail + router)
features/
  common/wizard.css       shared step/card/form styling
  shared/                 ulab-dashboard-shell.js β€” cloak/theme/scrape plumbing
  login/                  modern login overlay (index.php, logged out)
  home/                   modern home reskin (index.php, logged in)
  advising/                self-advising rule engine + side-panel UI
docs/
  index.html              this file
  privacy-policy.html
  catalogues/*.js          course/prerequisite data (shared with faculty project)

Feature registration

Each side-panel feature registers itself onto window.ULAB_FEATURES with { id, icon, title, subtitle, mount(container) } β€” sidebar/sidebar.js is a generic router over that array, copied verbatim from the faculty project since the pattern is entirely project-agnostic.

The dashboard shell

features/shared/ulab-dashboard-shell.js is intentionally much smaller than its faculty-companion counterpart. That version reskins a modern Bootstrap/ASP.NET site with a full persistent sidebar replacing the stock nav. This student portal is 2005-era table-layout HTML with no such structure β€” and a UI-revamp reference is expected separately β€” so for now the shell only owns what's safe regardless of that future design: the cloak/uncloak anti-flash trick, theme persistence, a small "Modern UI" toggle, and a central scrape of the semester/student/adviser header line every dashboard-style page shares.

Defensive page matching

Unlike the faculty portal, login and the logged-in Home page can both resolve at the same URL on this site depending on session state. Both content scripts therefore check for the actual DOM they need (a login form's studentID/password inputs, or #menubar) before doing anything, and cleanly no-op otherwise β€” matching the approach the handoff notes call for ("matched defensively... check for presence of the login form / absence of #menubar").

🧩 Features

πŸ” Modern login overlay Live

Draws a modern split-screen layout over the stock table-based login form, without touching the real <form method="POST" action="/index.php"> β€” a mirrored input just relays keystrokes into the real studentID/password fields and clicks the real submit button.

🏠 Modern home reskin Live

Light CSS polish over the Home page's dashboard link table, plus a small summary card (semester, your name/ID, adviser name & email) rendered from data scraped out of the page's own header sentence β€” the original sentence stays in the DOM, just visually superseded.

πŸŽ“ My Advising Check Live (manual input)

The self-serve, first-person version of the faculty companion's Student Advising feature. Same rule engine β€” prerequisite violations, labs registered without their theory course, retakes of previously-failed courses, and per-category degree-progress credit gaps β€” reusing the exact same catalogues/*.js course data (verified byte-identical to the faculty project's copy).

Manual input for now: there's no known page yet that exposes a student's own completed-course history or in-progress registration in scrapeable form (only login + home have been handed off) β€” you currently paste in your grades and this semester's course list by hand. See Roadmap.

πŸ—ΊοΈ Roadmap / TODOs

Not built yet β€” deliberately, per the current handoff, since building against guessed markup risks getting it wrong:

ItemBlocked on
Schedule reskin + Google Calendar synclive DOM for schedule.php
Preregistration reskin + auto-scrape for self-advisinglive DOM for Preregistration.php
Billing reskinlive DOM for Billing.php
Result/transcript reskin + auto-scrape completed courseslive DOM for Status.php
Profile reskinlive DOM for profile.php
Full persistent sidebar navigation (replacing the minimal shell)promised UI-revamp reference / mockups
Once Status.php and/or Preregistration.php HTML is available, the plan is to add content scripts for those pages (same defensive text-matching pattern as home-ui-content.js) that scrape a student's own completed-course/registration data into the same shape features/advising/self-advising.js's analyzeSelf() already accepts β€” no changes needed to the rule engine itself, only a new data source feeding it.