All work
Mobile

Roots Academy: A Small App With a Real User on the Other End

20234 min read

One of my earlier freelance projects, built before EdgeFirm, and a good reminder that not every useful thing needs to be complicated.

The actual problem

Roots Academy already had a web portal where students could check assignments, past papers, results and attendance. The problem was that it was a web portal. Not built for mobile, painful on a phone, and every student was on a phone. They didn't need a new backend. They needed the system they already had to work in someone's pocket.

The approach

Rather than building a new backend, which would have meant asking the school to migrate years of data and workflows, I built the Flutter app to talk to their existing portal directly. Same session cookie login flow, same underlying JSON endpoints the website already used. Not the cleanest architecture on paper, but it meant zero backend changes, zero migration, and the school kept managing everything the way they always had while students got a proper native experience.

What went into it

Assignment submission with file uploads, a past papers library with an in app viewer instead of forcing a download, attendance and participation charts so students could see their own trends, and in app notifications. I used Provider for state since the app didn't call for anything heavier, and added SSL certificate pinning plus reCAPTCHA on login, because it handles real student credentials and I wasn't going to be casual about that just because the app is small.

Why it still matters to me

It isn't the most technically ambitious thing on this page, but it's where I first had to think about a real non technical user. A student checking tomorrow's assignment between classes, rather than a spec. Building for the person actually using the thing instead of for the elegance of the code is a habit I've carried into everything since, AI or not.

© 2026 Bilal

All work