In high school, I was tasked with writing the school's mobile app. Its purpose was to keep students updated on the latest news and school offerings. After multiple iterations, the app was finally released for Android, iOS, and Windows Phone. The app was written natively on each platform leveraging Xamarin to bring the power of .NET to mobile devices. The app was serviced by a backend running in Azure which was responsible for scraping multiple data sources, packaging the content, and making it available through a REST API.
The app consisted of multiple pages with both lateral and hierarchical content navigation. The news page displayed the latest updates from the school which primarily consisted of photographs from recent events. The Bulletin contained information about upcoming and ongoing information on events and deadlines. There were also pages for student posts, clubs, and resources.
Originally the app pulled and formatted content from multiple external sources directly but it quickly became apparent that this approach had too many drawbacks to be feasible. Images from the original sources were upwards of 6 megabytes each and took excruciatingly long to load, not to mention the memory implications. There was also the issue of keeping content available should there be any issues with the external sources (which did actually happen).
The backend was composed of an ASP.NET Core server connected to a SQL Database with Entity Framework and image storage with Azure Blob storage, all running in Azure. The server was responsible for periodically scraping, parsing, and formatting data from multiple external sources then making it available through a REST API. Referenced images had to be downloaded, resized, and heavily optimized for mobile which reduced some images from over 6 megabytes to under 200 kilobytes with no noticeable differences. HTML pages had to be tailor parsed then packaged for Entity Framework. Some pages could be converted to objects while others were left as heavily modified HTML.
Working on this project was a tremendous learning experience but also a lot of work. It took almost two years to complete with multiple rewrites and changing requirements. There were some stretches where I would arrive home from school and work a further 9 hours. Unfortunately, just after release, the external sources were changed, effectively rendering the app stale. The data is still available on the backend so the app still makes a nice showpiece.