GeoIP Service
GeoIP Service is a Next.js application that accepts an IP address, domain, or full URL and returns a unified technical inspection. It combines location and network ownership data with DNS, HTTP, TLS, and basic risk signals that would otherwise require several separate tools.
The problem
Operational support and security investigations often begin with the same fragmented sequence: resolve a host, inspect its redirects, check its certificate, identify its network, and compare several public signals. The project brings these steps into one response model and one interface.
Analysis modes
IP inspection
- Accepts the current client IP or an explicit IPv4/IPv6 address
- Returns country, region, city, time zone, and coordinate data when available
- Surfaces ASN, organization, proxy, hosting, and mobile-network signals
- Adds request-derived device, browser, and connection context
Website inspection
- Accepts a domain or complete HTTP/HTTPS URL
- Resolves DNS and follows the HTTP redirect chain
- Collects response metadata and TLS certificate details
- Extracts basic security and SEO signals
- Rejects non-public targets before deeper inspection begins
The public-target restriction is an important boundary: a convenient inspection feature should not become a path to internal network resources.
API behavior
The service automatically distinguishes IP, domain, and URL inputs behind one lookup endpoint. Responses are JSON-first and match the information architecture used by the web interface. In-memory rate limiting is exposed through X-RateLimit-* and Retry-After headers. Optional Turso persistence can retain lookup history and recently resolved IP records.
The analysis remains useful when a GeoIP provider has incomplete data; diagnostic sections return what they can instead of failing the entire request.
Examples
# Inspect the current client IP
curl https://ip.aliyilmaz.co/api/lookup
# Inspect a specific IP
curl "https://ip.aliyilmaz.co/api/lookup?target=8.8.8.8"
# Inspect a domain or full URL
curl "https://ip.aliyilmaz.co/api/lookup?target=example.com"
curl "https://ip.aliyilmaz.co/api/lookup?target=https://openai.com"
Technical structure
The project uses Next.js and TypeScript. Input resolution, GeoIP lookup, website analysis, and response formatting live in one repository but remain separate responsibilities. OpenAPI JSON is generated at /api/swagger and embedded in a Swagger UI at /docs, keeping the live API and its documentation aligned.