STEMpump for iOS, or the STEMpump App is an app to provide STEMpump content in a new experience. I built the first version in April 2020, and now we're on Version 4.
Version 4 brings a whole rebuild and redesign to the app, with improvements in content, overall quality, and massive feature additions and updates. I developed the app primarily with SwiftUI, using other technologies for features to bring parity with STEMpump.org, its web counterpart.
The app till this point was always behind the website in terms of content and features, so a big goal was to make sure there was 1:1 parity between both, so there's no difference in content — just experience.
Being on iOS means that there are new boundaries and rules as indicated by Apple's Human Interface Guidelines — so how do we design an app that feels "STEMpump" but still acts/reacts like other apps?
Human Interface Guidelines↗The prior version of the app had many features students wanted that we couldn't deliver. With the new app, can we implement all of these and then some more? To what extent can we add functionality without negatively impacting the learning process?
In prior versions, navigation was linear and in one direction. With the amount of functionality and potential paths a user could go in the new version, I redesigned how navigation worked from the ground up.
A new tab bar has main views for the user to access anytime. A new navigation bar system provides the user with meaningful context and available actions.
One of our bigger new features is Content Traversal. Users can now go to the next lesson directly in the lesson view itself. In the past, users would have to close out of the lesson and open the next one. With this new update, there's no break in the learning.
Even more, users have access to the entire chapter and can even jump to the surrounding chapters.
To reinforce the content available in lessons, we added Quizzes and Projects. Students can take quizzes that involve multiple choice and text-based questions to test their knowledge. They can also build projects for hands-on learning based on what they previously learned.
Hints and a "quick glance" of the solution are available to see if you're on the right track. (Similar to flipping the page really quickly.)
With FigJam, I could plan navigational paths and broader data flows. It helped me stay on track and ensure that I didn't forget any significant user action pathways.
With the all-new Continue Learning widgets, students can see their most recent content and jump back into it. They work in real-time, so as you learn naturally, they'll update alongside you.
Like STEMpump.org, a brand-new Search tab allows students to search across STEMpump from anywhere. Built with Algolia, our Universal Search system uses ML and NLP to search courses, camps, and subjects.
Don't worry about misspelling or using similar phrases — AI Dynamic Synonym Suggestions help everyone find exactly what they're looking for.
New with this update is the inclusion of STEMpump Camps. Users can register for camps and watch previous camps.
It's the same great experience but designed for iOS. You can use Resources from the camp, and even jump between sections in the camp itself. Registration is done natively, using APIs developed for STEMpump.org.
With Continue Learning, jump back into your most recent lessons, quizzes, and projects. On the Discover tab, you'll see all of your recently viewed items. And if you're in a course, your current lesson is bookmarked, so you can jump directly into it. Widgets contain shortcuts back here.
Use the all-new Favorites to save specific courses, lessons, and camps! They all appear in the Favorites view, ready for you to get back into it!
Even better, the system automatically detects old CoreData Favorites from prior versions and lets you add them to the new Favorites.
When you register for a camp, your registration is saved on your device, and the app shows you when your camp is starting. After camp, you'll be able to see your registrations on the Discover and Camps tabs.
SwiftUI is a declarative UI framework from Apple. While it's still a bit in infancy, we can speed up development time and iterate quickly. This combined with a few UI Kit fixes allowed me to create a well-polished app and to follow view/component design from our website.
SwiftUI Website↗Realm is an open-source mobile database and powers some of the best features in the app. Its main purpose is Favorites, but it also sends data to Widgets and the Continuity feature. It's great, since we can build off of it over time.
Realm Website↗Sanity.io is a unified content platform that enables us to manage and organize all content available on STEMpump. By using Sanity.io as our CMS, students benefit from our global CDN and data pipeline. Since Sanity.io isn't specifically designed for SwiftUI, I developed a custom networking function to work with our database.
Sanity.io Website↗Learn live with STEMpump Camps. Join free STEAM-based video bootcamps, ask questions, and discover something new.
Learn more↗