Jackson Lang · 01 · The Campus

tPortal · September 2026 – present · live

One week into university, I started building my own software for it.

I built tPortal in my first week at the University of Toronto, after running into the usual pile of academic systems. It pulls deadlines, timetable, class prep and campus events out of Quercus and ACORN and puts them on one screen, refreshed every 15 minutes. It grew into a desktop app, a mobile web experience and AI-assisted planning.

I shipped eleven releases in the first six days and had more than 50 beta users within the first month. That experiment helped lead to Armin.

tPortal week view with lectures and tutorials colour-coded by course and a class panel on the rightACORN timetable + Quercus deadlines, refreshed every 15 minutesthe next class, with its readings
The real app, recorded for the launch in September 2026.
tPortal deadlines grouped week by weekevery course on one list; the rubric is a click away
The term, week by week.
tPortal class page for Principles of Microeconomics with next class, materials and what the course is really testingwhat the course is really testing, from the syllabus
A class page.

The first week, commit by commit

121 commits · 41 tagged releasesSep 11 to Oct 6, 2026 · from the repository
09-11
09-12
09-13
09-14
09-15
09-16
09-17

2026-09-11 · 23:50Ignore build outputs; Windows smoke test logs via --enable-logging

What I did, and what the team did

Mine

  • Designed, built and shipped the desktop app; ran the beta and the releases.
  • Brand, launch posters and the social accounts.

Team

  • Built and shipped by me.

Eleven releases in the first six days (33 tagged builds). verified · Git tag history, Sep 11–16 2026.

More than 50 beta users; more than 40,000 impressions on the launch posts. verified · Internal account records (35 accounts on Oct 10 2026). Private; the count is not published.

What changed

  • Shipping every day to people you will see in lecture tomorrow is a very honest feedback loop.
  • A student tool lives or dies in the first thirty seconds after install.