Skip to content

Commit 8a1f5c0

Browse files
committed
feat: better terms and privacy pages
1 parent fb09a99 commit 8a1f5c0

File tree

2 files changed

+82
-55
lines changed

2 files changed

+82
-55
lines changed
Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1-
import { Cookie, Mail, Shield, ShieldCheck, UserX } from 'lucide-react';
1+
import {
2+
CookieIcon,
3+
EnvelopeIcon,
4+
ShieldCheckIcon,
5+
ShieldIcon,
6+
UserIcon,
7+
} from '@phosphor-icons/react/ssr';
8+
import type { Metadata } from 'next';
9+
import { Footer } from '@/components/footer';
210

3-
export const metadata = {
11+
export const metadata: Metadata = {
412
title: 'Privacy Policy | Databuddy',
513
description:
614
"Databuddy's comprehensive privacy policy for our privacy-first analytics service. Learn how we protect both customer and end user data with GDPR compliance and no user identification.",
@@ -10,28 +18,36 @@ export default function PrivacyPage() {
1018
const lastUpdated = 'June 3rd, 2025';
1119

1220
return (
13-
<div className="container mx-auto max-w-4xl px-4 py-12">
21+
<div className="mx-auto w-full max-w-7xl px-4 pt-16 sm:px-6 lg:px-8 lg:pt-24">
1422
{/* Header */}
1523
<div className="mb-12 text-center">
16-
<div className="mb-5 inline-flex items-center justify-center rounded-full border border-primary/20 bg-primary/10 p-3">
17-
<Shield className="h-7 w-7 text-primary" />
24+
<div className="mb-5 inline-flex items-center justify-center rounded border border-primary/20 bg-primary/10 p-3">
25+
<ShieldIcon className="h-7 w-7 text-primary" weight="duotone" />
1826
</div>
1927
<h1 className="mb-4 font-bold text-4xl md:text-5xl">Privacy Policy</h1>
2028
<p className="mb-4 text-muted-foreground">
21-
Last Updated:{' '}
29+
Last Updated{' '}
2230
<span className="font-medium text-foreground">{lastUpdated}</span>
2331
</p>
32+
{/* TL;DR */}
33+
<div className="mx-auto mb-6 max-w-2xl rounded border border-primary/20 bg-primary/10 p-4 text-left">
34+
<p className="text-foreground text-sm">
35+
<strong>TL;DR</strong> — We don’t use cookies, we don’t identify
36+
users, we anonymize IPs, and we only collect minimal, aggregated
37+
data so you get insights without tracking people.
38+
</p>
39+
</div>
2440
<p className="mx-auto max-w-2xl text-muted-foreground">
2541
This policy explains how we collect, use, and protect information for
26-
both our customers and end users. We're committed to privacy-first
27-
analytics that respects everyone's privacy.
42+
both our customers and end users. Were committed to privacy-first
43+
analytics that respects everyones privacy.
2844
</p>
2945
</div>
3046

3147
{/* Privacy-first highlight */}
32-
<div className="mb-8 rounded-xl border border-primary/20 bg-primary/10 p-6">
48+
<div className="mb-8 rounded border border-primary/20 bg-primary/10 p-6">
3349
<h2 className="mb-3 flex items-center font-bold text-primary text-xl">
34-
<ShieldCheck className="mr-2 h-5 w-5" />
50+
<ShieldCheckIcon className="mr-2 h-5 w-5" weight="duotone" />
3551
Privacy-First Analytics
3652
</h2>
3753
<p className="mb-4 text-muted-foreground">
@@ -41,15 +57,15 @@ export default function PrivacyPage() {
4157
</p>
4258
<div className="grid grid-cols-1 gap-4 md:grid-cols-3">
4359
<div className="flex items-center text-primary">
44-
<UserX className="mr-2 h-4 w-4" />
60+
<UserIcon className="mr-2 h-4 w-4" weight="duotone" />
4561
<span className="text-sm">No User Tracking</span>
4662
</div>
4763
<div className="flex items-center text-primary">
48-
<Cookie className="mr-2 h-4 w-4" />
64+
<CookieIcon className="mr-2 h-4 w-4" weight="duotone" />
4965
<span className="text-sm">No Cookies</span>
5066
</div>
5167
<div className="flex items-center text-primary">
52-
<Shield className="mr-2 h-4 w-4" />
68+
<ShieldIcon className="mr-2 h-4 w-4" weight="duotone" />
5369
<span className="text-sm">GDPR Compliant</span>
5470
</div>
5571
</div>
@@ -83,7 +99,7 @@ export default function PrivacyPage() {
8399
how we protect your privacy.
84100
</li>
85101
</ul>
86-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
102+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
87103
<p className="text-sm">
88104
<strong className="text-primary">Note:</strong> We are committed
89105
to privacy-first analytics that respects the rights of all users,
@@ -209,7 +225,7 @@ export default function PrivacyPage() {
209225
website owners improve their sites
210226
</li>
211227
</ul>
212-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
228+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
213229
<p className="text-sm">
214230
<strong className="text-primary">Important:</strong> We
215231
immediately anonymize IP addresses using a one-way hash function.
@@ -286,7 +302,7 @@ export default function PrivacyPage() {
286302
and loading metrics
287303
</li>
288304
</ul>
289-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
305+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
290306
<p className="text-sm">
291307
<strong className="text-primary">Note:</strong> End user data is
292308
never used for advertising, marketing, or any purpose other than
@@ -363,7 +379,7 @@ export default function PrivacyPage() {
363379
deleted according to our retention policies
364380
</li>
365381
</ul>
366-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
382+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
367383
<p className="text-sm">
368384
<strong className="text-primary">Note:</strong> Because we don't
369385
identify individual end users, many traditional rights don't
@@ -401,7 +417,7 @@ export default function PrivacyPage() {
401417
anonymized using cryptographic hashes
402418
</li>
403419
</ul>
404-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
420+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
405421
<p className="text-sm">
406422
<strong className="text-primary">Note:</strong> Our privacy-first
407423
approach means that even in the unlikely event of a data breach,
@@ -418,9 +434,9 @@ export default function PrivacyPage() {
418434
exercise your privacy rights, or have concerns about how your data
419435
is handled, please contact us:
420436
</p>
421-
<div className="mt-4 mb-6 rounded-lg border bg-muted/50 p-5">
437+
<div className="mt-4 mb-6 rounded border bg-muted/50 p-5">
422438
<p className="mb-3 flex items-center text-primary">
423-
<Mail className="mr-2 h-5 w-5" />
439+
<EnvelopeIcon className="mr-2 h-5 w-5" weight="duotone" />
424440
<a className="hover:underline" href="mailto:[email protected]">
425441
426442
</a>
@@ -433,6 +449,11 @@ export default function PrivacyPage() {
433449
</div>
434450
</section>
435451
</div>
452+
453+
{/* Footer */}
454+
<div className="mt-12">
455+
<Footer />
456+
</div>
436457
</div>
437458
);
438459
}
Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import {
2-
AlertTriangle,
3-
CreditCard,
4-
FileText,
5-
HelpCircle,
6-
Scale,
7-
Shield,
8-
} from 'lucide-react';
2+
CreditCardIcon,
3+
FileTextIcon,
4+
QuestionIcon,
5+
ScalesIcon,
6+
ShieldIcon,
7+
WarningIcon,
8+
} from '@phosphor-icons/react/ssr';
9+
import type { Metadata } from 'next';
10+
import { Footer } from '@/components/footer';
911

10-
export const metadata = {
12+
export const metadata: Metadata = {
1113
title: 'Terms of Service | Databuddy',
1214
description:
1315
"Databuddy's terms of service governing the use of our privacy-first analytics platform. Clear, fair terms that protect both our users and service.",
@@ -17,29 +19,37 @@ export default function TermsPage() {
1719
const lastUpdated = 'June 23rd, 2025';
1820

1921
return (
20-
<div className="container mx-auto max-w-4xl px-4 py-12">
22+
<div className="mx-auto w-full max-w-7xl px-4 pt-16 sm:px-6 lg:px-8 lg:pt-24">
2123
{/* Header */}
2224
<div className="mb-12 text-center">
23-
<div className="mb-5 inline-flex items-center justify-center rounded-full border border-primary/20 bg-primary/10 p-3">
24-
<Scale className="h-7 w-7 text-primary" />
25+
<div className="mb-5 inline-flex items-center justify-center rounded border border-primary/20 bg-primary/10 p-3">
26+
<ScalesIcon className="h-7 w-7 text-primary" weight="duotone" />
2527
</div>
2628
<h1 className="mb-4 font-bold text-4xl md:text-5xl">
2729
Terms of Service
2830
</h1>
2931
<p className="mb-4 text-muted-foreground">
30-
Last Updated:{' '}
32+
Last Updated{' '}
3133
<span className="font-medium text-foreground">{lastUpdated}</span>
3234
</p>
35+
{/* TL;DR */}
36+
<div className="mx-auto mb-6 max-w-2xl rounded border border-primary/20 bg-primary/10 p-4 text-left">
37+
<p className="text-foreground text-sm">
38+
<strong>TL;DR</strong> — Be fair and lawful, keep your account
39+
secure, don’t abuse the service, and you can cancel anytime. We’ll
40+
notify you about material changes.
41+
</p>
42+
</div>
3343
<p className="mx-auto max-w-2xl text-muted-foreground">
34-
Clear and fair terms that govern your use of Databuddy's analytics
44+
Clear and fair terms that govern your use of Databuddys analytics
3545
platform. We believe in transparency and straightforward language.
3646
</p>
3747
</div>
3848

3949
{/* Fair terms highlight */}
40-
<div className="mb-8 rounded-xl border border-primary/20 bg-primary/10 p-6">
50+
<div className="mb-8 rounded border border-primary/20 bg-primary/10 p-6">
4151
<h2 className="mb-3 flex items-center font-bold text-primary text-xl">
42-
<Shield className="mr-2 h-5 w-5" />
52+
<ShieldIcon className="mr-2 h-5 w-5" weight="duotone" />
4353
Fair & Transparent Terms
4454
</h2>
4555
<p className="mb-4 text-muted-foreground">
@@ -49,15 +59,15 @@ export default function TermsPage() {
4959
</p>
5060
<div className="grid grid-cols-1 gap-4 md:grid-cols-3">
5161
<div className="flex items-center text-primary">
52-
<FileText className="mr-2 h-4 w-4" />
62+
<FileTextIcon className="mr-2 h-4 w-4" weight="duotone" />
5363
<span className="text-sm">Plain Language</span>
5464
</div>
5565
<div className="flex items-center text-primary">
56-
<Scale className="mr-2 h-4 w-4" />
66+
<ScalesIcon className="mr-2 h-4 w-4" weight="duotone" />
5767
<span className="text-sm">Fair Terms</span>
5868
</div>
5969
<div className="flex items-center text-primary">
60-
<Shield className="mr-2 h-4 w-4" />
70+
<ShieldIcon className="mr-2 h-4 w-4" weight="duotone" />
6171
<span className="text-sm">User Protection</span>
6272
</div>
6373
</div>
@@ -83,7 +93,7 @@ export default function TermsPage() {
8393
Terms. If you disagree with any part of these terms, then you may
8494
not access the Service.
8595
</p>
86-
<div className="my-4 rounded-lg border border-primary/20 bg-primary/10 p-4">
96+
<div className="my-4 rounded border border-primary/20 bg-primary/10 p-4">
8797
<p className="text-sm">
8898
<strong className="text-primary">Quick Summary:</strong> These
8999
terms cover how you can use our service, your responsibilities,
@@ -167,9 +177,12 @@ export default function TermsPage() {
167177
<li>Overload our servers or interfere with other users</li>
168178
<li>Violate any applicable laws or regulations</li>
169179
</ul>
170-
<div className="my-4 rounded-lg border border-amber-500/20 bg-amber-500/10 p-4">
180+
<div className="my-4 rounded border border-amber-500/20 bg-amber-500/10 p-4">
171181
<p className="flex items-start text-sm">
172-
<AlertTriangle className="mt-0.5 mr-2 h-4 w-4 flex-shrink-0 text-amber-400" />
182+
<WarningIcon
183+
className="mt-0.5 mr-2 h-4 w-4 flex-shrink-0 text-amber-400"
184+
weight="duotone"
185+
/>
173186
<span>
174187
<strong className="text-amber-400">Important:</strong> We may
175188
suspend or terminate accounts that violate these terms.
@@ -207,7 +220,7 @@ export default function TermsPage() {
207220
<h2 className="mb-4 font-bold text-2xl">6. Billing and Payments</h2>
208221

209222
<h3 className="mb-3 flex items-center font-semibold text-xl">
210-
<CreditCard className="mr-2 h-5 w-5 text-primary" />
223+
<CreditCardIcon className="mr-2 h-5 w-5 text-primary" />
211224
Subscription Plans
212225
</h3>
213226
<p className="mb-4">
@@ -345,7 +358,10 @@ export default function TermsPage() {
345358

346359
<section className="mb-8">
347360
<h2 className="mb-4 flex items-center font-bold text-2xl">
348-
<HelpCircle className="mr-2 h-6 w-6 text-primary" />
361+
<QuestionIcon
362+
className="mr-2 h-6 w-6 text-primary"
363+
weight="duotone"
364+
/>
349365
13. Contact Information
350366
</h2>
351367
<p className="mb-4">
@@ -384,18 +400,8 @@ export default function TermsPage() {
384400
</section>
385401

386402
{/* Footer */}
387-
<div className="mt-12 border-border border-t pt-8">
388-
<div className="rounded-lg border border-primary/20 bg-primary/10 p-6">
389-
<h3 className="mb-2 font-semibold text-lg text-primary">
390-
Thank You
391-
</h3>
392-
<p className="mb-0 text-muted-foreground text-sm">
393-
Thank you for using Databuddy. We're committed to providing a
394-
fair, transparent, and privacy-first analytics service. If you
395-
have any questions about these terms, please don't hesitate to
396-
contact us.
397-
</p>
398-
</div>
403+
<div className="mt-12">
404+
<Footer />
399405
</div>
400406
</div>
401407
</div>

0 commit comments

Comments
 (0)