1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# DomainDig – Project Context
## What this is
An iOS utility app for querying DNS records and inspecting SSL/TLS certificates
for any domain. Designed for developers, sysadmins, and anyone who manages or
troubleshoots domains and servers.
## Target user
Technically literate adults — developers, IT/sysadmin, homelab enthusiasts.
Comfortable with terms like A record, CNAME, MX, TTL, and TLS. The UI should be
clean and information-dense, not hand-holding.
## Design principles
- Minimal, utilitarian UI — this is a tool, not a consumer app
- Results should be readable at a glance — use clear labels, monospace where
appropriate for IPs and raw values
- Dark mode preferred as the primary aesthetic
- No onboarding, no tutorials, no splash screens
- Fast — results should appear as soon as they're available, not after all
lookups complete
## Features
### DNS Lookup
Query the following record types for any domain via DNS-over-HTTPS (use
Cloudflare 1.1.1.1 — https://cloudflare-dns.com/dns-query):
- A
- AAAA
- MX
- NS
- TXT
- CNAME
Display each record type in its own section. Show TTL alongside each result.
If a record type returns no results, show "No records found" for that type
rather than hiding the section entirely.
### SSL/TLS Certificate Check
Connect to the domain on port 443 via URLSession and inspect the server's
certificate chain using URLSession delegate methods. Display:
- Common name (CN)
- Subject Alternative Names (SANs)
- Issuer
- Valid from / Valid until dates
- Days until expiry — highlight in red if under 30 days, yellow if under 60
- Certificate chain depth
### Results layout
- Domain input at the top — large text field, keyboard shows on launch
- Run button to trigger both DNS and SSL lookups simultaneously
- DNS and SSL results displayed in clearly separated sections below
- Each section loads independently — don't block SSL results waiting for DNS
or vice versa
## Technical constraints
- SwiftUI, iOS only
- Fully offline except for DNS-over-HTTPS requests and SSL connections
- No accounts, no analytics, no ads
- No third-party dependencies — URLSession and Network framework only
- Targets latest iOS
### Recent searches
Store the last 20 searched domains locally using UserDefaults. Display them as
a tappable list below the text field when no results are showing. Tapping a
recent domain populates the text field and runs the lookup immediately. Include
a "Clear" button to wipe history. Most recent at the top.
### Share / export
A share button (SF Symbol: `square.and.arrow.up`) in the top-right of the
results area. Formats the full DNS and SSL results as plain text and presents
the iOS share sheet via ShareLink or UIActivityViewController. The export
should include the domain, timestamp, all DNS records with TTLs, and all SSL
cert fields.
## What good looks like
A developer pastes a domain, taps run, and within a couple of seconds sees a
clean breakdown of every DNS record type and the full SSL cert status. It should
feel like a native, polished version of running `dig` and `openssl s_client`
from the terminal.
|