krz/domain-dig

an ios app for DNS & SSL analysis

clone: git clone https://gitbay.org/krz/domain-dig.git

v5.0.1:

040000 .githooks/
040000 .github/
040000 Docs/
100644 DomainDataPortabilityService.swift67403
040000 DomainDig.xcodeproj/
040000 DomainDig/
040000 DomainDigShareExtension/
040000 DomainDigTests/
040000 DomainDigUITests/
040000 DomainDigWidget/
100644 DomainInspectionService.swift35860
100644 DomainReportBuilder.swift40384
100644 DomainReportExporter.swift33420
100644 LICENSE1074
100644 LocalAPIContract.swift1798
100644 LocalAPIModels.swift1046
100644 LocalAPIService.swift35142
100644 LookupSnapshot.swift6450
100644 README.md5480
100644 RELEASE_ROADMAP.md20275
100644 SECURITY.md947
040000 Scripts/
040000 Shared/
100644 SyncedProducts.storekit5675

DomainDig

Quality Gate Status Security Rating Reliability Rating Maintainability Rating License: MIT

App Store Badge

DomainDig is a local-first iOS domain inspection toolkit for DNS, web, ownership, monitoring, reporting, and audit workflows. The app gathers a point-in-time domain snapshot, normalizes it into a canonical DomainReport, and keeps user data on device unless the user exports, shares, or syncs it.

Features

Data And Privacy

DomainDig stores local app data in on-device persistence. Backup exports can include tracked domains, lookup history, audit sessions, workflow definitions, monitoring configuration, monitoring logs, app settings, and cached feature metadata. Imports are processed on device.

Network inspection requests are made only to perform the requested domain checks or configured resolver lookups. The app does not require a hosted DomainDig backend.

Development

Requirements

Getting Started

  1. Clone the repository.
    git clone https://github.com/zerolabsco/domain-dig.git
    
  2. Open DomainDig.xcodeproj in Xcode.
  3. Select the DomainDig scheme.
  4. Build and run on a simulator or device.

Useful Checks

xcodebuild -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' build

The app and local API share the canonical report pipeline through DomainInspectionService, DomainReportBuilder, and DomainReportExporter. The Local API's endpoints, response envelope, and v1 compatibility policy are documented in Docs/local-api.md. How the on-device store evolves across app versions is documented in Docs/data-migration.md.

Tests

Unit coverage of the deterministic core — DomainReportBuilder, DomainReportExporter, DiffService, DomainDataPortabilityService (merge/replace dedup), the migration runner, and the Local API contract — lives in the DomainDigTests target:

xcodebuild test -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:DomainDigTests

The DomainDig scheme's test action runs both DomainDigTests and the DomainDigUITests accessibility audit, so a plain xcodebuild test (and CI) exercises both.

Accessibility Audit

DomainDigUITests runs performAccessibilityAudit() over every primary screen, at default and at the largest accessibility text size.

./Scripts/audit-a11y.sh            # oldest supported + newest runtime
./Scripts/audit-a11y.sh floor      # oldest supported runtime only (~85s)

Findings are reported, not enforced — they are the burndown list for the accessibility pass. Widen AccessibilityAuditHarness.enforcedAuditTypes to turn a category into a build failure as each phase lands.

Optional pre-push hook, which runs the floor audit when Swift or project files change:

git config core.hooksPath .githooks

See Docs/ACCESSIBILITY.md for why coverage is split between this script and CI.

Release Planning

See RELEASE_ROADMAP.md for the semver release history from v4.4.1 through the v5.0.0 contract-stabilization milestone.

Contributing

Contributions are welcome. Keep changes scoped, include tests or build verification when behavior changes, and open a pull request with a clear summary of user-facing impact.

Security

If you discover a security issue, see SECURITY.md.

License

This project is licensed under the MIT License. See LICENSE.

Contact

Questions or feedback: hello@zerolabs.sh