δΈζ | English
A modern, fast WHOIS lookup service built with Next.js 15 and powered by RDAP (Registration Data Access Protocol). Features a beautiful Liquid Glass UI design and supports traditional WHOIS queries through Railway Node.js plugin.
- One-Click Deploy: Click the button above to deploy to Vercel
- Environment Variables: Optionally set
NEXT_PUBLIC_WHOIS_PLUGIN_URLfor traditional WHOIS support - Done: Your WHOIS lookup service is live!
- π Global TLD Support: Supports all TLDs via IANA bootstrap registry
- π IDN Support: Full support for internationalized domain names with Punycode conversion
- π Dual Protocol Support: RDAP for modern domains + traditional WHOIS via Railway plugin
- β‘ IANA Discovery: Dynamic WHOIS server discovery with 24-hour caching
- π¨ Liquid Glass UI: Modern design language with Framer Motion animations
- π± Responsive Design: Optimized for mobile with smooth performance
- π Privacy Compliant: Uses RDAP for modern privacy standards
- π Railway Plugin: Native Node.js TCP connections for traditional WHOIS
- π·οΈ Brand Customization: Easily customize the brand name via environment variables
- π οΈ Developer Experience: Built-in debug panel and environment detection
- π Internationalization: Full support for English and Chinese languages
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend βββββΆβ Railway API βββββΆβ WHOIS Servers β
β (Next.js) β β (Node.js) β β (Port 43) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β RDAP Servers β β IANA Discovery β
β (HTTPS API) β β whois.iana.org β
βββββββββββββββββββ βββββββββββββββββββ
- Node.js 18+
- npm, yarn, or pnpm
- Clone the repository:
git clone https://github.com/marvinli001/spectra-whois.git
cd spectra-whois- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localEdit .env.local:
# Brand Customization (optional)
NEXT_PUBLIC_BRAND_NAME=SpectraWHOIS
# For WHOIS plugin support (optional)
NEXT_PUBLIC_WHOIS_PLUGIN_URL=https://your-railway-app.railway.app/whois- Run the development server:
npm run devImportant: When deploying, make sure to:
- Set the Root Directory to
whois-plugin - Railway will auto-detect Node.js and deploy
- Copy the deployed URL for frontend integration
- Navigate to the plugin directory:
cd whois-plugin- Install dependencies:
npm install- Run locally for testing:
npm run dev- Deploy to Railway:
- Connect your GitHub repository to Railway
- Set Root Directory to
whois-plugin - Railway will automatically detect the Node.js project
For enhanced functionality with traditional WHOIS queries, you can optionally deploy the Railway plugin:
Setup Instructions:
- Click the deploy button above
- Set Root Directory to
whois-pluginin Railway dashboard - Copy the deployed URL (e.g.,
https://your-app.railway.app) - Add to your Vercel environment:
NEXT_PUBLIC_WHOIS_PLUGIN_URL=https://your-app.railway.app/whois
π Plugin Documentation | π δΈζζζ‘£
-
Connect to Vercel:
- Import your GitHub repository in Vercel
- Vercel will automatically detect Next.js
-
Set Environment Variables (Optional):
NEXT_PUBLIC_WHOIS_PLUGIN_URL=https://your-railway-app.railway.app/whois -
Deploy:
- Push to main branch triggers automatic deployment
| Variable | Description | Default | Required |
|---|---|---|---|
NEXT_PUBLIC_BRAND_NAME |
Custom brand name | SpectraWHOIS |
No |
NEXT_PUBLIC_WHOIS_PLUGIN_URL |
Railway WHOIS plugin URL | - | Optional* |
NEXT_PUBLIC_WHOIS_API_URL |
Alternative plugin URL | - | Optional* |
DEBUG_ENV_CHECKER |
Show environment debug logs | false |
No |
*Required only for traditional WHOIS tab functionality
You can customize the brand name displayed throughout the application:
# .env.local or Vercel Environment Variables
NEXT_PUBLIC_BRAND_NAME=YourCustomNameThis will update:
- Homepage title and logo
- Floating search bar header
- Browser tab title
- All UI references
If not set, defaults to "SpectraWHOIS"
| Variable | Description | Default | Required |
|---|---|---|---|
PORT |
Server port | 3001 |
Auto-set by Railway |
NODE_ENV |
Environment mode | production |
Auto-set by Railway |
ALLOWED_ORIGINS |
CORS origins | * |
No |
The traditional WHOIS tab appears when:
- β WHOIS plugin URL is configured
- β Domain supports RDAP (so both tabs can be shown)
- β Frontend can reach the Railway plugin
In development mode, a debug panel appears in the bottom-right corner showing:
- Configuration status (green = configured, yellow = not configured)
- Environment variables detection
- Platform detection (local/Vercel/other)
- Configuration suggestions
GET /whois?domain=example.comPOST /whois/batch
Content-Type: application/json
{
"domains": ["example.com", "github.com", "vercel.com"]
}GET /health{
"success": true,
"domain": "example.com",
"whoisServer": "whois.verisign-grs.com",
"rawData": "Domain Name: EXAMPLE.COM...",
"parsedData": {
"domain": "example.com",
"registrar": "Reserved Domain",
"registrationDate": "1995-08-14",
"expirationDate": "2024-08-13",
"nameServers": ["a.iana-servers.net", "b.iana-servers.net"]
},
"timestamp": "2024-01-01T00:00:00.000Z"
}{
"success": false,
"domain": "example.com",
"error": "Connection timeout",
"source": "whois",
"reason": "timeout",
"troubleshooting": {
"description": "Query timed out waiting for response",
"suggestions": ["Server may be experiencing high load", "Try again later"]
}
}spectra-whois/
βββ src/ # Next.js frontend
β βββ app/ # App Router pages
β βββ components/ # React components
β β βββ debug/ # Debug panel
β β βββ ui/ # UI components
β β βββ whois/ # WHOIS-specific components
β βββ contexts/ # React contexts
β βββ services/ # API services
β βββ utils/ # Utilities
βββ whois-plugin/ # Railway Node.js plugin
β βββ lib/ # WHOIS client library
β βββ server.js # Express server
β βββ test.js # Basic tests
β βββ package.json # Plugin dependencies
βββ public/ # Static assets
npm run build # Test build
npm run lint # Lint check
npm run dev # Development servercd whois-plugin
npm test # Run basic tests
npm start # Production server
npm run dev # Development server with watch- Frontend: Next.js 15, React 18, Tailwind CSS, Framer Motion
- Backend: Node.js, Express.js, Native TCP Sockets
- Deployment: Vercel (Frontend) + Railway (Backend)
- Protocols: RDAP (HTTPS), Traditional WHOIS (TCP Port 43)
- Discovery: IANA Bootstrap Registry
Change the brand name displayed throughout the application:
-
Local Development:
# .env.local NEXT_PUBLIC_BRAND_NAME=YourBrandName -
Vercel Deployment:
- Go to your project settings
- Navigate to "Environment Variables"
- Add
NEXT_PUBLIC_BRAND_NAME=YourBrandName - Redeploy your application
The project uses Tailwind CSS 4. Key customization points:
- Colors: Edit
tailwind.config.tsfor theme colors - Animations: Modify Framer Motion variants in components
- Glass Effects: Adjust
LiquidGlasscomponent insrc/components/ui/liquid-glass.tsx
- β Mobile-specific performance optimizations
- β Static gradients on mobile (animated on desktop)
- β Reduced motion for better mobile experience
- β Fixed positioning optimizations
- β Responsive spacing and layout
- π Add Service Worker for offline support
- π Implement virtual scrolling for large lists
- πΎ Add localStorage for query history
- π¦ Code splitting for better initial load
- πΌοΈ Image optimization with Next.js Image
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- IANA for maintaining the WHOIS server registry
- Vercel for excellent Next.js hosting
- Railway for reliable backend deployment
- Tailwind CSS for the utility-first CSS framework
- Framer Motion for beautiful animations
Built with β€οΈ using Next.js 15 and Railway