Mobile app development

A student mobile app, and the API and push notifications behind it, for universities in Southern Africa

Client
Higher-education software company
Industry
Education
Services
Mobile app, custom software
Timeline
2023–2024

In numbers

  • 81API endpoints, every one documented in OpenAPI
  • 1React Native codebase for iOS and Android
  • 9 monthsfrom the first endpoint to the complete app API

The problem

Everything a student needed was already in the student information system: grades, transcripts, fees, a wallet, attendance and messages from their institution. But it was built for desktop browsers, and there was no API for an app to use.

The app had to serve several institutions from one codebase, and the API had to live inside a large existing platform without disturbing the web app staff relied on every day.

What we built

We added the API as a self-contained plugin inside the existing platform: token sign-in, profile, fees and wallet, grades and transcript PDFs, attendance, exemptions and messages. Every endpoint is documented in an OpenAPI (Swagger) spec, with a schema for each response. Payments open the platform’s existing payment pages inside the app, signed in with the student’s token, instead of rebuilding every gateway.

Push notifications go out through AWS Pinpoint to every device a student is signed in on. A small registry service tells the app which institutions it can connect to. The app itself is built in React Native, so one codebase serves iOS and Android.

Our part

Our engineers built the React Native app’s front end, the API with its documentation and tests, push notifications and the institution registry. The student information system the app connects to was built and run by the client’s team.

Built with

  • React Native
  • Ruby on Rails
  • JWT
  • OpenAPI (rswag)
  • AWS Pinpoint

Have a process like this one?

Tell us what it is. Within 2 business days we'll reply with whether it needs custom software, an AI workflow or an agent, and roughly what it would take.