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.
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.
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)
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.
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.
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").
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.
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.
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.
Not built yet β deliberately, per the current handoff, since building against guessed markup risks getting it wrong:
| Item | Blocked on |
|---|---|
| Schedule reskin + Google Calendar sync | live DOM for schedule.php |
| Preregistration reskin + auto-scrape for self-advising | live DOM for Preregistration.php |
| Billing reskin | live DOM for Billing.php |
| Result/transcript reskin + auto-scrape completed courses | live DOM for Status.php |
| Profile reskin | live DOM for profile.php |
| Full persistent sidebar navigation (replacing the minimal shell) | promised UI-revamp reference / mockups |
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.