https://github.com/xevion/rdap
Modern RDAP query client, built with static Next.js
https://github.com/xevion/rdap
dns domain-lookup ip-lookup jscontact network-information networking-tools nextjs radix-ui rdap rdap-client react schema-validation self-hosted static-site vcard web-client whois
Last synced: about 2 months ago
JSON representation
Modern RDAP query client, built with static Next.js
- Host: GitHub
- URL: https://github.com/xevion/rdap
- Owner: Xevion
- License: mit
- Created: 2025-10-22T22:21:18.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2026-04-08T17:04:41.000Z (about 2 months ago)
- Last Synced: 2026-04-08T19:09:43.988Z (about 2 months ago)
- Topics: dns, domain-lookup, ip-lookup, jscontact, network-information, networking-tools, nextjs, radix-ui, rdap, rdap-client, react, schema-validation, self-hosted, static-site, vcard, web-client, whois
- Language: TypeScript
- Homepage: https://rdap.xevion.dev
- Size: 1.11 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rdap
[![Version][badge-version]][npm]
[![License][badge-license]][license]
[![CI][badge-ci]][ci-workflow]
[![Codecov][badge-codecov]][codecov]
[![TypeScript][badge-typescript]][typescript]
[![Next.js][badge-nextjs]][nextjs]
[![React][badge-react]][react]
[badge-version]: https://img.shields.io/badge/version-0.9.1-blue
[badge-license]: https://img.shields.io/badge/license-MIT-green
[badge-ci]: https://github.com/Xevion/rdap/actions/workflows/ci.yml/badge.svg
[badge-codecov]: https://codecov.io/gh/Xevion/rdap/branch/master/graph/badge.svg
[badge-typescript]: https://img.shields.io/badge/TypeScript-5.9-blue
[badge-nextjs]: https://img.shields.io/badge/Next.js-16-black
[badge-react]: https://img.shields.io/badge/React-19-blue
A web-based RDAP client for querying domains, IP addresses, and ASNs. Has dark mode.
[][live-demo]
[][live-demo]
> [!TIP]
> **Try the live demo at [rdap.xevion.dev][live-demo]** to query domains, IPs, ASNs, and more in real-time.
## What is RDAP?
RDAP (Registration Data Access Protocol) is the successor to WHOIS. It returns structured JSON instead of inconsistent plaintext, making it easier to parse and use programmatically.
## Why?
The [rdap.org client][rdap-client] works fine, but I wanted something with dark mode and shareable URLs. Plus it was a good excuse to learn Next.js 16.
Main additions:
- Dark mode (actually important when you stare at this stuff all day)
- Every query gets a shareable URL
- Better type detection for inputs
- Cleaner UI with status badges and collapsible sections
- JSContact support alongside vCard
- Static export, no backend needed
## Features
**Query types**: domains, IPv4/IPv6 (with CIDR), ASNs, entity handles, nameservers, or raw RDAP URLs. Type detection is automatic but can be overridden.
**Supported objects**: domains, IP networks, autonomous systems, entities (contacts/registrars), and nameservers. Shows all the standard RDAP fields plus DNSSEC info when available.
**Contacts**: Displays both vCard (jCard) and JSContact (RFC 9553) formats. Shows names, organizations, emails, phones, addresses, etc.
**UI stuff**: Dark/light mode, copy buttons everywhere, collapsible sections, status badges with hover tooltips, relative timestamps ("2 days ago"), responsive layout.
**Technical**: Uses IANA bootstrap files to resolve RDAP server URLs. All queries happen client-side from your browser. Zod schemas for validation. Fully static build.
## Development
Uses pnpm:
```bash
pnpm install
pnpm dev # localhost:3000
pnpm build # static export
pnpm test # vitest
pnpm check # tsc + eslint
```
## Self-Hosting
Fully static. Queries go directly from your browser to RDAP servers (no backend). Just run `pnpm build` and host the output anywhere.
CORS issue: Some RDAP servers don't set CORS headers, so those queries will fail in the browser. Might add an optional proxy later.
## Privacy
The demo at [rdap.xevion.dev][live-demo] has telemetry (PostHog) to track what breaks. Query targets aren't logged for successful queries, only type/timing. Failed queries might include the target for debugging. Self-hosted builds have no telemetry.
## Contributing
PRs welcome. Uses ESLint, Prettier, Husky git hooks, and conventional commits.
## License
[MIT License][license] © 2025 Ryan Walters
[live-demo]: https://rdap.xevion.dev
[rdap-client]: https://client.rdap.org
[ci-workflow]: https://github.com/Xevion/rdap/actions/workflows/ci.yml
[codecov]: https://codecov.io/gh/Xevion/rdap
[pnpm]: https://pnpm.io/
[nodejs]: https://nodejs.org
[nextjs]: https://nextjs.org
[react]: https://react.dev
[typescript]: https://www.typescriptlang.org
[radix]: https://www.radix-ui.com
[tailwind]: https://tailwindcss.com
[zod]: https://zod.dev
[vitest]: https://vitest.dev
[next-themes]: https://github.com/pacocoursey/next-themes
[license]: LICENSE
[npm]: https://www.npmjs.com/package/rdap