cloudflare
tcp/443 tcp/80 tcp/8443
Open service 172.67.141.97:8443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Zh%2Bg%2BKCawg%2BQP9HBa7sxN2L%2FlV5tR55jec4le454vHtdPMxtRPAMDT6dQBDG996ikwayRmNwzP0P4LSA5nwgoK8HVBA5igOGwexkYCApoF1m"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=14,cfOrigin;dur=50
CF-RAY: 9bd11090edbb4b96-SJC
alt-svc: h3=":8443"; ma=86400
Open service 2606:4700:3033::ac43:8d61:80 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Length: 0
Connection: close
Location: https://tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=nSaD5t%2BBFpb0D1XUVphOAWFdR1uVo6AGjN%2BCaI3dJVRbjle71WsiHzWrhpePXfuVdkwHp68A%2BDDTit2Y5UJB5pshg93Hb%2BdCjTUkkMo69UwcsGO%2FcOEQrkDWNWlW"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=9,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd110904bea5e49-SJC
Open service 104.21.46.185:443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=78
cf-cache-status: DYNAMIC
Server: cloudflare
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=pUQEtNPeSyC8rpWRJt6zHkypqhIKeoPZkC2glcj%2Farfp%2Bt7H6MbkQSeUiXDa76bwfZr5MhVI4CX4yIhAN55U3Hs9GDcHTbzhfTlBRZGhH50hcVldcyokhK%2BQAm4E2EFrtllVhw%3D%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Vary: Accept-Encoding
CF-RAY: 9bd110908a5b679e-SJC
Open service 104.21.46.185:80 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Length: 0
Connection: close
Location: https://tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=CRt90Plv3jgPgJ3XndV1m5KZEWjta1UZPXt8wQhp%2Bnlk1KpNQf99mWWIJi%2FVhc%2FFuKEaEII3NEwzyUzBFtuoVtBEtVG4%2FwnMyR4RQOUSIR9N"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=10,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd110906b2c8823-SIN
Open service 2606:4700:3033::ac43:8d61:443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ClYj1qV%2FbzTHAsACXoG9h9QWx%2FeFSSv0s5Ty7hc09h%2FxigmKX1yMiRAYRF%2FKL85kVtrBEa5gf%2BKRUFFuUw%2FmEriQrccrGSG9cQUXMNnKoPU75M4VIhJdJDgUiKOr"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd1108fd86e3a43-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3037::6815:2eb9:443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=zZMosrXdh00GTv44uUv74Vabwz%2FzjFUpx1ngKGOT1RHthjZFU5N%2BBmK2y82C0j4uytolLT0wTaUfSXuVSE4jib7kx2VKdyVpLKJGf%2FQMrShxt2bv8OmZO44DemaN"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd1108fcd663a54-FRA
alt-svc: h3=":443"; ma=86400
Open service 172.67.141.97:80 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:19:18 GMT
Content-Length: 0
Connection: close
Location: https://tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=yh7xY31nqfpo4gHPyCaIp5dqDJdG4vzsO%2FqP6NJvMfFfSAQ0GwX%2BwxwbIZnI96%2FmbeavqlqWIBjwx%2ByDz3Pv4%2F3WzPBIhc6jJO68djqqnfii"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=18,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd1108f691f36bb-YYZ
Open service 172.67.141.97:443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=9PaELYdISjJBLldEiRFvzaGLias0Ya8oUJfIbLq10VLy2WOblB2s8csWzRaKqlOR3hHRqkKhqx9DU084j2lb8pJvafkvRTHcq%2FPY10XBhh%2Fc"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=49
CF-RAY: 9bd1108fc9532caf-EWR
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3037::6815:2eb9:80 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:19:18 GMT
Content-Length: 0
Connection: close
Location: https://tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=lAQDl1karutLmX8ibxl4FJxJk7djFytjeACZlKnAygT1jm5vPUQfgj07nCZY7Lf7nqwoNa1rfKEF9iiSYZVKA4b4ADFojEzaNMTKWTCmCOtG%2F%2Bm00iRt%2Fx1J706z"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bd1108f4e59924d-FRA
Open service 2606:4700:3037::6815:2eb9:8443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:21 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=8NvbQe5cGUPojTbk6b5rt2dfdFBmydHgpa0Y%2BFFy%2BHEXK8%2BVF8UJZQGnofcUeHYp%2Bn8CKd6fX06eV%2BhkV5I91GwsVXnkwSiZWVPjTb%2BZigVGZYX2lIPtWaKO2SQi"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=8,cfOrigin;dur=1223
CF-RAY: 9bd11095ac55403d-BOM
alt-svc: h3=":8443"; ma=86400
Open service 104.21.46.185:8443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:19 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=bqfoG3NIj39LgFM38aG%2BOOwANY2qyYPxKuGRicojrTaKni2S%2FF1YLp5iuHgRq9llj%2FFBZ2PCQVEbn%2BX%2BhzoTLZ1hkt%2BhqMRwmcQ2VnJqt0j3"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=94
CF-RAY: 9bd1108fcde2dfb9-EWR
alt-svc: h3=":8443"; ma=86400
Open service 2606:4700:3033::ac43:8d61:8443 · tarantulalist.com
2026-01-13 01:19
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:19:18 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=uwV5Qj8zm9%2B%2B2%2BpOYgaUN1NUN2ObGlXIziA6NALLNV9h%2BmEoOcVPiVuiglrvq4sqIkreU3BVeT1ys%2ByBIfVay2bILdm5N6PFzzzTTeBV48dxj%2Bsi5nZAcEm3VEvS"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd1108f5b0f35fc-FRA
alt-svc: h3=":8443"; ma=86400
Open service 2606:4700:3037::6815:2eb9:443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=qw8X62scVbV6LybdiYTfRhWa5vDrlR2xm5W0aubLK3JfVqSIn6up1vW6z%2F4iRb27x7WXcsmZyYsTPkjtCIPlcFyEiDVHYQQIj5BXRicubNDB9g%2BOtni7haCrxccZDqjLWkClYuF%2F"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=15,cfOrigin;dur=47
CF-RAY: 9bd10fe8bc40a3d3-SIN
alt-svc: h3=":443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d29be9d4202f4c46af823da645ea1845","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":tru
Open service 2606:4700:3037::6815:2eb9:8443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
cf-cache-status: DYNAMIC
Server: cloudflare
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=R71eioLaMDxpZqDCmSIHwxT0PY4z%2Ba2w1L4LsLqJ1AcT670cghdd5%2FN4hyOq4eVllXbryjmTjx0qVLzaMZkPJoEDMeu7vtqMABw1%2Biz%2FrgWDzq%2FtOl2QNmvasSik3rNDUb2y5tDiZzcCPs8GL8hU7aVR7M8zQ%2Baf2ORY"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
CF-RAY: 9bd10fe71b269229-FRA
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
</body>
</html>
Open service 2606:4700:3033::ac43:8d61:80 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:18:51 GMT
Content-Length: 0
Connection: close
Location: https://keeperbeta.tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FKa%2Fw82ZTkgOGF67xDRk2HacVANoyBna719%2FzVllvodi28fl5%2BPqmtCp%2Fg7LXw%2F9igRl%2BLoXqW%2Fij2SqFse%2Bp01sGFOIRjj80gLW5Fb3CBonTDehLaEgjbU%2Bp5tRP28YnADUBVNTXJg%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=14,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd10fe6d966aaa0-YYZ
Open service 104.21.46.185:80 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Length: 0
Connection: close
Location: https://keeperbeta.tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=deER4XiiW6hub65PTXAG3Oi914kV%2FM7MWV3TJNQIt2%2BEHenq%2FIi4La3U9tiarmFLWCXMqda%2B9aGsJO%2FGVhqi%2FPMfoyKcl8De702FeKAajSzLDtZuA7mDgIT%2BbGc%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=12,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd10fe6ec393aa5-BOM
Open service 2606:4700:3033::ac43:8d61:443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=3w9EzZzM0%2FYVu%2FSEIstkjhWlJHArKaKan8EzzSYYBOnTDBImjw%2F6qI0l863AzIVyddQpQ8ExXamrQIPF%2BTSZROdQPFI7rVwr9e6ze4NiVMS1%2BESCWswItHxTBmGfNJ0QM4CubSSq64Q%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=11,cfOrigin;dur=40
CF-RAY: 9bd10fe74a8b43d9-EWR
alt-svc: h3=":443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d29be9d4202f4c46af823da645ea1845","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":tru
Open service 2606:4700:3037::6815:2eb9:80 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:18:51 GMT
Content-Length: 0
Connection: close
Location: https://keeperbeta.tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=BG87IOj3nDVVFEMJp3HE5LQWJnWLl%2BmULKuJhKgPJBBooirXYHe5qxGiuN1soXAzAqZLzW5zQtcewk%2F%2BB7z8Phb9EptFt3%2FPn9sQAld3agvY9BCKa9AcMOzzItrUClcCTemoeXDCbsM%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=12,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9bd10fe69cba985c-EWR
Open service 172.67.141.97:8443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=8QRpPLfzGwfpoKDdNR8%2Bq2vthC0SE8PpQcF9odkya3fG9ZYwZ9YK11zTOJIxH7CL%2FVwZCrMaNVrm%2BfMI2nT827GXZlg3MCOstY9pEmrNhtKP2W6gYlOpoiHD"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd10fe6cf43ef29-LHR
alt-svc: h3=":8443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
</body>
</html>
Open service 172.67.141.97:80 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 301 Moved Permanently
Date: Tue, 13 Jan 2026 01:18:51 GMT
Content-Length: 0
Connection: close
Location: https://keeperbeta.tarantulalist.com/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=pgxh93lgvnbmtk5r1SV9c9zgPOFEpoMf6JPUbMTltzFKW%2FkB1t5OumhXIr86ilf3asA%2B3wnnYkkJl5cQLG93sWZnAZLKQJU5gniKMjuvK3HwSiol3xkFNLaLtkQ%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bd10fe66fc8dcc2-FRA
Open service 2606:4700:3033::ac43:8d61:8443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=i11GcEntZZNqMeAL72TsPIl9Tsl2%2FSARMpItP9elHNumHG4tH40TBUXylAhBZgook%2B%2FgViGMoxuwofMF7KGH29e9Aedg4b3XAhqalEhziXYDpRB54XAhRzemcFkbfnvnxlmtpgYtO4U%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd10fe6dd12588c-AMS
alt-svc: h3=":8443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
</body>
</html>
Open service 172.67.141.97:443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
cf-cache-status: DYNAMIC
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=dDhW%2FAY3YpARis9bp%2FJwkFTXdPFb0UVV%2F00zpADoCY4VREc%2Fg2u824WB08XPS%2B7sxKvTs41xaCSUOeQT8%2BJI9ZjjTV34ECyTaOB5B6MM%2BCjCy57vZWBFhFvBfE4%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=9,cfOrigin;dur=33
CF-RAY: 9bd10fe71f471fa8-SJC
alt-svc: h3=":443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d29be9d4202f4c46af823da645ea1845","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":tru
Open service 104.21.46.185:8443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:51 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Xye6LevbQzP%2BH%2FIcP53HK76WlGVrb4GBWe8YMuyrRiKAh0npMLbgCs%2BOgVSX6wYo7B44KdjW%2F5m2XveE%2BH0PTipD1XdK9bip6F02hMZ%2BPhkiARyQ9%2F3L%2F9q8"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd10fe68c0ef5ec-AMS
alt-svc: h3=":8443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
</body>
</html>
Open service 104.21.46.185:443 · keeperbeta.tarantulalist.com
2026-01-13 01:18
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2026 01:18:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=0, must-revalidate
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=4zAoFZJYM2koInWhB0yRSnUdPwzV4tOW28x3DAyQc2Kd97MVnADQrhKMfhleJQ74lF%2B5z%2FbnnNr%2FpyDx2CAewQ7oQA3Obl34XpjkAgDCbOLjLqSIqDmb0%2Fu7ho4%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9bd10fe6ae029f11-FRA
alt-svc: h3=":443"; ma=86400
Page title: Keeper by Tarantula List
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="description" content="Keeper by Tarantula List - Offline-first recordkeeping for exotic pet enthusiasts">
<meta name="theme-color" content="#2d5016" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#1a2e0a" media="(prefers-color-scheme: dark)">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<title>Keeper by Tarantula List</title>
<link rel="manifest" href="manifest.webmanifest">
<link rel="icon" type="image/png" href="assets/img/icon-192.png">
<link rel="apple-touch-icon" href="assets/img/icon-192.png">
<link rel="stylesheet" href="assets/css/styles.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" integrity="sha512-XMVd28F1oH/O71fzwBnV7HucLxVwtxf26XV8P4wPk26EDxuGZ91N8bsOttmnomcCD3CS5ZMRL50H0GgOHvegtg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="app" class="app-container">
<header class="app-header" role="banner">
<button id="menu-toggle" class="menu-toggle" aria-label="Toggle menu" aria-expanded="false">
<span class="hamburger"></span>
</button>
<h1 class="app-title">
<a href="#/" aria-label="Home">Keeper by Tarantula List</a>
</h1>
<div class="header-actions">
<button id="theme-toggle" class="icon-btn" aria-label="Toggle dark mode" title="Toggle theme">
<span class="theme-icon"></span>
</button>
</div>
</header>
<nav id="sidebar" class="sidebar" role="navigation" aria-label="Main navigation">
<ul class="nav-list">
<li><a href="#/" class="nav-link" data-route="home"><span class="nav-icon">🏠</span> Dashboard</a></li>
<li><a href="#/animals" class="nav-link" data-route="animals"><span class="nav-icon">🕷️</span> All Animals</a></li>
<li class="nav-divider" role="separator"></li>
<li id="locations-nav-container"><ul id="locations-nav-list" class="nav-sublist"></ul></li>
<li class="nav-divider" role="separator"></li>
<li><a href="#/settings" class="nav-link" data-route="settings"><span class="nav-icon">⚙️</span> Settings</a></li>
<li><a href="#/about" class="nav-link" data-route="about"><span class="nav-icon">ℹ️</span> About</a></li>
</ul>
</nav>
<div id="sidebar-overlay" class="sidebar-overlay" aria-hidden="true"></div>
<main id="main-content" class="main-content" role="main" tabindex="-1">
<!-- Dynamic content rendered here -->
</main>
<div id="toast-container" class="toast-container" role="alert" aria-live="polite"></div>
<div id="modal-container" class="modal-container" aria-hidden="true">
<div class="modal-backdrop"></div>
<div class="modal" role="dialog" aria-modal="true">
<div class="modal-header">
<h2 class="modal-title" id="modal-title"></h2>
<button class="modal-close" aria-label="Close">×</button>
</div>
<div class="modal-body" id="modal-body"></div>
<div class="modal-footer" id="modal-footer"></div>
</div>
</div>
</div>
<script type="module" src="assets/js/app.js"></script>
</body>
</html>