{"id":23376111,"url":"https://github.com/xevion/rdap","last_synced_at":"2026-04-13T18:02:39.806Z","repository":{"id":322068773,"uuid":"1081511553","full_name":"Xevion/rdap","owner":"Xevion","description":"Modern RDAP query client, built with static Next.js","archived":false,"fork":false,"pushed_at":"2026-04-08T17:04:41.000Z","size":1169,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-08T19:09:43.988Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://rdap.xevion.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xevion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-22T22:21:18.000Z","updated_at":"2026-03-30T05:22:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"1fb8cbfe-f9de-48f5-887d-71c4d74b84c2","html_url":"https://github.com/Xevion/rdap","commit_stats":null,"previous_names":["xevion/rdap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xevion/rdap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xevion%2Frdap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xevion%2Frdap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xevion%2Frdap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xevion%2Frdap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xevion","download_url":"https://codeload.github.com/Xevion/rdap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xevion%2Frdap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31764317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-12-21T17:33:40.794Z","updated_at":"2026-04-13T18:02:39.801Z","avatar_url":"https://github.com/Xevion.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rdap\n\n[![Version][badge-version]][npm]\n[![License][badge-license]][license]\n[![CI][badge-ci]][ci-workflow]\n[![Codecov][badge-codecov]][codecov]\n[![TypeScript][badge-typescript]][typescript]\n[![Next.js][badge-nextjs]][nextjs]\n[![React][badge-react]][react]\n\n[badge-version]: https://img.shields.io/badge/version-0.9.1-blue\n[badge-license]: https://img.shields.io/badge/license-MIT-green\n[badge-ci]: https://github.com/Xevion/rdap/actions/workflows/ci.yml/badge.svg\n[badge-codecov]: https://codecov.io/gh/Xevion/rdap/branch/master/graph/badge.svg\n[badge-typescript]: https://img.shields.io/badge/TypeScript-5.9-blue\n[badge-nextjs]: https://img.shields.io/badge/Next.js-16-black\n[badge-react]: https://img.shields.io/badge/React-19-blue\n\nA web-based RDAP client for querying domains, IP addresses, and ASNs. Has dark mode.\n\n[![Domain query screenshot](.media/domain.png)][live-demo]\n[![IPv4 query screenshot](.media/ipv4.png)][live-demo]\n\n\u003e [!TIP]\n\u003e **Try the live demo at [rdap.xevion.dev][live-demo]** to query domains, IPs, ASNs, and more in real-time.\n\n## What is RDAP?\n\nRDAP (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.\n\n## Why?\n\nThe [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.\n\nMain additions:\n\n- Dark mode (actually important when you stare at this stuff all day)\n- Every query gets a shareable URL\n- Better type detection for inputs\n- Cleaner UI with status badges and collapsible sections\n- JSContact support alongside vCard\n- Static export, no backend needed\n\n## Features\n\n**Query types**: domains, IPv4/IPv6 (with CIDR), ASNs, entity handles, nameservers, or raw RDAP URLs. Type detection is automatic but can be overridden.\n\n**Supported objects**: domains, IP networks, autonomous systems, entities (contacts/registrars), and nameservers. Shows all the standard RDAP fields plus DNSSEC info when available.\n\n**Contacts**: Displays both vCard (jCard) and JSContact (RFC 9553) formats. Shows names, organizations, emails, phones, addresses, etc.\n\n**UI stuff**: Dark/light mode, copy buttons everywhere, collapsible sections, status badges with hover tooltips, relative timestamps (\"2 days ago\"), responsive layout.\n\n**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.\n\n## Development\n\nUses pnpm:\n\n```bash\npnpm install\npnpm dev          # localhost:3000\npnpm build        # static export\npnpm test         # vitest\npnpm check        # tsc + eslint\n```\n\n## Self-Hosting\n\nFully static. Queries go directly from your browser to RDAP servers (no backend). Just run `pnpm build` and host the output anywhere.\n\nCORS issue: Some RDAP servers don't set CORS headers, so those queries will fail in the browser. Might add an optional proxy later.\n\n## Privacy\n\nThe 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.\n\n## Contributing\n\nPRs welcome. Uses ESLint, Prettier, Husky git hooks, and conventional commits.\n\n## License\n\n[MIT License][license] © 2025 Ryan Walters\n\n\u003c!-- Links --\u003e\n\n[live-demo]: https://rdap.xevion.dev\n[rdap-client]: https://client.rdap.org\n[ci-workflow]: https://github.com/Xevion/rdap/actions/workflows/ci.yml\n[codecov]: https://codecov.io/gh/Xevion/rdap\n[pnpm]: https://pnpm.io/\n[nodejs]: https://nodejs.org\n[nextjs]: https://nextjs.org\n[react]: https://react.dev\n[typescript]: https://www.typescriptlang.org\n[radix]: https://www.radix-ui.com\n[tailwind]: https://tailwindcss.com\n[zod]: https://zod.dev\n[vitest]: https://vitest.dev\n[next-themes]: https://github.com/pacocoursey/next-themes\n[license]: LICENSE\n[npm]: https://www.npmjs.com/package/rdap\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxevion%2Frdap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxevion%2Frdap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxevion%2Frdap/lists"}