krz/domain-dig

an ios app for DNS & SSL analysis

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

v5.0.1: README.md · raw

  1# DomainDig
  2
  3[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=zerolabsco_domain-dig&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=zerolabsco_domain-dig)
  4[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=zerolabsco_domain-dig&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=zerolabsco_domain-dig)
  5[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=zerolabsco_domain-dig&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=zerolabsco_domain-dig)
  6[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=zerolabsco_domain-dig&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=zerolabsco_domain-dig)
  7[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
  8
  9[![App Store Badge](https://zerolabs.sh/storebutton.svg)](https://apps.apple.com/us/app/domaindig/id6760368004)
 10
 11DomainDig 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.
 12
 13## Features
 14
 15- Domain inspection for DNS records, email security, TLS certificates, HTTP headers, redirects, IP geolocation, reachability, open ports, RDAP, ownership, subdomain discovery, and availability.
 16- Canonical `DomainReport` output used by the app UI and exports.
 17- History snapshots with change summaries, risk scoring, notes, and saved domain context.
 18- Dashboard, watchlist, monitoring, workflows, batch results, integrations, and data portability screens.
 19- Audit Mode with sessions, checklist progress, reviewer notes, findings, evidence snapshots, audit timelines, and markdown/json/pdf export.
 20- Backup and restore for tracked domains, history, audit sessions, workflows, monitoring settings/logs, app settings, and local feature metadata.
 21- Local-first operation with no required backend.
 22- Optional local API surface for automation-compatible report output.
 23
 24## Data And Privacy
 25
 26DomainDig 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.
 27
 28Network inspection requests are made only to perform the requested domain checks or configured resolver lookups. The app does not require a hosted DomainDig backend.
 29
 30## Development
 31
 32### Requirements
 33
 34- Xcode with current iOS SDK support
 35- iOS Simulator or physical iOS device
 36- Swift/Xcode support for filesystem-synchronized groups used by the project
 37
 38### Getting Started
 39
 401. Clone the repository.
 41   ```sh
 42   git clone https://github.com/zerolabsco/domain-dig.git
 43   ```
 442. Open `DomainDig.xcodeproj` in Xcode.
 453. Select the `DomainDig` scheme.
 464. Build and run on a simulator or device.
 47
 48### Useful Checks
 49
 50```sh
 51xcodebuild -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' build
 52```
 53
 54The 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](Docs/local-api.md). How the on-device store evolves across app versions is documented in [Docs/data-migration.md](Docs/data-migration.md).
 55
 56### Tests
 57
 58Unit 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:
 59
 60```sh
 61xcodebuild test -project DomainDig.xcodeproj -scheme DomainDig -destination 'platform=iOS Simulator,name=iPhone 16' -only-testing:DomainDigTests
 62```
 63
 64The `DomainDig` scheme's test action runs both `DomainDigTests` and the `DomainDigUITests` accessibility audit, so a plain `xcodebuild test` (and CI) exercises both.
 65
 66### Accessibility Audit
 67
 68`DomainDigUITests` runs `performAccessibilityAudit()` over every primary screen,
 69at default and at the largest accessibility text size.
 70
 71```sh
 72./Scripts/audit-a11y.sh            # oldest supported + newest runtime
 73./Scripts/audit-a11y.sh floor      # oldest supported runtime only (~85s)
 74```
 75
 76Findings are **reported, not enforced** — they are the burndown list for the
 77accessibility pass. Widen `AccessibilityAuditHarness.enforcedAuditTypes` to turn
 78a category into a build failure as each phase lands.
 79
 80Optional pre-push hook, which runs the floor audit when Swift or project files
 81change:
 82
 83```sh
 84git config core.hooksPath .githooks
 85```
 86
 87See [Docs/ACCESSIBILITY.md](Docs/ACCESSIBILITY.md) for why coverage is split
 88between this script and CI.
 89
 90## Release Planning
 91
 92See `RELEASE_ROADMAP.md` for the semver release history from `v4.4.1` through the `v5.0.0` contract-stabilization milestone.
 93
 94## Contributing
 95
 96Contributions 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.
 97
 98## Security
 99
100If you discover a security issue, see `SECURITY.md`.
101
102## License
103
104This project is licensed under the MIT License. See `LICENSE`.
105
106## Contact
107
108Questions or feedback: hello@zerolabs.sh