I decided to solve a real-world problem by exercising both my design and development skills. I started by building a simple app which provided a daily piece of mindful running advice, tested this with users using TestFlight and then iterated on it. As I developed the app further I added in Apple Health integration, journal functionality and injury tracking.
The app was build in Swift with a number of external APIs and services. As this was my first experience coding a mobile app, I kept most of the logic within the app itself rather than creating a separate web API, although notifications are served by a node function.
Data store for users, journal entries and injuries. I used Cloudkit as it provided privacy for user data, low cost and easy integration.
Apple stores all workouts in Healthkit. I allow users to see runs that are stored on their devbcie and import them into the app.
This service acts a CMS to store running tips which comprise of quotation copy, author name and mugshot image.
Notifications are triggered using a node.js cloud function which sends messages to the Notification Service Extension. The cloud scheduler is used to automate these so they can be received at a daily interval.
These were used to log analytics and to provide communication with customers in-app.
To ensure the app was maintable, extensible and with reusable components I adopted an MVC architecture to separate out the logic and data components from UI controls.
The visual design for the app took inspiration from paper-based running journals. I used a monochrome palette with colourful highlights used to provide pops of colour. Hand-drawn underlines reinforce the journal aesthetic.