Skip to content

aravinth-kanesh/uni-results

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

University Results Calculator

A lightweight browser app for tracking your degree average as you go, with a running weighted average (RWA) that updates the moment you add a grade.

No install, no build step - just open index.html.

Screenshot of the app showing RWA, year averages, target analysis, and what-if


What it does

  • Tracks module grades across any number of years, each with configurable credit weightings
  • Computes a running weighted average normalised to the years that have data (so if you've only entered Year 2 grades, the RWA reflects Year 2 alone, not a half-baked weighted sum)
  • For each target grade (default: 70%, 75%, 80%), shows the average you need across all remaining credits to hit it
  • What-if: type a hypothetical grade and see your projected final RWA instantly
  • Lets you name each module and edit grades in place without deleting and re-adding
  • Undo accidental deletions with a dismissible toast
  • Export your grades as CSV or JSON, and import a previously exported JSON file to restore or move between browsers
  • Persists everything in browser local storage - grades survive page refreshes
  • Dark mode toggle in the header, with preference saved across sessions

How to run

open index.html

Or double-click it in Finder. That's it.

How the RWA is calculated

Each year has a weighting (e.g. Year 2 = 40%, Year 3 = 60%). The RWA is the weighted average of the year averages, normalised by the total weight of years that have any grades entered:

RWA = Σ(weight_i × year_avg_i) / Σ(weight_i)

where the sums are only over years with at least one grade. This means the RWA is always a meaningful percentage, not a partial weighted sum.

The required average calculation works backwards: given how much of the degree is already locked in, what average do you need across all remaining credits (across all years) to reach the target?

The what-if calculation works the other way: fill every remaining credit with a hypothetical grade and compute the resulting RWA across all years.

Settings

Click Settings to change:

  • Year weightings, total credits, and custom labels per year (e.g. label Year 2 as "2023/24"); years can be added or removed - useful for integrated masters, medicine, or dentistry courses
  • Grade boundaries for First, 2:1, 2:2, and Third class (defaults: 70/60/50/40)
  • Target grades shown in the analysis panel
  • Export your data as CSV or JSON, and import a JSON backup to restore grades or switch browsers

Press ? anywhere in the app to open Settings without reaching for the mouse.

Weightings don't need to sum to 100. Settings are saved in local storage alongside your grades.

Project structure

index.html   - app shell and settings modal
style.css    - all styling, no framework
app.js       - UniResults class + UI logic

Customising for your course

The defaults are Year 2 (40%) and Year 3 (60%), each with 120 credits. You can change any of this at runtime via Settings without touching the code, or update the defaults in app.js:

const DEFAULT_STATE = {
  weightings: { 2: 0.4, 3: 0.6 },
  totalCredits: { 2: 120, 3: 120 },
  ...
};

About

Browser-based grade tracker for UK university degrees. Running weighted average, target analysis, and what-if projections - no install, no build step

Topics

Resources

Stars

Watchers

Forks

Contributors