Skip to main content
← Portfolio

Asteroid Vision

SwiftUI · MVVM · SceneKit

Asteroid Vision is an iOS app to browse and filter near-earth asteroids, made possible by NASA's NEO Objects REST API. Users can explore orbital data and build a list of favorites.

Browse Hazardous Asteroids
Browse Hazardous Asteroids
Asteroid History and Orbital Data
Asteroid History and Orbital Data
Control Units
Control Units

Architecture

I built this app following the MVVM pattern. An API service was responsible for fetching asteroids, using URLSession and modern Swift concurrency such as async/await and task groups. The API service fetched the JSON objects and returned them to the view model, which handled the business logic and provided the view with data for the user interface.

Using Observation

Users can change their unit preference in the unit control center. This was handled by storing an observable object in the environment and passing it as a bindable to the control center, so a single source of truth is maintained. The user's unit selection is also stored in UserDefaults.