Creart-Whois - Comprehensive WHOIS Lookup Platform
Creart-Whois is a modern WHOIS lookup platform for querying domains, IPv4, IPv6, ASN, and CIDR. Powered by Node.js 18+, Next.js 14+, Tailwind CSS, and Framer Motion, it delivers a fast, secure, and extensible solution with a sleek, responsive interface. As the first beta release (v1.2.5-beta), we’re excited to share this with the community and welcome feedback to shape its future!
🚀 Features
🔍 Query Capabilities
- Domain WHOIS: Detailed registrar, ownership, and name server data.
- IPv4/IPv6 Lookup: Geolocation, ISP, and security details.
- ASN Queries: Autonomous System Number details, including provider and routing.
- CIDR Blocks: Subnet and IP range analysis.
- DNS Records: Support for A, AAAA, MX, CNAME, TXT, and more.
💻 Technical Highlights
- Tech Stack: Node.js (backend), Next.js 14+ (frontend), Tailwind CSS, Framer Motion.
- Real-Time Queries: Optimized for speed with caching support.
- Responsive UI: Mobile, tablet, and desktop compatibility.
- RESTful API: Developer-friendly with rate limiting and caching.
- Security: Helmet, CORS, Joi validation, XSS/SQL injection protection.
- Performance: SSR/SSG, Gzip/Brotli compression, Redis/node-cache.
🎨 User Experience
- Modern Design: Glass-morphism, gradients, 60 FPS animations.
- Dark/Light Mode: Auto-switching themes.
- Smart Search: Autocomplete, suggestions, and history.
- Reports: Formatted or raw data views.
- Accessibility: ARIA-compliant for inclusivity.
📁 Project Structure
Creart-Node.JS-Whois-Software/
├── 📁 backend/ # Node.js API Server
│ ├── 📁 config/ # Configuration
│ │ └── constants.js # App constants
│ ├── 📁 middleware/ # Express middleware
│ │ ├── validation.js # Joi schemas
│ │ ├── rateLimit.js # Rate limiting
│ │ ├── errorHandler.js # Error handling
│ │ ├── cache.js # Redis/node-cache
│ │ └── asyncHandler.js # Async error handler
│ ├── 📁 routes/ # API routes
│ │ ├── whois.js # WHOIS endpoints
│ │ ├── dns.js # DNS endpoints
│ │ └── health.js # Health checks
│ ├── 📁 utils/ # Utilities
│ │ ├── whoisParser.js # WHOIS parser
│ │ ├── ipTools.js # IP utilities
│ │ ├── responseFormatter.js # Response formatting
│ │ ├── database.js # DB utilities
│ │ └── cache.js # Cache management
│ ├── package.json # Dependencies
│ └── server.js # Main server
├── 📁 frontend/ # Next.js Application
│ ├── 📁 components/ # React components
│ │ ├── 📁 Layout/ # Layout components
│ │ │ ├── Layout.js # Main layout
│ │ │ ├── Header.js # Navigation
│ │ │ └── Footer.js # Footer
│ │ ├── 📁 Search/ # Search components
│ │ │ ├── SearchForm.js # Search form
│ │ │ └── QueryTypes.js # Query type selector
│ │ ├── 📁 Results/ # Result components
│ │ │ ├── ResultDisplay.js # Results view
│ │ │ ├── DomainInfo.js # Domain display
│ │ │ ├── IPInfo.js # IP display
│ │ │ └── RawData.js # Raw data view
│ │ └── 📁 UI/ # UI components
│ │ ├── Button.js # Buttons
│ │ ├── Loading.js # Loading animations
│ │ └── ErrorMessage.js # Error messages
│ ├── 📁 pages/ # Next.js pages
│ │ ├── index.js # Homepage
│ │ ├── _app.js # App wrapper
│ │ └── 📁 api/ # API routes
│ │ └── hello.js # Sample route
│ ├── 📁 styles/ # Styles
│ │ └── globals.css # Global CSS & Tailwind
│ ├── 📁 utils/ # Frontend utilities
│ │ ├── api.js # API calls
│ │ └── formatters.js # Data formatters
│ ├── public/ # Static assets
│ ├── next.config.js # Next.js config
│ ├── tailwind.config.js # Tailwind config
│ ├── postcss.config.js # PostCSS config
│ └── package.json # Dependencies
├── 📁 docs/ # Documentation
├── 📁 scripts/ # Deployment scripts
├── LICENSE # MIT License
└── README.md # This file
🛠️ Installation
Prerequisites
- Node.js: 18.0+
- npm: 9.0+
- Git
- Optional: Docker, Redis, MongoDB
🏃♂️ Local Setup
Clone Repository:
git clone https://github.com/hamzadenizyilmaz/Creart-Node.JS-Whois-Software.git cd Creart-Node.JS-Whois-SoftwareBackend Setup:
cd backend npm install cp .env.example .envEdit
.env:NODE_ENV=development PORT=3001 FRONTEND_URL=http://localhost:3000 MONGODB_URI=mongodb+srv://test:[email protected]/ RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX_REQUESTS=100Frontend Setup:
cd frontend npm installRun Application:
- Backend:
Output:cd backend npm startWHOIS API Server Started! Port: 3001 Environment: development API URL: http://localhost:3001/api/v1 Health Check: http://localhost:3001/health - Frontend:
Output:cd frontend npm run dev▲ Next.js 14.2.33 Local: http://localhost:3000
- Backend:
Test:
- Frontend:
http://localhost:3000 - API:
http://localhost:3001/api/v1 - Health Check:
http://localhost:3001/health
- Frontend:
🌐 Production Deployment
Environment
- Backend
.env:NODE_ENV=production PORT=3001 FRONTEND_URL=https://yourdomain.com MONGODB_URI=mongodb+srv://test:[email protected]/ RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX_REQUESTS=100
Build
- Backend:
cd backend npm run build npm start - Frontend:
cd frontend npm run build npm start # Or static export: npm run build && npm run export
Deployment Options
A) VPS (Ubuntu 20.04+)
ssh user@your-server-ip
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt install nginx -y
sudo npm install -g pm2
git clone https://github.com/hamzadenizyilmaz/Creart-Node.JS-Whois-Software.git
cd Creart-Node.JS-Whois-Software
cd backend
npm install --production
pm2 start server.js --name "whois-backend"
cd ../frontend
npm install --production
npm run build
Nginx Config (/etc/nginx/sites-available/whois-app):
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /path/to/Creart-Node.JS-Whois-Software/frontend/out;
index index.html;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
try_files $uri $uri/ /index.html;
}
}
B) Docker
docker-compose.yml:
version: '3.8'
services:
backend:
build: ./backend
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- MONGODB_URI=mongodb://mongodb:27017/whois-app
- REDIS_URL=redis://redis:6379
depends_on:
- mongodb
- redis
volumes:
- ./backend:/app
- /app/node_modules
restart: unless-stopped
frontend:
build: ./frontend
ports:
- "3000:3000"
environment:
- NEXT_PUBLIC_API_URL=http://localhost:3001
depends_on:
- backend
restart: unless-stopped
mongodb:
image: mongo:6.0
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
restart: unless-stopped
redis:
image: redis:7.2-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: unless-stopped
volumes:
mongodb_data:
redis_data:
Run:
docker-compose up -d
C) PaaS
- Vercel (Frontend):
cd frontend npm i -g vercel vercel --prod - Railway/Heroku (Backend):
cd backend railway add railway deploy
🔧 API Documentation
Base URL
- Development:
http://localhost:3001/api/v1 - Production:
https://api.yourdomain.com/api/v1
Endpoints
🔍 WHOIS Lookup
POST /whois
- Request:
{ "query": "example.com", "type": "domain" } - Response:
{ "success": true, "data": { "domainName": "example.com", "registrar": "Example Registrar", "creationDate": "1995-08-13T00:00:00Z", "expiryDate": "2026-08-12T00:00:00Z", "nameServers": ["ns1.example.com", "ns2.example.com"], "status": "clientTransferProhibited" }, "metadata": { "responseTime": "245ms", "cached": false, "timestamp": "2025-10-22T02:10:00Z" } }
🌐 DNS Lookup
POST /dns
- Request:
{ "domain": "example.com", "recordType": "A" } - Response:
{ "success": true, "data": { "domain": "example.com", "recordType": "A", "records": ["93.184.216.34"] } }
📊 Batch Query
POST /whois/batch
- Request:
{ "queries": [ {"query": "example.com", "type": "domain"}, {"query": "8.8.8.8", "type": "ipv4"}, {"query": "AS15169", "type": "asn"} ] } - Response:
{ "success": true, "data": [{ "query": "example.com", "type": "domain", "result": {...} }, ...] }
❤️ Health Check
GET /health
- Response:
{ "status": "healthy", "timestamp": "2025-10-22T02:10:00Z", "uptime": 12345.67, "version": "1.2.5-beta" }
Query Types
| Type | Format | Example | Description |
|---|---|---|---|
domain |
FQDN | example.com |
Domain WHOIS info |
ipv4 |
IPv4 Address | 8.8.8.8 |
IPv4 details |
ipv6 |
IPv6 Address | 2001:4860:4860::8888 |
IPv6 details |
asn |
AS Number | AS15169 or 15169 |
ASN info |
cidr |
CIDR Notation | 192.168.1.0/24 |
CIDR block info |
🎨 Customization
Theme
Edit frontend/tailwind.config.js:
module.exports = {
theme: { extend: { colors: { primary: { 500: '#your-custom-color' } } } }
};
Branding
Update frontend/components/Layout/Header.js:
const Header = () => (

Your Custom App Name
);
New Query Types
- Add to
backend/config/constants.js(SUPPORTED_QUERY_TYPES). - Create parser in
backend/utils/whoisParser.js. - Update UI in
frontend/components/Search/QueryTypes.js.
🔒 Security
- Rate Limiting: Per-IP query limits.
- CORS: Trusted domains only.
- Input Validation: Joi schemas.
- Helmet: Security headers.
- XSS/SQL Protection: Sanitization and parameterized queries.
📊 Performance
- Backend: 5-min cache, Gzip/Brotli, connection pooling, cluster mode.
- Frontend: SSR/SSG, image optimization, code splitting, CDN-ready.
🐛 Troubleshooting
Issues
- Backend Failure:
netstat -tulpn | grep :3001 pkill -f node cd backend && npm start - CORS Errors:
Check
backend/.env:FRONTEND_URL=http://localhost:3000 - Timeouts:
Edit
backend/utils/whoisParser.js:const WHOIS_CONFIG = { timeout: 30000, retries: 3 }; - Memory Usage:
pm2 start server.js --name "whois-backend" --max-memory-restart 512M
Logs
- Backend:
cd backend && npm run dev pm2 logs whois-backend - Frontend:
cd frontend && npm run build # Check browser console (F12)
🤝 Contributing
- Fork & Clone:
git clone https://github.com/your-username/Creart-Node.JS-Whois-Software.git - Branch:
git checkout -b feature/your-feature - Commit:
git add . git commit -m "feat: your feature description" - Push & PR:
git push origin feature/your-feature
Standards
- ESLint: Airbnb style.
- Prettier: Code formatting.
- Commits: Conventional (e.g.,
feat:,fix:). - Tests: Jest.
Testing
cd backend && npm test
cd frontend && npm test
npm run test:e2e
📈 Monitoring
- Health:
curl http://localhost:3001/health - Metrics:
curl http://localhost:3001/api/v1/stats
🔄 Maintenance
- Updates:
cd backend && npm update cd frontend && npm update npm audit fix - Backup:
mongodump --uri="mongodb://localhost:27017/whois" --out=./backup/ cp .env .env.backup git tag v1.2.5-beta-backup git push --tags
📞 Support
- GitHub: Issues
- Email: [email protected]
📄 License
🙏 Acknowledgments
- WHOIS Protocol (ISC)
- Node.js, Next.js, Tailwind CSS, Framer Motion
⭐ Star us on GitHub!
Join us to build the future of WHOIS lookups! 🚀