Planet Atlas
Explore eight planets in 3D, place them in your room with AR, and look inside Earth. A native iOS app built with SwiftUI and RealityKit.
Overview
Planet Atlas is a native iOS app for exploring our solar system. Rotate Saturn and its rings, zoom into Mars, or place a planet on your desk with AR. Switch Earth to Inside mode to separate its layers and explore what sits beneath the surface.
Built with SwiftUI, RealityKit, and ARKit, this project brings native navigation, interactive 3D scenes, and Blender assets together in one codebase. The planet models and educational content are bundled with the app, so exploration works offline.
Key Features
- Eight interactive planets — Explore Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune with drag-to-rotate, pinch-to-zoom, visible zoom controls, and reset.
- A planet in your room — Place any planet on a horizontal surface through the camera. Move, resize, and rotate it, then return to the atlas.
- Look inside Earth — Select the crust, mantle, outer core, or inner core to read more. Separate the four layers and reassemble the globe.
- Adaptive native navigation — Browse a compact catalog and detail flow or a side-by-side split view as the available space changes.
- Light and dark appearance — Follow the system theme, with Liquid Glass on supported iOS releases and material fallbacks on iOS 18.
- Offline exploration — Render the bundled models locally. AR camera frames are used on device for tracking and are not recorded or uploaded.
The planet models are educational illustrations. Planet sizes, distances, and Earth's interior thicknesses are not shown to scale.
What You Can Learn
Study how a native app connects SwiftUI screens to RealityKit rendering, keeps scene state across layout changes, and handles the transition into an AR camera session. The code also shows how to keep a viewer's pinch gesture working alongside native zoom navigation.
The 3D work is included, too. Explore editable Blender files, texture sources, USDZ exports, and Python scripts that generate and validate the assets. Follow a planet from its source textures to the model bundled in the app.
The repository includes UI tests, device-check scripts, and verification notes covering navigation, planet rendering, Earth layer interactions, and room placement. These provide useful examples of testing an app where visual behavior matters as much as state.
Tech Stack
- Language and interface: Swift 6 and SwiftUI
- 3D rendering: RealityKit, with UIKit integration for the atlas viewer
- Augmented reality: ARKit horizontal-plane tracking and local room placement
- Assets: Blender projects, textures, USDZ models, and generated previews
- Tooling: Python asset generators and validators, Xcode UI tests, and device-check scripts
Run It
Requires a Mac with Xcode and an iOS 18 or later simulator or iPhone.
- Clone the repository and open .
- Select the scheme and an iPhone simulator, then build and run.
- Choose any planet to explore its surface, or choose Earth → Inside to explore its layers.
To try View in your room, run on a physical iPhone that supports ARKit world tracking. Select your signing team in Xcode and allow camera access when prompted. The simulator can show the unavailable state, but room placement needs a real camera.
The bundled models are ready to use. Blender is only needed if you want to edit or regenerate the assets; the included generators target Blender 5.2.1 LTS.
Planet Atlas is available as source code for study and continued development. App Store distribution is deferred, and the repository documents remaining checks for sustained performance and AR tracking stability.
Included with Pro Lifetime Access
Pro members get the complete Planet Atlas source code, editable 3D assets, generation tools, and project documentation through the private Code with Beto GitHub organization. Pro also includes all current and future courses and access to the private Discord community.
Get Started Today
and start exploring native 3D and AR development with Planet Atlas.
Questions? Join our Discord community or email beto@codewithbeto.dev.