21 bite-sized beginner tutorials (Web Basics, APIs & Data), the 8-backend blog engine series, 4 blog frontends, 2 React starters, 3 NixOS desktops and 4 Rust API/pipeline boilerplates. Every folder is a complete, self-contained project with its own README. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGNxPf9PrSG2kzrxSvn45Y
35 lines
1.2 KiB
HTML
35 lines
1.2 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>What's My IP & Location</title>
|
|
<link rel="stylesheet" href="styles.css" />
|
|
</head>
|
|
<body>
|
|
<main class="card">
|
|
<h1>What's My IP & Location</h1>
|
|
<p class="sub">These are the facts the internet can see about your connection.</p>
|
|
|
|
<p id="status" class="status" role="status"></p>
|
|
|
|
<section id="result" class="result" hidden>
|
|
<p class="label">Your IP address</p>
|
|
<p id="ip" class="ip"></p>
|
|
|
|
<div class="facts">
|
|
<div class="row"><span>Location</span><strong id="location"></strong></div>
|
|
<div class="row"><span>Country</span><strong id="country"></strong></div>
|
|
<div class="row"><span>Provider (ISP)</span><strong id="isp"></strong></div>
|
|
<div class="row"><span>Time zone</span><strong id="timezone"></strong></div>
|
|
</div>
|
|
|
|
<a id="map" class="btn ghost" target="_blank" rel="noreferrer">View on map</a>
|
|
</section>
|
|
|
|
<button id="refresh" class="btn block" type="button">Refresh</button>
|
|
</main>
|
|
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html>
|