Browse, search, and compare BRAC University course section data exported from USIS (Connect).
Live: https://connect-dumps.itzmrz.xyz/
| Feature | Description |
|---|---|
| Live data | Current semester fetched from CDN; falls back to bundled archive automatically |
| Multi-semester | Switch between Fall 2026, Spring 2026, Fall 2025, Summer 2025, Spring 2025, Fall 2024, Summer 2024 |
| Search | Real-time filter by course code, faculty name/initial, section, or schedule |
| Sort | Click any column header to sort ascending / descending |
| Faculty prediction | Suggests probable faculty for TBA sections based on historical data |
| Pagination | 50 rows per page with numbered navigation |
| Dark mode | System-aware toggle; preference persisted in localStorage |
| Responsive | Mobile-friendly with horizontal scroll and table zoom controls |
- Open
index.htmldirectly in a browser — no server or build step required. - Click a semester button to switch datasets. The current semester loads automatically.
- Type in the search bar to filter rows. Search persists when switching semesters.
- Click a column header to sort; click again to reverse.
- Use
+/−zoom buttons on mobile to adjust table scale.
index.html Entry point
styles.css All styles (responsive, dark mode via CSS variables)
favicon.ico
img.png Open Graph preview image
data/
fall-26.json Fall 2026 course dump ← current
spring-26.json Spring 2026
fall-25.json Fall 2025
summer-25.json Summer 2025
spring-25.json Spring 2025
fall-24.json Fall 2024
summer-24.json Summer 2024
backups/ Point-in-time snapshots (not loaded by the app)
js/
config.js Semester list, CDN URL, cache & pagination settings
utils.js Data normalisation, time helpers, localStorage cache
dataService.js Fetching, caching, and state management
uiController.js DOM wiring, rendering, event handling
app.js Entry point — initialises modules in order
docs/
debug-extras.md Developer debugging notes
.github/
copilot-instructions.md AI assistant context for this repo
- Place the JSON dump in
data/(e.g.data/summer-26.json). - Add an entry to
CONFIG.dataSources.semestersinjs/config.js. - Set
isCurrent: falseon the entry that was previously current. - No other changes required — semester buttons are generated dynamically.
Example:
{
id: 'summer26',
name: 'Summer 2026',
file: 'data/summer-26.json',
year: '2026',
dataFormat: 'spring25', // use 'old' for pre-Spring-2025 dumps
isCurrent: true // set false on the previously current entry
}- All logic lives in
js/. No framework, no bundler, nonpm. CONFIG.debug = trueenables verbose console output.- To add an external resource, also whitelist it in the
Content-Security-Policymeta tag inindex.html.
.github/workflows/update-active-semester.ymlruns once per day on a cron schedule and can also be triggered manually.scripts/update-active-semester.mjsfetches the CDN dump and refreshes the active archive indata/.- A new semester is detected when any sentinel course section in
ENG101:01,MAT110:01, orCSE110:01has amidExamDateshift greater than 10 days. - When that happens, the workflow writes a new
data/<semester>.json, promotes it toisCurrent: trueinjs/config.js, and commits the change automatically. - The term progression is controlled by
TERM_SEQUENCEin the workflow. It is currently set tospring,fall,summerto match the requested rule and can be changed without editing the script.
Pull requests and issues are welcome.
- Write clear commit messages.
- Follow the existing vanilla-JS style (no modules, no transpilation).
- Test on both desktop and a mobile viewport before opening a PR.