My co-founder and I built Halo+, a mobile app for Grand Canyon University's learning platform. It reached 3,582 downloads, 14% of on-ground students, within three weeks and with no marketing budget. The university's own team had been working on a mobile app for two years. When the university reviewed our system, its CISO called the security decisions “well thought out.”
The Outcome
We spent nothing on ads. Students heard about Halo+ through campus posters, a Discord community, and conversations; I talked with more than 300 students myself. Within weeks, university IT was getting support tickets about Halo+ from students who assumed it was the official app.
Daily downloadsRunning total
App Store Connect · daily downloads
Sep 183,582 totalOct 31
Sep 20342 downloads in one dayTHIRD DAY LIVE
Oct 11Shut downDATABASE DELETED IN THE REVIEW MEETING
Go-to-Market
I also designed the launch: campus posters that each promoted one feature, the logo, a marketing site, and the App Store listing.
The Problem
Halo, GCU's learning management system, had no mobile app, no push notifications, and no public API. Students managed deadlines, grades, and professor messages through a website that didn't work well on phones.
We built a deadline dashboard with overdue alerts, reminders that could be set anywhere from seven days to six hours ahead, a full gradebook, professor messaging, and a class hub. It ran on iOS and Android from one Flutter codebase. I was responsible for design, frontend, architecture decisions, and go-to-market; my co-founder John handled backend infrastructure and API integration.
The Product
Onboarding, session sync, student ID, classes, course overview, topic detail, and the deadline view, which students requested more than any other feature.
Cost Modeling
Before writing any code, I estimated API calls and outbound data per user for best, average, and worst-case usage. The estimate came to about $0.02 per user per month, so the system would stay affordable even if the whole student body signed up.
Try It
The same model, made adjustable. Set how many students use the app, how often they refresh, and how much each session pulls, and see what the monthly bill would come to.
Refreshes a day
Each session
41 API calls · 325 KB per refresh
The free 2M calls cover 3%, or about 108 students at this usage.
Monthly bill
$87.93
$0.025 per student
Per-refresh figures are from the sketch above. Prices are Cloud Functions list prices: $0.40 per million calls after the first 2 million each month, and $0.12 per GB of outbound data after the first 5 GB. Compute time isn't included, as it wasn't in the original estimate.
Architecture
Halo rate-limited outside traffic but not traffic from the campus network, so we ran the polling from a mini PC on campus. Student passwords never reached our servers, and the frontend was kept separate from the backend so the university could replace our backend with its own and keep the app.
Request path
Validates the session and shapes responses for mobile.
Fetched per request, held in memory, then discarded.
Notification path
Throttle queue, 5 concurrent across 2,500+ users.
Session path
Copies the session token from a signed-in Halo login, so no password is stored.
Push tokens and auth refresh tokens only. No academic data.
Security Review
The fast adoption drew the university's attention, and I presented the full system to GCU's senior leadership, including the CISO, the Halo product team, and technology executives. Their main question was what data the app kept about students. It had been designed from the start to keep almost none.
Security model · as presented to the CISO
Stored
Push notification tokens
to deliver reminders
Auth refresh tokens
to keep sessions alive
Never stored
Grades & assignments
Professor messages
Passwords
Any academic record
Safeguards
Fetched per request
held in memory, then discarded
Rate-limited access
5 concurrent, on a throttle queue
Tokenized sessions
synced by extension, no password
No FERPA violation, no breach
GCU's security and legal teams found no FERPA violation, and no data was ever breached. The university still treated redistributing its data outside its official partner as a protected-data risk, so it asked us to stop offering Halo+. I deleted the database during that meeting, and the service ended that day. GCU's Assistant Vice President of Campus Technology said he believed it should become the university's official mobile app.
Validation
“Well thought out.”
He said we had avoided the mistakes he usually finds in projects like this, pointing to the tokenized storage, atomic operations, and rate limiting. He also asked for my resume.
The Stack
One Flutter codebase for both platforms, a serverless backend on Firebase, and a small computer on campus for the polling the cloud couldn't do.
Working Together
Many organizations rely on a core system that has no API and no mobile app. On a project like that, I would estimate costs before building, design the security so it holds up when the system's owners review it, and keep the architecture easy to hand over.
Start a project or email william@piehsoft.com