Skip to content
CAI
Software that uses CAICheck a score

AndrewHartAR/ARKit-CoreLocation

52.0

Adequate · 30 September 2026

3.1k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an iOS framework and accompanying demo application that integrates ARKit with Core Location to render GPS-based nodes and polylines within augmented reality scenes. It provides utilities for fusing AR scene positioning with location data, managing coordinate math, and visualizing points of interest with adjustable scaling and annotation features. The project also includes a comprehensive demo app for testing these behaviors, along with CI infrastructure and support for both CocoaPods and Swift Package Manager.

How it got here

2017 — Initial project scaffolding and demo app setup

9 changes.

This period established the foundational repository structure, including configuration files, documentation, and CI setup, while releasing the initial version of the ARKit+CoreLocation library with Swift 5 and SPM support. It also introduced the first demo application, configuring the Xcode workspace and migrating the UI to storyboards to provide a functional interface for testing AR location features.

2018–2019 — Initial framework release and testing infrastructure

7 changes.

This period marks the initial release of the ARKit+CoreLocation framework, introducing core components for fusing AR scene positions with GPS data and visualizing location-based nodes. Concurrently, the project established essential development tooling, including fastlane for CI integration and comprehensive unit, functional, and UI test suites to validate the new library and its demo application.

Features

Added fastlane configuration for iOS testing

Introduced fastlane setup files (Appfile, Fastfile, README.md) to enable CI integration for iOS. The Fastfile defines an 'ios test' lane that runs CocoaPods and Scan to execute unit tests, addressing the lack of CI support for the ARCL project.

fastlane · high confidence

Initial demo app release with AR scene view and location-based UI

The ARKit+CoreLocation demo application is now available, providing a complete user interface for testing AR location features. The app initializes a SceneLocationView to render 3D anchors and points of interest in an AR session, while a SettingsViewController allows users to toggle between map and AR views, search for locations, and request directions. The UI includes a table view for displaying search results with distance calculations and a dedicated view controller for unsupported iOS versions, ensuring the app gracefully handles devices without ARKit support.

ARKit+CoreLocation · high confidence

Initial project structure and demo app setup

The Xcode project is established with a new file structure, introducing a 'Node Demos' application target that includes an ARCLViewController, PickerViewController, and associated storyboards. The project is configured to integrate the ARKit+CoreLocation library via CocoaPods and includes dedicated test targets for both the library (ARCLTests) and the demo app (Node DemosTests/UITests).

ARKit+CoreLocation.xcodeproj · high confidence

Initial release of ARKit+CoreLocation framework

This change introduces the ARKit+CoreLocation (ARCL) library, enabling the placement of Core Location-based nodes and polylines into ARKit scenes. It provides a \SceneLocationView\ to manage the AR session and location updates, a \SceneLocationManager\ to fuse AR scene position with GPS data, and various node types like \LocationNode\ and \LocationAnnotationNode\ for visualizing points of interest. The framework includes extensions for coordinate math, scaling schemes for distance-based node sizing, and utilities to handle rendering order and flicker reduction in SceneKit.

Sources · high confidence

New Node Demos app for ARCL configuration and visualization

Added a new iOS demo application that provides a user interface for testing and visualizing ARCL node behaviors. The app includes a main menu to select specific demonstration scenarios, such as placing a single node, stacking nodes at various altitudes, creating fields of nodes or labels, and dynamically updating node content. It also exposes configuration controls for adjusting annotation height factors, location estimate methods (Core Location only vs. most relevant estimate), AR tracking types, and scaling schemes, allowing users to observe how these settings affect the augmented reality experience.

Node Demos · high confidence

Behavioural changes

Added Xcode workspace configuration

The project now includes an Xcode workspace configuration that references the main project file and enables the standard IDE workspace check to prevent build warnings. This change establishes the necessary workspace structure for the project, aligning with the removal of the Cocoa Lumberjack dependency mentioned in the commit history.

ARKit+CoreLocation.xcodeproj/project.xcworkspace · medium confidence

Demo app UI migrated to Storyboards

The ARKit+CoreLocation demo app now uses LaunchScreen.storyboard and Main.storyboard for its user interface instead of hardcoded UI. This introduces a main view controller with an AR scene view, an overlaid map, and info labels, along with a settings screen that allows toggling map visibility, points of interest, and route directions, and includes a search interface for entering addresses.

