A polished Apple-native unit conversion app for iPhone and iPad, built with SwiftUI + MVVM.
Units tab with search and category sectionsToolkit tab for one-input, many-output conversion within a chosen categoryUnits tab for quick switchingVersion (Build)cm <-> inchesmeters <-> centimeterskg <-> lbskg <-> gramscelsius <-> fahrenheitcelsius <-> kelvinmm <-> inchesmeters <-> feetkm <-> milesmiles <-> feetcm <-> feetlb <-> gramsgrams <-> ouncesinches <-> feettsp <-> mLtbsp <-> mLliters <-> gallonspt <-> Lqt <-> Lpounds <-> ounceskph <-> mph (defaults to kph -> mph when opened)kph <-> m/smph <-> m/spsi <-> barpsi <-> kPabar <-> kPaacres <-> hectaresacres <-> square feetsquare feet <-> square metersradians <-> degreeshp <-> kwmeters <-> yardsmL <-> cupsfl oz <-> mLConversionCatalog is the single source of truth for supported converters.ConversionRule is backed by Foundation Measurement / Unit conversions.ConversionsViewModel handles selected pair, input, swap state, search, and output.ToolkitViewModel handles category/source-unit selection and multi-output conversion rows.FavoritesStore + FavoritesPersistenceService handle local favorites persistence.SessionStateStore restores tab/search state plus last-used pair and per-pair session state.Build:
xcodebuild -scheme Conversion -project Conversion.xcodeproj -destination 'generic/platform=iOS Simulator' build
Run unit tests:
xcodebuild -scheme Conversion -project Conversion.xcodeproj -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 17' -only-testing:ConversionTests -skip-testing:ConversionUITests test
Conversion/
├── Models/
├── Stores/
├── Utilities/
├── ViewModels/
├── Views/
├── ConversionApp.swift
└── ContentView.swift