mirror of
https://github.com/Shineii86/AniKotoAPI.git
synced 2026-10-22 02:45:10 +00:00
v1.6.0: Premium landing page redesign + missing files
index.html: - Complete rebuild with premium UI/UX (no emojis, all SVG icons) - Live interactive API console with preset endpoints and JSON viewer - Canvas particle system (60 particles, purple-tinted) - Scroll-reveal animations via IntersectionObserver - Animated stat counters on viewport entry - Infinite scrolling marquee with SVG icons - Endpoint explorer with sidebar nav, multi-language code tabs (cURL/JS/Python) - 4 interactive playground cards - Glassmorphism sticky header with scroll-aware blur - Full 4-column footer 404.html: - Glitch animation effect on 404 code - CRT scanline overlay - SVG icons throughout New files: - manifest.json (PWA: theme color, icons, display) - robots.txt (crawler directives + sitemap) - sitemap.xml (4 pages) - og-image.svg (gradient design with title) - privacy.html (data collection, DMCA, third-party) - tos.html (acceptable use, rate limits, liability, DMCA)
This commit is contained in:
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.6.0] - 2026-06-08
|
||||
|
||||
### Added
|
||||
- `public/manifest.json` — PWA manifest with theme color, icons, display mode
|
||||
- `public/robots.txt` — Crawler directives and sitemap reference
|
||||
- `public/sitemap.xml` — XML sitemap with homepage, API, privacy, and terms pages
|
||||
- `public/og-image.svg` — SVG Open Graph image with gradient design, title, and tagline
|
||||
- `public/privacy.html` — Full privacy policy (data collection, third-party, DMCA, cookies)
|
||||
- `public/tos.html` — Full terms of service (acceptable use, rate limits, liability, DMCA)
|
||||
|
||||
### Changed
|
||||
- Completely rebuilt `public/index.html` from scratch (premium UI/UX)
|
||||
- Replaced all emojis with inline SVG icons throughout the entire page
|
||||
- Hero section now features a live interactive API console (fetch, run, see JSON response)
|
||||
- Console has preset buttons (Home, Search, Stream, Random, Schedule) with one-click switching
|
||||
- Added scroll-reveal animations via IntersectionObserver (no external libraries)
|
||||
- Added animated particle system via canvas (60 particles, purple-tinted)
|
||||
- Added glassmorphism sticky header with scroll-aware background blur
|
||||
- Added stats section with animated counters (counts up on viewport entry)
|
||||
- Added infinite scrolling marquee with feature highlights and SVG icons
|
||||
- Added endpoint explorer with sidebar navigation, multi-language code tabs (cURL, JS, Python)
|
||||
- Added playground section with 4 interactive cards (search, stream, random, schedule)
|
||||
- Added CTA section with gradient background
|
||||
- Added full footer with 4-column grid (brand, API links, resources, legal)
|
||||
- Rebuilt `public/404.html` with glitch animation effect, scanlines, and SVG icons
|
||||
- All CSS uses custom properties, no external frameworks
|
||||
|
||||
## [1.5.5] - 2026-06-08
|
||||
|
||||
### Changed
|
||||
|
||||
+52
-65
@@ -3,80 +3,67 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>404 - AniKatoAPI</title>
|
||||
<title>404 — AniKatoAPI</title>
|
||||
<meta name="theme-color" content="#0A0A12" />
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛩</text></svg>" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
:root {
|
||||
--bg-primary: #0a0a12;
|
||||
--text-primary: #eee;
|
||||
--text-secondary: #9a9ab0;
|
||||
--accent-pink: #f43f8e;
|
||||
--accent-purple: #a855f7;
|
||||
--accent-indigo: #6366f1;
|
||||
--border: rgba(255,255,255,0.08);
|
||||
--glass: rgba(255,255,255,0.03);
|
||||
}
|
||||
* { margin:0; padding:0; box-sizing:border-box; }
|
||||
body {
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
background: var(--bg-primary); color: var(--text-primary);
|
||||
min-height: 100vh; display: flex; align-items: center; justify-content: center;
|
||||
overflow: hidden; position: relative;
|
||||
}
|
||||
.ambient { position: fixed; inset: 0; pointer-events: none; }
|
||||
.orb { position: absolute; border-radius: 50%; filter: blur(100px); opacity: .12; }
|
||||
.orb-1 { width: 500px; height: 500px; background: var(--accent-pink); top: -150px; left: -100px; animation: drift 20s ease-in-out infinite; }
|
||||
.orb-2 { width: 400px; height: 400px; background: var(--accent-purple); bottom: -100px; right: -80px; animation: drift 16s ease-in-out infinite reverse; }
|
||||
@keyframes drift {
|
||||
0%,100% { transform: translate(0,0) scale(1); }
|
||||
50% { transform: translate(30px,-20px) scale(1.06); }
|
||||
}
|
||||
.container {
|
||||
position: relative; z-index: 1; text-align: center; padding: 40px;
|
||||
}
|
||||
.code {
|
||||
font-size: clamp(6rem, 15vw, 12rem); font-weight: 900; line-height: 1;
|
||||
background: linear-gradient(135deg, var(--accent-pink), var(--accent-purple), var(--accent-indigo));
|
||||
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
|
||||
animation: float 3s ease-in-out infinite;
|
||||
}
|
||||
@keyframes float {
|
||||
0%,100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-8px); }
|
||||
}
|
||||
.title { font-size: 1.4rem; font-weight: 600; margin: 16px 0 8px; }
|
||||
.desc { color: var(--text-secondary); font-size: .95rem; margin-bottom: 28px; line-height: 1.6; }
|
||||
.actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
|
||||
.btn {
|
||||
padding: 11px 24px; border-radius: 10px; font-size: .88rem; font-weight: 600;
|
||||
text-decoration: none; transition: all .2s; display: inline-flex; align-items: center; gap: 8px;
|
||||
}
|
||||
.btn-primary {
|
||||
background: linear-gradient(135deg, var(--accent-pink), var(--accent-purple));
|
||||
color: #fff; border: none;
|
||||
}
|
||||
.btn-primary:hover { opacity: .9; transform: translateY(-1px); }
|
||||
.btn-ghost {
|
||||
background: var(--glass); border: 1px solid var(--border); color: var(--text-secondary);
|
||||
}
|
||||
.btn-ghost:hover { background: rgba(255,255,255,.06); color: var(--text-primary); }
|
||||
.footer-note {
|
||||
margin-top: 40px; color: #444; font-size: .72rem;
|
||||
}
|
||||
:root{--bg:#0A0A12;--text:#E2E8F0;--text2:#94A3B8;--text3:#64748B;--purple:#A855F7;--pink:#EC4899;--indigo:#6366F1;--green:#22C55E;--red:#EF4444;--border:rgba(255,255,255,.06);--glass:rgba(255,255,255,.03)}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}
|
||||
.ambient{position:fixed;inset:0;pointer-events:none}
|
||||
.orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.1}
|
||||
.orb-1{width:500px;height:500px;background:var(--purple);top:-150px;left:-100px;animation:drift 24s ease-in-out infinite}
|
||||
.orb-2{width:400px;height:400px;background:var(--pink);bottom:-100px;right:-80px;animation:drift 20s ease-in-out infinite reverse}
|
||||
@keyframes drift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,-30px) scale(1.08)}}
|
||||
.container{position:relative;z-index:1;text-align:center;padding:40px;max-width:560px}
|
||||
.code{font-size:clamp(6rem,18vw,14rem);font-weight:900;line-height:1;letter-spacing:-.06em;background:linear-gradient(135deg,var(--purple),var(--pink),var(--indigo));-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:float 4s ease-in-out infinite}
|
||||
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
|
||||
.title{font-size:1.4rem;font-weight:700;margin:16px 0 8px}
|
||||
.desc{color:var(--text2);font-size:.95rem;margin-bottom:32px;line-height:1.7}
|
||||
.actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
|
||||
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border-radius:10px;font-size:.88rem;font-weight:600;text-decoration:none;border:none;cursor:pointer;transition:all .25s;font-family:inherit}
|
||||
.btn svg{width:16px;height:16px}
|
||||
.btn-primary{background:linear-gradient(135deg,var(--purple),var(--pink));color:#fff;box-shadow:0 4px 24px rgba(168,85,247,.3)}
|
||||
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 32px rgba(168,85,247,.4)}
|
||||
.btn-ghost{background:var(--glass);border:1px solid rgba(255,255,255,.1);color:var(--text)}
|
||||
.btn-ghost:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.15)}
|
||||
.glitch{position:relative;display:inline-block}
|
||||
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg)}
|
||||
.glitch::before{left:2px;text-shadow:-2px 0 var(--pink);clip-path:inset(0 0 0 0);animation:glitch-1 2s infinite linear alternate-reverse}
|
||||
.glitch::after{left:-2px;text-shadow:2px 0 var(--indigo);clip-path:inset(0 0 0 0);animation:glitch-2 3s infinite linear alternate-reverse}
|
||||
@keyframes glitch-1{0%{clip-path:inset(40% 0 61% 0)}20%{clip-path:inset(92% 0 1% 0)}40%{clip-path:inset(43% 0 1% 0)}60%{clip-path:inset(25% 0 58% 0)}80%{clip-path:inset(54% 0 7% 0)}100%{clip-path:inset(58% 0 43% 0)}}
|
||||
@keyframes glitch-2{0%{clip-path:inset(65% 0 13% 0)}20%{clip-path:inset(79% 0 2% 0)}40%{clip-path:inset(48% 0 38% 0)}60%{clip-path:inset(33% 0 2% 0)}80%{clip-path:inset(16% 0 62% 0)}100%{clip-path:inset(27% 0 42% 0)}}
|
||||
.status-line{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px;color:var(--text3);font-size:.78rem;font-family:'JetBrains Mono',monospace}
|
||||
.status-dot{width:6px;height:6px;border-radius:50%;background:var(--red);animation:pulse 1.5s infinite}
|
||||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
|
||||
.scanline{position:fixed;inset:0;z-index:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="ambient"><div class="orb orb-1"></div><div class="orb orb-2"></div></div>
|
||||
<div class="scanline"></div>
|
||||
<div class="container">
|
||||
<div class="code">404</div>
|
||||
<div class="title">This endpoint doesn't exist</div>
|
||||
<div class="desc">The path you're looking for isn't part of the AniKatoAPI.<br/>Check the docs or try a valid endpoint.</div>
|
||||
<div class="code"><span class="glitch" data-text="404">404</span></div>
|
||||
<div class="title">Endpoint Not Found</div>
|
||||
<div class="desc">The path you requested doesn't exist in the AniKatoAPI.<br/>Check the documentation or try a valid endpoint.</div>
|
||||
<div class="actions">
|
||||
<a href="/" class="btn btn-primary">Home</a>
|
||||
<a href="/api" class="btn btn-ghost">API Status</a>
|
||||
<a href="https://github.com/Shineii86/AniKatoAPI#readme" class="btn btn-ghost" target="_blank">Docs</a>
|
||||
<a href="/" class="btn btn-primary">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
|
||||
Home
|
||||
</a>
|
||||
<a href="/api" class="btn btn-ghost">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
|
||||
API Status
|
||||
</a>
|
||||
<a href="https://github.com/Shineii86/AniKatoAPI#readme" target="_blank" class="btn btn-ghost">
|
||||
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
||||
Docs
|
||||
</a>
|
||||
</div>
|
||||
<div class="footer-note">AniKatoAPI · Made by Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ</div>
|
||||
<div class="status-line"><span class="status-dot"></span> HTTP 404 · Not Found</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+656
-443
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "AniKatoAPI",
|
||||
"short_name": "AniKatoAPI",
|
||||
"description": "Free REST API for anime data. Browse, search, stream episodes. No API key required.",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#0A0A12",
|
||||
"theme_color": "#A855F7",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/og-image.svg",
|
||||
"sizes": "any",
|
||||
"type": "image/svg+xml",
|
||||
"purpose": "any"
|
||||
}
|
||||
],
|
||||
"categories": ["developer", "entertainment"]
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" fill="none">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1200" y2="630" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#0A0A12"/>
|
||||
<stop offset="1" stop-color="#111120"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="grad" x1="0" y1="0" x2="600" y2="630" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#A855F7"/>
|
||||
<stop offset="1" stop-color="#EC4899"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="orb1" cx="300" cy="200" r="200" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#A855F7" stop-opacity="0.3"/>
|
||||
<stop offset="1" stop-color="#A855F7" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="orb2" cx="900" cy="450" r="180" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#EC4899" stop-opacity="0.25"/>
|
||||
<stop offset="1" stop-color="#EC4899" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="630" fill="url(#bg)"/>
|
||||
<circle cx="300" cy="200" r="250" fill="url(#orb1)"/>
|
||||
<circle cx="950" cy="420" r="220" fill="url(#orb2)"/>
|
||||
<circle cx="600" cy="315" r="160" stroke="url(#grad)" stroke-width="3" fill="none" opacity="0.3"/>
|
||||
<circle cx="600" cy="315" r="120" stroke="url(#grad)" stroke-width="2" fill="none" opacity="0.15"/>
|
||||
<text x="600" y="280" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="900" font-size="72" fill="url(#grad)">AniKatoAPI</text>
|
||||
<text x="600" y="340" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="500" font-size="24" fill="#94A3B8">Free Anime Data REST API</text>
|
||||
<text x="600" y="380" text-anchor="middle" font-family="monospace" font-weight="400" font-size="16" fill="#64748B">anikato.vercel.app/api</text>
|
||||
<rect x="480" y="410" width="240" height="40" rx="20" fill="url(#grad)" opacity="0.9"/>
|
||||
<text x="600" y="436" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="600" font-size="14" fill="#fff">No API Key Required</text>
|
||||
<circle cx="120" cy="540" r="4" fill="#A855F7" opacity="0.4"/>
|
||||
<circle cx="180" cy="560" r="3" fill="#EC4899" opacity="0.3"/>
|
||||
<circle cx="1050" cy="80" r="5" fill="#6366F1" opacity="0.3"/>
|
||||
<circle cx="1100" cy="120" r="3" fill="#A855F7" opacity="0.25"/>
|
||||
<circle cx="80" cy="100" r="3" fill="#EC4899" opacity="0.2"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Privacy Policy — AniKatoAPI</title>
|
||||
<meta name="theme-color" content="#0A0A12" />
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛩</text></svg>" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
:root{--bg:#0A0A12;--bg2:#111120;--text:#E2E8F0;--text2:#94A3B8;--text3:#64748B;--purple:#A855F7;--pink:#EC4899;--border:rgba(255,255,255,.06);--glass:rgba(255,255,255,.03)}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.8}
|
||||
.ambient{position:fixed;inset:0;pointer-events:none;z-index:0}
|
||||
.orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.08}
|
||||
.orb-1{width:500px;height:500px;background:var(--purple);top:-150px;left:-100px}
|
||||
.orb-2{width:400px;height:400px;background:var(--pink);bottom:-100px;right:-80px}
|
||||
header{position:sticky;top:0;z-index:100;background:rgba(10,10,18,.88);backdrop-filter:blur(24px);border-bottom:1px solid var(--border);padding:0 24px}
|
||||
.header-inner{max-width:720px;margin:0 auto;display:flex;align-items:center;height:60px}
|
||||
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:1rem}
|
||||
.logo span{background:linear-gradient(135deg,var(--purple),var(--pink));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
|
||||
.content{position:relative;z-index:1;max-width:720px;margin:0 auto;padding:60px 24px 80px}
|
||||
h1{font-size:2rem;font-weight:800;letter-spacing:-.03em;margin-bottom:8px}
|
||||
.updated{color:var(--text3);font-size:.82rem;margin-bottom:40px;font-family:'JetBrains Mono',monospace}
|
||||
h2{font-size:1.2rem;font-weight:700;margin:32px 0 12px;padding-top:16px;border-top:1px solid var(--border)}
|
||||
h2:first-of-type{border-top:none;padding-top:0}
|
||||
p{color:var(--text2);font-size:.92rem;margin-bottom:16px}
|
||||
ul{color:var(--text2);font-size:.92rem;margin:0 0 16px 20px}
|
||||
li{margin-bottom:6px}
|
||||
code{font-family:'JetBrains Mono',monospace;font-size:.82rem;background:rgba(168,85,247,.1);color:var(--purple);padding:2px 6px;border-radius:4px}
|
||||
a{color:var(--purple);text-decoration:none}
|
||||
a:hover{text-decoration:underline}
|
||||
footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:24px;text-align:center;color:var(--text3);font-size:.75rem}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="ambient"><div class="orb orb-1"></div><div class="orb orb-2"></div></div>
|
||||
<header><div class="header-inner"><a href="/" class="logo">⛩ <span>AniKato</span>API</a></div></header>
|
||||
<div class="content">
|
||||
<h1>Privacy Policy</h1>
|
||||
<div class="updated">Last updated: 2026-06-08</div>
|
||||
|
||||
<h2>1. Overview</h2>
|
||||
<p>AniKatoAPI ("the Service") is a free, open-source REST API that provides anime data by scraping publicly available information from anikototv.to and related domains. This Privacy Policy explains how we handle data when you use the Service.</p>
|
||||
|
||||
<h2>2. Data We Collect</h2>
|
||||
<p>The Service is designed to be <strong>stateless and privacy-preserving</strong>. We do not collect, store, or process any personal data from API consumers.</p>
|
||||
<ul>
|
||||
<li><strong>No user accounts</strong> — The API requires no authentication, registration, or API keys.</li>
|
||||
<li><strong>No cookies</strong> — We do not set tracking cookies on API responses.</li>
|
||||
<li><strong>No analytics</strong> — We do not use Google Analytics, Mixpanel, or any third-party analytics on API endpoints.</li>
|
||||
<li><strong>No logging of personal data</strong> — Server logs may contain IP addresses and request paths (standard Vercel/Node.js behavior), but these are not stored, sold, or shared.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Third-Party Data Sources</h2>
|
||||
<p>The Service scrapes data from <code>anikototv.to</code> and related domains. This data (anime titles, descriptions, images, episode information) belongs to the respective content owners. We do not claim ownership of this data.</p>
|
||||
<p>If you are a content owner and wish to have your data removed from this API, please open an issue on our <a href="https://github.com/Shineii86/AniKatoAPI" target="_blank">GitHub repository</a>.</p>
|
||||
|
||||
<h2>4. Data Storage</h2>
|
||||
<p>The Service uses a simple in-memory cache (5-minute TTL) to reduce repeated scraping. This cache is:</p>
|
||||
<ul>
|
||||
<li>Purely temporary and reset on every server restart</li>
|
||||
<li>Not persisted to any database</li>
|
||||
<li>Not associated with any user identity</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Data Sharing</h2>
|
||||
<p>We do not sell, trade, or share any data with third parties. The API is provided as-is for educational and development purposes.</p>
|
||||
|
||||
<h2>6. Children's Privacy</h2>
|
||||
<p>The Service is not directed at children under 13. We do not knowingly collect information from children under 13.</p>
|
||||
|
||||
<h2>7. Changes to This Policy</h2>
|
||||
<p>We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated "Last updated" date.</p>
|
||||
|
||||
<h2>8. Contact</h2>
|
||||
<p>For questions about this Privacy Policy, open an issue at <a href="https://github.com/Shineii86/AniKatoAPI/issues" target="_blank">github.com/Shineii86/AniKatoAPI/issues</a>.</p>
|
||||
</div>
|
||||
<footer>© 2026 AniKatoAPI · <a href="/" style="color:var(--purple)">Home</a> · <a href="/tos.html" style="color:var(--purple)">Terms</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,6 @@
|
||||
# AniKatoAPI — https://anikato.vercel.app
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Allow: /api
|
||||
|
||||
Sitemap: https://anikato.vercel.app/sitemap.xml
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://anikato.vercel.app/</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikato.vercel.app/api</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikato.vercel.app/privacy.html</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://anikato.vercel.app/tos.html</loc>
|
||||
<lastmod>2026-06-08</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -0,0 +1,94 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Terms of Service — AniKatoAPI</title>
|
||||
<meta name="theme-color" content="#0A0A12" />
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⛩</text></svg>" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
:root{--bg:#0A0A12;--bg2:#111120;--text:#E2E8F0;--text2:#94A3B8;--text3:#64748B;--purple:#A855F7;--pink:#EC4899;--border:rgba(255,255,255,.06);--glass:rgba(255,255,255,.03)}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.8}
|
||||
.ambient{position:fixed;inset:0;pointer-events:none;z-index:0}
|
||||
.orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.08}
|
||||
.orb-1{width:500px;height:500px;background:var(--purple);top:-150px;left:-100px}
|
||||
.orb-2{width:400px;height:400px;background:var(--pink);bottom:-100px;right:-80px}
|
||||
header{position:sticky;top:0;z-index:100;background:rgba(10,10,18,.88);backdrop-filter:blur(24px);border-bottom:1px solid var(--border);padding:0 24px}
|
||||
.header-inner{max-width:720px;margin:0 auto;display:flex;align-items:center;height:60px}
|
||||
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:1rem}
|
||||
.logo span{background:linear-gradient(135deg,var(--purple),var(--pink));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
|
||||
.content{position:relative;z-index:1;max-width:720px;margin:0 auto;padding:60px 24px 80px}
|
||||
h1{font-size:2rem;font-weight:800;letter-spacing:-.03em;margin-bottom:8px}
|
||||
.updated{color:var(--text3);font-size:.82rem;margin-bottom:40px;font-family:'JetBrains Mono',monospace}
|
||||
h2{font-size:1.2rem;font-weight:700;margin:32px 0 12px;padding-top:16px;border-top:1px solid var(--border)}
|
||||
h2:first-of-type{border-top:none;padding-top:0}
|
||||
p{color:var(--text2);font-size:.92rem;margin-bottom:16px}
|
||||
ul{color:var(--text2);font-size:.92rem;margin:0 0 16px 20px}
|
||||
li{margin-bottom:6px}
|
||||
code{font-family:'JetBrains Mono',monospace;font-size:.82rem;background:rgba(168,85,247,.1);color:var(--purple);padding:2px 6px;border-radius:4px}
|
||||
a{color:var(--purple);text-decoration:none}
|
||||
a:hover{text-decoration:underline}
|
||||
strong{color:var(--text)}
|
||||
footer{position:relative;z-index:1;border-top:1px solid var(--border);padding:24px;text-align:center;color:var(--text3);font-size:.75rem}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="ambient"><div class="orb orb-1"></div><div class="orb orb-2"></div></div>
|
||||
<header><div class="header-inner"><a href="/" class="logo">⛩ <span>AniKato</span>API</a></div></header>
|
||||
<div class="content">
|
||||
<h1>Terms of Service</h1>
|
||||
<div class="updated">Last updated: 2026-06-08</div>
|
||||
|
||||
<h2>1. Acceptance of Terms</h2>
|
||||
<p>By accessing or using AniKatoAPI ("the Service"), you agree to be bound by these Terms of Service. If you do not agree, do not use the Service.</p>
|
||||
|
||||
<h2>2. Description of Service</h2>
|
||||
<p>AniKatoAPI is a free, open-source REST API that aggregates anime data from publicly available sources. The Service is provided "as is" without warranties of any kind.</p>
|
||||
|
||||
<h2>3. Educational Purpose</h2>
|
||||
<p>The Service is built and maintained for <strong>educational and learning purposes only</strong>. It demonstrates web scraping, API design, and serverless deployment techniques.</p>
|
||||
|
||||
<h2>4. No Affiliation</h2>
|
||||
<p>The Service is <strong>not affiliated with, endorsed by, or connected to</strong> anikototv.to, AniKato, or any of its subsidiaries or affiliates. All trademarks and content belong to their respective owners.</p>
|
||||
|
||||
<h2>5. Third-Party Content</h2>
|
||||
<p>All anime data, images, descriptions, and other content displayed through the API belong to their respective copyright holders. The Service does not host, store, or distribute any copyrighted media.</p>
|
||||
|
||||
<h2>6. Acceptable Use</h2>
|
||||
<p>You agree to use the Service responsibly and in compliance with all applicable laws. You must not:</p>
|
||||
<ul>
|
||||
<li>Use the Service for any illegal purpose</li>
|
||||
<li>Attempt to disrupt or overload the Service</li>
|
||||
<li>Scrape the Service to build a competing product</li>
|
||||
<li>Redistribute copyrighted content obtained through the Service</li>
|
||||
<li>Use the Service to infringe on the rights of others</li>
|
||||
</ul>
|
||||
|
||||
<h2>7. Rate Limiting</h2>
|
||||
<p>The Service uses in-memory caching with a 5-minute TTL. While there are no explicit rate limits, excessive requests may result in temporary degradation of service. Please cache responses on your end.</p>
|
||||
|
||||
<h2>8. Availability</h2>
|
||||
<p>The Service is hosted on Vercel's free tier and may experience downtime. We do not guarantee 100% availability. The Service may be modified, updated, or discontinued at any time without notice.</p>
|
||||
|
||||
<h2>9. Limitation of Liability</h2>
|
||||
<p>In no event shall the creators of AniKatoAPI be liable for any indirect, incidental, special, consequential, or punitive damages arising from your use of the Service.</p>
|
||||
|
||||
<h2>10. Intellectual Property</h2>
|
||||
<p>The source code of AniKatoAPI is open source and available on <a href="https://github.com/Shineii86/AniKatoAPI" target="_blank">GitHub</a> under the repository's license terms.</p>
|
||||
|
||||
<h2>11. DMCA / Takedowns</h2>
|
||||
<p>If you believe your copyrighted content is being displayed through this API without authorization, please open an issue at <a href="https://github.com/Shineii86/AniKatoAPI/issues" target="_blank">github.com/Shineii86/AniKatoAPI/issues</a> and we will promptly remove it.</p>
|
||||
|
||||
<h2>12. Changes to Terms</h2>
|
||||
<p>We reserve the right to modify these Terms at any time. Changes will be posted on this page with an updated "Last updated" date.</p>
|
||||
|
||||
<h2>13. Contact</h2>
|
||||
<p>For questions about these Terms, open an issue at <a href="https://github.com/Shineii86/AniKatoAPI/issues" target="_blank">github.com/Shineii86/AniKatoAPI/issues</a>.</p>
|
||||
</div>
|
||||
<footer>© 2026 AniKatoAPI · <a href="/" style="color:var(--purple)">Home</a> · <a href="/privacy.html" style="color:var(--purple)">Privacy</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user