High school mobile app


When I was in high school (2015-2017), I wrote the school’s official mobile app for iPhone, Android, and Windows Phone. Its purpose was to keep students updated on news and school activities. I wrote it in C# with a Xamarin UI and an ASP.NET backend running in Azure. It was published in the App Store, Google Play, and the Microsoft Store.

newsarticleresourcesbulletinbrookclubs

Mobile app

The app served as a central place for students to get information about the school. The news section contained articles about recent events and student activities. The bulletin kept students updated on upcoming events and deadlines. There were also sections for a student journal, club directory, and school resources.

The app was implemented natively on each platform for the best user experience. The UI had to be implemented separately for iPhone, Android, and Windows Phone, using each platform’s native UI framework. I previously tried making a hybrid app with HTML, CSS, and JavaScript, and later Xamarin.Forms, but found they were unacceptably sluggish. I leveraged MvvmCross to assist with the MVVM architecture which offered XAML-style ViewModel bindings for each platform.

Backend

All information in the app came from external sources including a few websites and Google Docs. The app originally scraped these sources directly, but this approach was slow and unreliable. For example, images were often over 6 megabytes and took a long time to load. There was also a risk that sources would be taken down, which did eventually happen.

To overcome these challenges, I built a backend in ASP.NET Core running in Azure. The backend periodically crawled and scraped the external sources and transformed the data into a query-friendly format. Data was stored in a SQL Server database using Entity Framework as the ORM. Images were compressed and stored in Azure Blob Storage. All data was made available to the app through a REST API.

Current state

When I graduated, there were no other students familiar with programming who could maintain the app. The external sources were taken down due to policy changes and so the app stopped receiving updates. It was eventually taken down.

I was invited to the Calgary Board of Education’s main office to speak with one of their superintendents and Directory of Information Technologies. We discussed the possibility of rolling the app out to all schools in Calgary, but nothing came of it.