An open API service indexing awesome lists of open source software.

https://github.com/gentpan/whoga

Self-hosted RDAP & WHOIS lookup — web UI + JSON API. Powers who.ga. TanStack Start + React 19.
https://github.com/gentpan/whoga

dns domain-lookup icann json-api nitro open-source rdap react self-hosted tanstack typescript vite who-ga whois

Last synced: 9 days ago
JSON representation

Self-hosted RDAP & WHOIS lookup — web UI + JSON API. Powers who.ga. TanStack Start + React 19.

Awesome Lists containing this project

README

          

Whoga

# Whoga

**Self-hosted RDAP & WHOIS lookup**

Web UI + JSON API · Domain · TLD · IP · ASN


English
 · 
中文


who.ga
 · 
Guides
 · 
api.who.ga
 · 
Issues


GitHub stars
MIT License
Demo



TanStack Start
React 19
TypeScript
Nitro
Vite
Base UI


Node.js
pnpm
RDAP
WHOIS fallback
Redis


## Features

- RDAP lookup for domains, TLDs, IPs, and ASN
- WHOIS port43 fallback when RDAP is unavailable
- Local data index with scheduled refresh
- Optional Redis caching

## Quick Start

```bash
git clone https://github.com/gentpan/whoga.git
cd whoga
pnpm install
pnpm dev
```

Open localhost:3410

Production:

```bash
pnpm build && pnpm start
```

## API

```bash
curl "http://localhost:3410/api/whois?query=google.com"
curl "http://localhost:3410/api/whois?query=8.8.8.8"
curl "http://localhost:3410/api/whois?query=AS15169"
```

Live demo: api.who.ga/google.com

## Tech stack

**In short: a single-repo Node full-stack app** — web UI and JSON API run in one process, one build, one deploy.

| Part | What we use |
|------|-------------|
| **Runtime** | Node.js 20+ · pnpm |
| **Frontend** | React 19 · TypeScript · Vite |
| **Routing** | TanStack Router / Start |
| **UI** | [Base UI](https://base-ui.com) (menus, tooltips, etc.; styled with project CSS) |
| **Styling** | Plain CSS · Sora font · Lucide icons |
| **API** | `api/` in the same repo, served by the same process |
| **Cache** | Redis (optional) |

Under the hood: Nitro for the server layer, TanStack Start for full-stack wiring. Day to day you only need:

```bash
pnpm install # install deps
pnpm dev # development
pnpm build && pnpm start # production
```

## Configuration

```bash
cp .env.example .env
```

| Variable | Description |
|----------|-------------|
| `CRON_SECRET` | Bearer token for refresh endpoint (recommended in production) |
| `REDIS_URL` | Redis cache connection |
| `WHOIS_CACHE_TTL_SECONDS` | Cache TTL in seconds, default `900` |

## Data Refresh

With the server running:

```bash
pnpm refresh:data
```

Or `curl -X POST http://localhost:3410/api/admin/refresh`

Data paths: `data/` (seed) → `runtime/data/` (runtime, preferred)

## Project layout

```
whoga/
├── web/ # Pages and UI components
├── api/ # HTTP API (/api/whois, /api/stats, etc.)
├── public/ # Static assets (logo, favicons, robots.txt)
├── lib/ # Shared logic (RDAP/WHOIS, data index)
├── data/ # Seed data
├── runtime/ # Runtime data (gitignore, preferred at runtime)
├── scripts/ # Data refresh and ops scripts
└── deploy/ # Deployment scripts
```

## Deploy

```bash
./deploy/deploy-caddy.sh ~/.ssh/your-key.pem
```

See deploy/README.md for details.

---


who.ga
 · 
GitHub
 · 
MIT



Whoga · Self-hosted RDAP & WHOIS