OhMyDitzzy
commited on
Commit
·
3e04e3e
1
Parent(s):
aeb67ac
terms & policy
Browse files- src/client/App.tsx +4 -0
- src/client/pages/Privacy.tsx +203 -0
- src/client/pages/Terms.tsx +232 -0
- src/components/Footer.tsx +3 -3
src/client/App.tsx
CHANGED
|
@@ -5,6 +5,8 @@ import { Loader2 } from "lucide-react";
|
|
| 5 |
|
| 6 |
const Home = lazy(() => import("./pages/Home"));
|
| 7 |
const Docs = lazy(() => import("./pages/Docs"));
|
|
|
|
|
|
|
| 8 |
const NotFound = lazy(() => import("./pages/not-found"));
|
| 9 |
|
| 10 |
function PageLoader() {
|
|
@@ -25,6 +27,8 @@ export default function App() {
|
|
| 25 |
<Routes>
|
| 26 |
<Route path="/" element={<Home />} />
|
| 27 |
<Route path="/docs" element={<Docs />} />
|
|
|
|
|
|
|
| 28 |
<Route path="*" element={<NotFound />} />
|
| 29 |
</Routes>
|
| 30 |
</Suspense>
|
|
|
|
| 5 |
|
| 6 |
const Home = lazy(() => import("./pages/Home"));
|
| 7 |
const Docs = lazy(() => import("./pages/Docs"));
|
| 8 |
+
const Privacy = lazy(() => import("./pages/Privacy"));
|
| 9 |
+
const Terms = lazy(() => import("./pages/Terms"));
|
| 10 |
const NotFound = lazy(() => import("./pages/not-found"));
|
| 11 |
|
| 12 |
function PageLoader() {
|
|
|
|
| 27 |
<Routes>
|
| 28 |
<Route path="/" element={<Home />} />
|
| 29 |
<Route path="/docs" element={<Docs />} />
|
| 30 |
+
<Route path="/privacy" element={<Privacy />} />
|
| 31 |
+
<Route path="/terms" element={<Terms />} />
|
| 32 |
<Route path="*" element={<NotFound />} />
|
| 33 |
</Routes>
|
| 34 |
</Suspense>
|
src/client/pages/Privacy.tsx
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Footer } from "@/components/Footer";
|
| 2 |
+
import { Button } from "@/components/ui/button";
|
| 3 |
+
import { motion } from "framer-motion";
|
| 4 |
+
import { Shield, Mail, ArrowLeft } from "lucide-react";
|
| 5 |
+
import { Link } from "react-router-dom";
|
| 6 |
+
|
| 7 |
+
export default function Privacy() {
|
| 8 |
+
return (
|
| 9 |
+
<div className="min-h-screen bg-background flex flex-col font-sans selection:bg-primary/30">
|
| 10 |
+
<main className="flex-grow pt-8">
|
| 11 |
+
{/* Hero Section */}
|
| 12 |
+
<section className="relative overflow-hidden py-16 sm:py-24 border-b border-white/5">
|
| 13 |
+
<div className="absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[400px] bg-primary/10 blur-[120px] rounded-full opacity-50 pointer-events-none" />
|
| 14 |
+
|
| 15 |
+
<div className="relative max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 16 |
+
<Link to="/">
|
| 17 |
+
<Button variant="ghost" size="sm" className="mb-8 hover:bg-white/5">
|
| 18 |
+
<ArrowLeft className="w-4 h-4 mr-2" />
|
| 19 |
+
Back to Home
|
| 20 |
+
</Button>
|
| 21 |
+
</Link>
|
| 22 |
+
|
| 23 |
+
<motion.div
|
| 24 |
+
initial={{ opacity: 0, y: 20 }}
|
| 25 |
+
animate={{ opacity: 1, y: 0 }}
|
| 26 |
+
transition={{ duration: 0.5 }}
|
| 27 |
+
className="flex items-center gap-3 mb-6"
|
| 28 |
+
>
|
| 29 |
+
<div className="w-12 h-12 rounded-xl bg-primary/20 flex items-center justify-center">
|
| 30 |
+
<Shield className="w-6 h-6 text-primary" />
|
| 31 |
+
</div>
|
| 32 |
+
<h1 className="text-4xl sm:text-5xl font-display font-bold tracking-tight text-white">
|
| 33 |
+
Privacy Policy
|
| 34 |
+
</h1>
|
| 35 |
+
</motion.div>
|
| 36 |
+
|
| 37 |
+
<motion.p
|
| 38 |
+
initial={{ opacity: 0, y: 20 }}
|
| 39 |
+
animate={{ opacity: 1, y: 0 }}
|
| 40 |
+
transition={{ duration: 0.5, delay: 0.1 }}
|
| 41 |
+
className="text-muted-foreground mb-4"
|
| 42 |
+
>
|
| 43 |
+
<strong>Effective Date:</strong> January 15, 2026<br />
|
| 44 |
+
<strong>Last Updated:</strong> January 15, 2026
|
| 45 |
+
</motion.p>
|
| 46 |
+
</div>
|
| 47 |
+
</section>
|
| 48 |
+
|
| 49 |
+
{/* Content Section */}
|
| 50 |
+
<section className="py-16">
|
| 51 |
+
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 52 |
+
<motion.div
|
| 53 |
+
initial={{ opacity: 0, y: 20 }}
|
| 54 |
+
animate={{ opacity: 1, y: 0 }}
|
| 55 |
+
transition={{ duration: 0.5, delay: 0.2 }}
|
| 56 |
+
className="space-y-8"
|
| 57 |
+
>
|
| 58 |
+
{/* Introduction */}
|
| 59 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 60 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 61 |
+
<span className="text-primary">1.</span> Introduction
|
| 62 |
+
</h2>
|
| 63 |
+
<p className="text-muted-foreground leading-relaxed mb-4">
|
| 64 |
+
Welcome to DitzzyAPI ("we," "our," or "us"). This Privacy Policy explains how we collect, use, and protect information when you use our API services.
|
| 65 |
+
</p>
|
| 66 |
+
<div className="p-4 rounded-lg bg-primary/10 border border-primary/20">
|
| 67 |
+
<p className="text-sm text-white mb-2"><strong>Service Provider:</strong></p>
|
| 68 |
+
<p className="text-sm text-muted-foreground">DitzzyAPI | Aditya Putra Priana</p>
|
| 69 |
+
<p className="text-sm text-muted-foreground">Email: ditzdevs@gmail.com</p>
|
| 70 |
+
<p className="text-sm text-muted-foreground">Jurisdiction: Indonesia</p>
|
| 71 |
+
</div>
|
| 72 |
+
</div>
|
| 73 |
+
|
| 74 |
+
{/* Information We Collect */}
|
| 75 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 76 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 77 |
+
<span className="text-primary">2.</span> Information We Collect
|
| 78 |
+
</h2>
|
| 79 |
+
|
| 80 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">2.1 Automatically Collected Information</h3>
|
| 81 |
+
<p className="text-muted-foreground mb-4">When you use our API services, we automatically collect:</p>
|
| 82 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 83 |
+
<li><strong className="text-white">IP Address:</strong> Collected for rate limiting purposes and security monitoring</li>
|
| 84 |
+
<li><strong className="text-white">API Request Logs:</strong> Including endpoint accessed, timestamp, and response status codes</li>
|
| 85 |
+
<li><strong className="text-white">Usage Statistics:</strong> Aggregated data about API endpoint usage and request patterns</li>
|
| 86 |
+
</ul>
|
| 87 |
+
|
| 88 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">2.2 Information We DO NOT Collect</h3>
|
| 89 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 90 |
+
<li>Personal identification information (name, email, phone number)</li>
|
| 91 |
+
<li>User registration or account information</li>
|
| 92 |
+
<li>API keys or authentication tokens</li>
|
| 93 |
+
<li>Payment information</li>
|
| 94 |
+
<li>Cookies or tracking technologies for marketing</li>
|
| 95 |
+
<li>Content of URLs you submit to our services</li>
|
| 96 |
+
</ul>
|
| 97 |
+
</div>
|
| 98 |
+
|
| 99 |
+
{/* How We Use Your Information */}
|
| 100 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 101 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 102 |
+
<span className="text-primary">3.</span> How We Use Your Information
|
| 103 |
+
</h2>
|
| 104 |
+
<p className="text-muted-foreground mb-4">We use the collected information solely for:</p>
|
| 105 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 106 |
+
<li><strong className="text-white">Rate Limiting:</strong> IP addresses enforce our 25 requests per user limit</li>
|
| 107 |
+
<li><strong className="text-white">Service Improvement:</strong> Analyzing usage patterns to improve performance</li>
|
| 108 |
+
<li><strong className="text-white">Security:</strong> Detecting and preventing abuse or malicious activities</li>
|
| 109 |
+
<li><strong className="text-white">Statistics:</strong> Generating anonymous, aggregated statistics</li>
|
| 110 |
+
</ul>
|
| 111 |
+
</div>
|
| 112 |
+
|
| 113 |
+
{/* Data Retention */}
|
| 114 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 115 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 116 |
+
<span className="text-primary">4.</span> Data Retention
|
| 117 |
+
</h2>
|
| 118 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 119 |
+
<li><strong className="text-white">IP Addresses:</strong> Retained temporarily for rate limiting (cleared periodically)</li>
|
| 120 |
+
<li><strong className="text-white">Request Logs:</strong> Stored for operational purposes and deleted regularly</li>
|
| 121 |
+
<li><strong className="text-white">Aggregated Statistics:</strong> Retained indefinitely in anonymized form</li>
|
| 122 |
+
</ul>
|
| 123 |
+
</div>
|
| 124 |
+
|
| 125 |
+
{/* Data Sharing */}
|
| 126 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 127 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 128 |
+
<span className="text-primary">5.</span> Data Sharing and Disclosure
|
| 129 |
+
</h2>
|
| 130 |
+
<p className="text-muted-foreground mb-4">
|
| 131 |
+
We do NOT sell, trade, or rent your information to third parties. We may disclose information only when:
|
| 132 |
+
</p>
|
| 133 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 134 |
+
<li>Required by Indonesian law or legal process</li>
|
| 135 |
+
<li>Necessary to protect our rights, property, or safety</li>
|
| 136 |
+
<li>To prevent fraud or abuse of our services</li>
|
| 137 |
+
</ul>
|
| 138 |
+
</div>
|
| 139 |
+
|
| 140 |
+
{/* Third-Party Services */}
|
| 141 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 142 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 143 |
+
<span className="text-primary">6.</span> Third-Party Services
|
| 144 |
+
</h2>
|
| 145 |
+
<p className="text-muted-foreground mb-4">
|
| 146 |
+
Our API may retrieve content from third-party services (e.g., TikTok). When you use our downloader services:
|
| 147 |
+
</p>
|
| 148 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 149 |
+
<li>You are subject to the terms and privacy policies of those platforms</li>
|
| 150 |
+
<li>We do not control third-party privacy practices</li>
|
| 151 |
+
<li>Content is fetched in real-time and not stored on our servers</li>
|
| 152 |
+
</ul>
|
| 153 |
+
</div>
|
| 154 |
+
|
| 155 |
+
{/* Your Rights */}
|
| 156 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 157 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 158 |
+
<span className="text-primary">9.</span> Your Rights
|
| 159 |
+
</h2>
|
| 160 |
+
<p className="text-muted-foreground mb-4">
|
| 161 |
+
Under applicable Indonesian data protection laws, you have the right to:
|
| 162 |
+
</p>
|
| 163 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 164 |
+
<li>Request information about data we hold about you</li>
|
| 165 |
+
<li>Request deletion of your data (IP address from rate limit records)</li>
|
| 166 |
+
<li>Object to processing of your data</li>
|
| 167 |
+
<li>Contact us with privacy concerns</li>
|
| 168 |
+
</ul>
|
| 169 |
+
<p className="text-muted-foreground mt-4">
|
| 170 |
+
To exercise these rights, email us at <a href="mailto:ditzdevs@gmail.com" className="text-primary hover:underline">ditzdevs@gmail.com</a>.
|
| 171 |
+
</p>
|
| 172 |
+
</div>
|
| 173 |
+
|
| 174 |
+
{/* Contact */}
|
| 175 |
+
<div className="p-6 rounded-xl bg-gradient-to-br from-primary/20 to-purple-500/10 border border-primary/20">
|
| 176 |
+
<div className="flex items-start gap-4">
|
| 177 |
+
<div className="w-12 h-12 rounded-xl bg-primary/20 flex items-center justify-center flex-shrink-0">
|
| 178 |
+
<Mail className="w-6 h-6 text-primary" />
|
| 179 |
+
</div>
|
| 180 |
+
<div>
|
| 181 |
+
<h2 className="text-xl font-bold text-white mb-2">Contact Us</h2>
|
| 182 |
+
<p className="text-muted-foreground mb-3">
|
| 183 |
+
For privacy-related questions or concerns:
|
| 184 |
+
</p>
|
| 185 |
+
<p className="text-sm text-white"><strong>Email:</strong> ditzdevs@gmail.com</p>
|
| 186 |
+
<p className="text-sm text-muted-foreground"><strong>Service Name:</strong> DitzzyAPI</p>
|
| 187 |
+
<p className="text-sm text-muted-foreground"><strong>Owner:</strong> Aditya Putra Priana</p>
|
| 188 |
+
</div>
|
| 189 |
+
</div>
|
| 190 |
+
</div>
|
| 191 |
+
|
| 192 |
+
<p className="text-sm text-muted-foreground text-center pt-8">
|
| 193 |
+
By using DitzzyAPI, you acknowledge that you have read and understood this Privacy Policy.
|
| 194 |
+
</p>
|
| 195 |
+
</motion.div>
|
| 196 |
+
</div>
|
| 197 |
+
</section>
|
| 198 |
+
</main>
|
| 199 |
+
|
| 200 |
+
<Footer />
|
| 201 |
+
</div>
|
| 202 |
+
);
|
| 203 |
+
}
|
src/client/pages/Terms.tsx
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Footer } from "@/components/Footer";
|
| 2 |
+
import { Button } from "@/components/ui/button";
|
| 3 |
+
import { motion } from "framer-motion";
|
| 4 |
+
import { FileText, Mail, ArrowLeft } from "lucide-react";
|
| 5 |
+
import { Link } from "react-router-dom";
|
| 6 |
+
|
| 7 |
+
export default function Terms() {
|
| 8 |
+
return (
|
| 9 |
+
<div className="min-h-screen bg-background flex flex-col font-sans selection:bg-primary/30">
|
| 10 |
+
<main className="flex-grow pt-8">
|
| 11 |
+
{/* Hero Section */}
|
| 12 |
+
<section className="relative overflow-hidden py-16 sm:py-24 border-b border-white/5">
|
| 13 |
+
<div className="absolute top-0 left-1/2 -translate-x-1/2 w-[800px] h-[400px] bg-primary/10 blur-[120px] rounded-full opacity-50 pointer-events-none" />
|
| 14 |
+
|
| 15 |
+
<div className="relative max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 16 |
+
<Link to="/">
|
| 17 |
+
<Button variant="ghost" size="sm" className="mb-8 hover:bg-white/5">
|
| 18 |
+
<ArrowLeft className="w-4 h-4 mr-2" />
|
| 19 |
+
Back to Home
|
| 20 |
+
</Button>
|
| 21 |
+
</Link>
|
| 22 |
+
|
| 23 |
+
<motion.div
|
| 24 |
+
initial={{ opacity: 0, y: 20 }}
|
| 25 |
+
animate={{ opacity: 1, y: 0 }}
|
| 26 |
+
transition={{ duration: 0.5 }}
|
| 27 |
+
className="flex items-center gap-3 mb-6"
|
| 28 |
+
>
|
| 29 |
+
<div className="w-12 h-12 rounded-xl bg-primary/20 flex items-center justify-center">
|
| 30 |
+
<FileText className="w-6 h-6 text-primary" />
|
| 31 |
+
</div>
|
| 32 |
+
<h1 className="text-4xl sm:text-5xl font-display font-bold tracking-tight text-white">
|
| 33 |
+
Terms of Service
|
| 34 |
+
</h1>
|
| 35 |
+
</motion.div>
|
| 36 |
+
|
| 37 |
+
<motion.p
|
| 38 |
+
initial={{ opacity: 0, y: 20 }}
|
| 39 |
+
animate={{ opacity: 1, y: 0 }}
|
| 40 |
+
transition={{ duration: 0.5, delay: 0.1 }}
|
| 41 |
+
className="text-muted-foreground mb-4"
|
| 42 |
+
>
|
| 43 |
+
<strong>Effective Date:</strong> January 15, 2026<br />
|
| 44 |
+
<strong>Last Updated:</strong> January 15, 2026
|
| 45 |
+
</motion.p>
|
| 46 |
+
</div>
|
| 47 |
+
</section>
|
| 48 |
+
|
| 49 |
+
{/* Content Section */}
|
| 50 |
+
<section className="py-16">
|
| 51 |
+
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 52 |
+
<motion.div
|
| 53 |
+
initial={{ opacity: 0, y: 20 }}
|
| 54 |
+
animate={{ opacity: 1, y: 0 }}
|
| 55 |
+
transition={{ duration: 0.5, delay: 0.2 }}
|
| 56 |
+
className="space-y-8"
|
| 57 |
+
>
|
| 58 |
+
{/* Agreement to Terms */}
|
| 59 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 60 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 61 |
+
<span className="text-primary">1.</span> Agreement to Terms
|
| 62 |
+
</h2>
|
| 63 |
+
<p className="text-muted-foreground leading-relaxed mb-4">
|
| 64 |
+
By accessing or using DitzzyAPI ("the Service"), you agree to be bound by these Terms of Service ("Terms"). If you do not agree to these Terms, do not use the Service.
|
| 65 |
+
</p>
|
| 66 |
+
<div className="p-4 rounded-lg bg-primary/10 border border-primary/20">
|
| 67 |
+
<p className="text-sm text-white mb-2"><strong>Service Provider:</strong></p>
|
| 68 |
+
<p className="text-sm text-muted-foreground">DitzzyAPI | Aditya Putra Priana</p>
|
| 69 |
+
<p className="text-sm text-muted-foreground">Email: ditzdevs@gmail.com</p>
|
| 70 |
+
<p className="text-sm text-muted-foreground">Jurisdiction: Indonesia</p>
|
| 71 |
+
</div>
|
| 72 |
+
</div>
|
| 73 |
+
|
| 74 |
+
{/* Description of Service */}
|
| 75 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 76 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 77 |
+
<span className="text-primary">2.</span> Description of Service
|
| 78 |
+
</h2>
|
| 79 |
+
<p className="text-muted-foreground mb-4">
|
| 80 |
+
DitzzyAPI is a free, open API service providing various endpoints including:
|
| 81 |
+
</p>
|
| 82 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 83 |
+
<li><strong className="text-white">Downloader Services:</strong> TikTok and other social media content</li>
|
| 84 |
+
<li><strong className="text-white">AI Tools:</strong> Various AI-powered utilities</li>
|
| 85 |
+
<li><strong className="text-white">General Tools:</strong> Miscellaneous utility endpoints</li>
|
| 86 |
+
<li><strong className="text-white">Other Services:</strong> As documented in our API documentation</li>
|
| 87 |
+
</ul>
|
| 88 |
+
<p className="text-muted-foreground mt-4">
|
| 89 |
+
The Service is provided "as-is" without authentication or registration requirements.
|
| 90 |
+
</p>
|
| 91 |
+
</div>
|
| 92 |
+
|
| 93 |
+
{/* Acceptable Use Policy */}
|
| 94 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 95 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 96 |
+
<span className="text-primary">3.</span> Acceptable Use Policy
|
| 97 |
+
</h2>
|
| 98 |
+
|
| 99 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">3.1 Permitted Use</h3>
|
| 100 |
+
<p className="text-muted-foreground mb-3">You may use the Service for:</p>
|
| 101 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc mb-6">
|
| 102 |
+
<li>Personal, educational, or commercial projects</li>
|
| 103 |
+
<li>Integration into your applications or websites</li>
|
| 104 |
+
<li>Testing and development purposes</li>
|
| 105 |
+
<li>Any lawful purpose compliant with applicable laws</li>
|
| 106 |
+
</ul>
|
| 107 |
+
|
| 108 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">3.2 Prohibited Use</h3>
|
| 109 |
+
<div className="p-4 rounded-lg bg-red-500/10 border border-red-500/20 mb-4">
|
| 110 |
+
<p className="text-white font-semibold mb-2">⚠️ You may NOT use the Service to:</p>
|
| 111 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 112 |
+
<li>Violate any laws or regulations</li>
|
| 113 |
+
<li>Download copyrighted content without authorization</li>
|
| 114 |
+
<li>Infringe on intellectual property rights</li>
|
| 115 |
+
<li>Distribute malware or harmful code</li>
|
| 116 |
+
<li>Conduct illegal activities or fraud</li>
|
| 117 |
+
<li>Harass, abuse, or harm others</li>
|
| 118 |
+
<li>Bypass rate limiting measures</li>
|
| 119 |
+
<li>Access content involving minors inappropriately</li>
|
| 120 |
+
<li>Resell or redistribute the API as a competing service</li>
|
| 121 |
+
</ul>
|
| 122 |
+
</div>
|
| 123 |
+
</div>
|
| 124 |
+
|
| 125 |
+
{/* Rate Limiting */}
|
| 126 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 127 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 128 |
+
<span className="text-primary">4.</span> Rate Limiting and Usage Restrictions
|
| 129 |
+
</h2>
|
| 130 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 131 |
+
<li>The Service is limited to <strong className="text-white">25 requests per user</strong> (based on IP address)</li>
|
| 132 |
+
<li>Rate limits ensure fair usage for all users</li>
|
| 133 |
+
<li>Excessive use may result in temporary or permanent blocking</li>
|
| 134 |
+
<li>We reserve the right to modify rate limits at any time</li>
|
| 135 |
+
</ul>
|
| 136 |
+
</div>
|
| 137 |
+
|
| 138 |
+
{/* Disclaimers */}
|
| 139 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 140 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 141 |
+
<span className="text-primary">7.</span> Disclaimers and Limitations
|
| 142 |
+
</h2>
|
| 143 |
+
|
| 144 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">7.1 Service Availability</h3>
|
| 145 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc mb-6">
|
| 146 |
+
<li>The Service is provided "AS IS" and "AS AVAILABLE"</li>
|
| 147 |
+
<li>We do not guarantee uninterrupted or error-free service</li>
|
| 148 |
+
<li>We may modify, suspend, or discontinue the Service at any time</li>
|
| 149 |
+
<li>No uptime guarantees or SLAs are provided</li>
|
| 150 |
+
</ul>
|
| 151 |
+
|
| 152 |
+
<h3 className="text-xl font-semibold text-white mt-6 mb-3">7.2 No Warranties</h3>
|
| 153 |
+
<div className="p-4 rounded-lg bg-yellow-500/10 border border-yellow-500/20">
|
| 154 |
+
<p className="text-white font-semibold mb-2">WE MAKE NO WARRANTIES, INCLUDING:</p>
|
| 155 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 156 |
+
<li>Warranties of merchantability or fitness for a particular purpose</li>
|
| 157 |
+
<li>That the Service will meet your requirements</li>
|
| 158 |
+
<li>That results obtained will be accurate or reliable</li>
|
| 159 |
+
<li>That errors or bugs will be corrected</li>
|
| 160 |
+
</ul>
|
| 161 |
+
</div>
|
| 162 |
+
</div>
|
| 163 |
+
|
| 164 |
+
{/* Limitation of Liability */}
|
| 165 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 166 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 167 |
+
<span className="text-primary">8.</span> Limitation of Liability
|
| 168 |
+
</h2>
|
| 169 |
+
<div className="p-4 rounded-lg bg-orange-500/10 border border-orange-500/20">
|
| 170 |
+
<p className="text-white font-semibold mb-3">TO THE MAXIMUM EXTENT PERMITTED BY INDONESIAN LAW:</p>
|
| 171 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 172 |
+
<li>We are not liable for any direct, indirect, or consequential damages</li>
|
| 173 |
+
<li>We are not liable for loss of data, profits, or business opportunities</li>
|
| 174 |
+
<li>We are not liable for third-party claims arising from your use</li>
|
| 175 |
+
<li>Our total liability shall not exceed IDR 0 as this is a free service</li>
|
| 176 |
+
</ul>
|
| 177 |
+
</div>
|
| 178 |
+
</div>
|
| 179 |
+
|
| 180 |
+
{/* Governing Law */}
|
| 181 |
+
<div className="p-6 rounded-xl bg-white/5 border border-white/5">
|
| 182 |
+
<h2 className="text-2xl font-bold text-white mb-4 flex items-center gap-2">
|
| 183 |
+
<span className="text-primary">14.</span> Governing Law
|
| 184 |
+
</h2>
|
| 185 |
+
<p className="text-muted-foreground">
|
| 186 |
+
These Terms are governed by the laws of Indonesia. Any disputes shall be resolved in Indonesian courts with jurisdiction in the service provider's location.
|
| 187 |
+
</p>
|
| 188 |
+
</div>
|
| 189 |
+
|
| 190 |
+
{/* Contact */}
|
| 191 |
+
<div className="p-6 rounded-xl bg-gradient-to-br from-primary/20 to-purple-500/10 border border-primary/20">
|
| 192 |
+
<div className="flex items-start gap-4">
|
| 193 |
+
<div className="w-12 h-12 rounded-xl bg-primary/20 flex items-center justify-center flex-shrink-0">
|
| 194 |
+
<Mail className="w-6 h-6 text-primary" />
|
| 195 |
+
</div>
|
| 196 |
+
<div>
|
| 197 |
+
<h2 className="text-xl font-bold text-white mb-2">Contact Information</h2>
|
| 198 |
+
<p className="text-muted-foreground mb-3">
|
| 199 |
+
For questions, concerns, or reports of Terms violations:
|
| 200 |
+
</p>
|
| 201 |
+
<p className="text-sm text-white"><strong>Email:</strong> ditzdevs@gmail.com</p>
|
| 202 |
+
<p className="text-sm text-muted-foreground"><strong>Service Name:</strong> DitzzyAPI</p>
|
| 203 |
+
<p className="text-sm text-muted-foreground"><strong>Owner:</strong> Aditya Putra Priana</p>
|
| 204 |
+
</div>
|
| 205 |
+
</div>
|
| 206 |
+
</div>
|
| 207 |
+
|
| 208 |
+
<div className="p-6 rounded-xl bg-primary/10 border border-primary/20">
|
| 209 |
+
<h3 className="text-xl font-bold text-white mb-3">Acknowledgment</h3>
|
| 210 |
+
<p className="text-muted-foreground mb-3">
|
| 211 |
+
By using DitzzyAPI, you acknowledge that:
|
| 212 |
+
</p>
|
| 213 |
+
<ul className="space-y-2 text-muted-foreground ml-6 list-disc">
|
| 214 |
+
<li>You have read and understood these Terms</li>
|
| 215 |
+
<li>You agree to be bound by these Terms</li>
|
| 216 |
+
<li>You are legally able to enter into this agreement</li>
|
| 217 |
+
<li>You will use the Service responsibly and lawfully</li>
|
| 218 |
+
</ul>
|
| 219 |
+
</div>
|
| 220 |
+
|
| 221 |
+
<p className="text-sm text-muted-foreground text-center pt-8">
|
| 222 |
+
<strong>Last Updated:</strong> January 15, 2026 | <strong>Version:</strong> 1.0
|
| 223 |
+
</p>
|
| 224 |
+
</motion.div>
|
| 225 |
+
</div>
|
| 226 |
+
</section>
|
| 227 |
+
</main>
|
| 228 |
+
|
| 229 |
+
<Footer />
|
| 230 |
+
</div>
|
| 231 |
+
);
|
| 232 |
+
}
|
src/components/Footer.tsx
CHANGED
|
@@ -23,15 +23,15 @@ export function Footer() {
|
|
| 23 |
<h4 className="font-semibold text-white mb-4">Links</h4>
|
| 24 |
<ul className="space-y-2 text-sm text-muted-foreground">
|
| 25 |
<li><a href="/docs" className="hover:text-primary transition-colors">Documentation</a></li>
|
| 26 |
-
<li><a href="
|
| 27 |
</ul>
|
| 28 |
</div>
|
| 29 |
|
| 30 |
<div>
|
| 31 |
<h4 className="font-semibold text-white mb-4">Legal</h4>
|
| 32 |
<ul className="space-y-2 text-sm text-muted-foreground">
|
| 33 |
-
<li><a href="
|
| 34 |
-
<li><a href="
|
| 35 |
</ul>
|
| 36 |
</div>
|
| 37 |
</div>
|
|
|
|
| 23 |
<h4 className="font-semibold text-white mb-4">Links</h4>
|
| 24 |
<ul className="space-y-2 text-sm text-muted-foreground">
|
| 25 |
<li><a href="/docs" className="hover:text-primary transition-colors">Documentation</a></li>
|
| 26 |
+
<li><a href="https://whatsapp.com/channel/0029Vb7AafUL7UVRIpg1Fy24" className="hover:text-primary transition-colors">WhatsApp Channel</a></li>
|
| 27 |
</ul>
|
| 28 |
</div>
|
| 29 |
|
| 30 |
<div>
|
| 31 |
<h4 className="font-semibold text-white mb-4">Legal</h4>
|
| 32 |
<ul className="space-y-2 text-sm text-muted-foreground">
|
| 33 |
+
<li><a href="/privacy" className="hover:text-primary transition-colors">Privacy Policy</a></li>
|
| 34 |
+
<li><a href="/terms" className="hover:text-primary transition-colors">Terms of Service</a></li>
|
| 35 |
</ul>
|
| 36 |
</div>
|
| 37 |
</div>
|