ARKit+CoreLocation/Base.lproj · high confidence

Updated ARCL pod support files to version 1.3.1

The CocoaPods support files for the ARCL framework have been regenerated and updated to version 1.3.1. This change ensures that the build configurations, module maps, and framework installation scripts for the ARCL pod and its dependent projects (including ARKit+CoreLocation and Node Demos) are synchronized with the latest podspec, allowing the demo projects to build correctly out of the box.

Pods/Target Support Files · high confidence

Updated Pods project to Xcode 11.2 settings

The \Pods/Pods.xcodeproj\ project file has been regenerated to reflect Xcode 11.2 recommended settings, including an update to the \LastUpgradeVersion\ from 10.2 to 11.2. This ensures the CocoaPods workspace configuration aligns with the newer Xcode version, resolving potential build scheme or compatibility issues for developers using the updated toolchain.

Pods/Pods.xcodeproj · high confidence

Updated Xcode scheme configuration for version 11.2

The project's shared Xcode scheme has been updated to target Xcode 11.2 (LastUpgradeVersion 1120). This change ensures that build, test, launch, profile, analyze, and archive actions are correctly configured for the newer Xcode version, resolving issues with workspace schemes and enabling the previously failing unit tests to run.

ARKit+CoreLocation.xcodeproj/xcshareddata · high confidence

Workspace now uses CocoaPods for dependency management

The project has been refactored to manage dependencies via CocoaPods. A new workspace file has been created to include both the main project and the generated Pods project, ensuring that dependencies are resolved through the pod system rather than being directly referenced in the project settings.

ARKit+CoreLocation.xcworkspace · high confidence

Test coverage

Added UI test suite for Node Demos app; Added initial test suite for Node Demos; Added unit tests for CLLocation extensions.

Dependencies

Initial release of ARCL 1.3.1 with Swift 5 and SPM support

The ARCL library is now available as version 1.3.1, supporting iOS 9.0 and Swift 5. This release introduces official Swift Package Manager support via a new Package.swift manifest and establishes a CocoaPods structure with a dedicated ARCL.podspec. The project also includes a Gemfile and Gemfile.lock to manage development dependencies, specifically bundler, cocoapods (1.7.2), and fastlane (2.126.0).

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and documentation

This change establishes the foundational repository structure by adding essential configuration and documentation files. It includes a comprehensive .gitignore for Xcode, Swift Package Manager, and CocoaPods artifacts; a .swiftlint.yml configuration file to enforce code style rules; a .travis.yml file to enable continuous integration via pod lib linting; and a LICENSE file adopting the MIT license. Additionally, it provides a detailed changelog.md tracking versions from 1.1.0 to 1.3.1, a Japanese translation of the readme (readme.jp.md), and an expanded English readme.md that includes build badges, installation instructions for various package managers, and usage examples for the ARKit-CoreLocation library.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 58 → 52 (-6.4)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 97 → 97 (+0.0)
  • Architecture 81 → 92 (+10.8)
  • Maturity 49 → 49 (+0.0)
  • Readiness 47 → 32 (-15.2)
  • Security 84 → 89 (+5.1)

Resolved (2)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

New (5)

  • Coverage not measured — Swift suite
  • High CVE: [GHSA redacted] (Gemfile.lock)
  • Low cohesion: CLLocation (LCOM4 4) (Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift)
  • Proliferation of delegates: SceneLocationView exposes four distinct delegate properties. While they cover different concerns (touch, tracking, location, estimate), the naming convention is inconsistent (some are specific to the view's internal components like 'Estimate', others are generic). More critically, 'SceneLocationViewDelegate' is a generic name that likely overlaps with standard ARSCNViewDelegate responsibilities or general scene updates, creating confusion about which delegate handles which lifecycle event.
  • Redundant data access: SceneLocationView provides a method to retrieve the CLLocation from a LocationNode, but LocationNode already exposes the location directly as a public property. The method adds no value and duplicates the property access.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

AndrewHartAR/ARKit-CoreLocation was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit c74634de4313183e281b323941a5d51fcd165533 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.