Skip to content

Commit 1a2bafc

Browse files
committed
dpa
1 parent 96fa2b7 commit 1a2bafc

File tree

1 file changed

+369
-0
lines changed

1 file changed

+369
-0
lines changed

apps/docs/app/(home)/dpa/page.tsx

Lines changed: 369 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,369 @@
1+
import {
2+
CheckCircleIcon,
3+
EnvelopeIcon,
4+
FileTextIcon,
5+
LockKeyIcon,
6+
ShieldCheckIcon,
7+
ShieldIcon,
8+
} from "@phosphor-icons/react/ssr";
9+
import type { Metadata } from "next";
10+
import { Footer } from "@/components/footer";
11+
import { StructuredData } from "@/components/structured-data";
12+
13+
const title = "Data Processing Agreement — GDPR Article 28 DPA | Databuddy";
14+
const description =
15+
"Our data processing agreement under Article 28 of the GDPR, covering our role as data processor when you use our analytics service.";
16+
const url = "https://www.databuddy.cc/dpa";
17+
18+
export const metadata: Metadata = {
19+
title,
20+
description,
21+
alternates: {
22+
canonical: url,
23+
},
24+
openGraph: {
25+
title,
26+
description,
27+
url,
28+
images: ["/og-image.png"],
29+
},
30+
};
31+
32+
export default function DPAPage() {
33+
const lastUpdated = new Date("2024-12-22");
34+
35+
return (
36+
<>
37+
<StructuredData
38+
page={{
39+
title,
40+
description,
41+
url,
42+
datePublished: new Date("2024-12-22").toISOString(),
43+
dateModified: lastUpdated.toISOString(),
44+
}}
45+
/>
46+
<div className="mx-auto w-full max-w-7xl px-4 pt-16 sm:px-6 lg:px-8 lg:pt-24">
47+
{/* Header */}
48+
<div className="mb-12 text-center">
49+
<div className="mb-5 inline-flex items-center justify-center rounded border border-accent bg-accent/50 p-3">
50+
<FileTextIcon className="size-7 text-primary" weight="duotone" />
51+
</div>
52+
<h1 className="mb-4 font-bold text-4xl md:text-5xl">
53+
Data Processing Agreement
54+
</h1>
55+
<p className="mb-4 text-muted-foreground">
56+
Last Updated{" "}
57+
<span className="font-medium text-foreground">
58+
{lastUpdated.toLocaleDateString("en-US", {
59+
year: "numeric",
60+
month: "long",
61+
day: "numeric",
62+
})}
63+
</span>
64+
</p>
65+
{/* TL;DR */}
66+
<div className="mx-auto mb-6 max-w-2xl rounded border border-accent bg-accent/50 p-4 text-left">
67+
<p className="text-foreground text-sm">
68+
<strong>TL;DR</strong> — Our data processing agreement under
69+
Article 28 of the GDPR, covering our role as data processor when
70+
you use our analytics service. By using our service, you
71+
automatically agree to this DPA.
72+
</p>
73+
</div>
74+
<p className="mx-auto max-w-2xl text-muted-foreground">
75+
All of our data processing happens in the EU under strict European
76+
data protection standards. This means your visitor data benefits
77+
from some of the world's strongest privacy laws, regardless of where
78+
you're based.
79+
</p>
80+
</div>
81+
82+
{/* DPA highlight */}
83+
<div className="mb-8 rounded border border-accent bg-accent/50 p-6">
84+
<h2 className="mb-3 flex items-center font-bold text-primary text-xl">
85+
<ShieldCheckIcon className="mr-2 size-5" weight="duotone" />
86+
GDPR Article 28 Compliance
87+
</h2>
88+
<p className="mb-4 text-muted-foreground">
89+
This Data Processing Agreement (DPA) explains our responsibilities
90+
as your data processor and your responsibilities as the data
91+
controller. By using our service, you automatically agree to this
92+
DPA - no separate signature required.
93+
</p>
94+
<div className="grid grid-cols-1 gap-4 md:grid-cols-3">
95+
<div className="flex items-center text-primary">
96+
<LockKeyIcon className="mr-2 size-4" weight="duotone" />
97+
<span className="text-sm">EU Data Processing</span>
98+
</div>
99+
<div className="flex items-center text-primary">
100+
<ShieldIcon className="mr-2 size-4" weight="duotone" />
101+
<span className="text-sm">GDPR Compliant</span>
102+
</div>
103+
<div className="flex items-center text-primary">
104+
<CheckCircleIcon className="mr-2 size-4" weight="duotone" />
105+
<span className="text-sm">Automatic Agreement</span>
106+
</div>
107+
</div>
108+
</div>
109+
110+
{/* Main content */}
111+
<div className="prose prose-lg dark:prose-invert max-w-none">
112+
<section className="mb-8">
113+
<h2 className="mb-4 font-bold text-2xl">
114+
What We Do with Your Data
115+
</h2>
116+
<p className="mb-4">
117+
We process visitor data from your websites to provide you with
118+
analytics insights. When someone visits your site, our script
119+
collects basic information and we turn that into the reports and
120+
metrics you see in your dashboard.
121+
</p>
122+
<p className="mb-4">
123+
This agreement stays active as long as you're using our service.
124+
When you decide to leave, we'll delete all your data unless you
125+
specifically ask us to return it to you first.
126+
</p>
127+
</section>
128+
129+
<section className="mb-8">
130+
<h2 className="mb-4 font-bold text-2xl">
131+
Why We Process Your Data
132+
</h2>
133+
<p className="mb-4">
134+
We process visitor data for one reason only. To give you useful
135+
analytics about your website. That means turning raw visitor
136+
interactions into charts, reports, and insights you can actually
137+
use.
138+
</p>
139+
<p className="mb-4">
140+
We don't use your data for our own business purposes, we don't
141+
sell it to advertisers, and we don't share it with anyone unless
142+
legally required to do so. <strong>Your data is yours.</strong>
143+
</p>
144+
</section>
145+
146+
<section className="mb-8">
147+
<h2 className="mb-4 font-bold text-2xl">What Data We Handle</h2>
148+
<p className="mb-4">
149+
We process IP addresses (which we immediately discard after
150+
getting location info), anonymous visitor signatures, general
151+
location data like city and country, and basic browser
152+
information. All data is anonymous by default - we never identify
153+
individual visitors.
154+
</p>
155+
<p className="mb-4">
156+
The people whose data we process are your website visitors. Since
157+
we don't collect personal information or identify users, all data
158+
processing involves anonymous visitor data only.
159+
</p>
160+
</section>
161+
162+
<section className="mb-8">
163+
<h2 className="mb-4 font-bold text-2xl">Our Commitments to You</h2>
164+
<p className="mb-4">
165+
We only process your visitor data according to your instructions
166+
and the service settings you choose. We won't use your data for
167+
anything else without getting your explicit permission first.
168+
</p>
169+
<p className="mb-4">
170+
Everyone on our team who has access to data is trained on privacy
171+
requirements and bound by strict confidentiality agreements. We
172+
take data protection seriously at every level.
173+
</p>
174+
<p className="mb-4">
175+
We maintain strong security measures to protect your data from
176+
unauthorized access, changes, or disclosure. This includes
177+
encryption, access controls, and regular security assessments.
178+
</p>
179+
</section>
180+
181+
<section className="mb-8">
182+
<h2 className="mb-4 font-bold text-2xl">Your Responsibilities</h2>
183+
<p className="mb-4">
184+
As the data controller, you need to make sure you have a legal
185+
basis for collecting visitor data through our service. This might
186+
mean getting consent from visitors when required, or relying on
187+
legitimate interest for basic analytics.
188+
</p>
189+
<p className="mb-4">
190+
You should provide clear privacy notices to your website visitors
191+
that explain how their data is processed. This includes mentioning
192+
that we process data on your behalf.
193+
</p>
194+
<p className="mb-4">
195+
When visitors contact you about their data, you're responsible for
196+
handling their requests. We'll help you fulfill these requests
197+
when they involve data we process for you.
198+
</p>
199+
</section>
200+
201+
<section className="mb-8">
202+
<h2 className="mb-4 font-bold text-2xl">
203+
How We Keep Your Data Secure
204+
</h2>
205+
<p className="mb-4">
206+
We use industry-standard security practices including encrypting
207+
data when it's transmitted and when it's stored, strict access
208+
controls, regular security reviews, and secure data centers in the
209+
EU.
210+
</p>
211+
<p className="mb-4">
212+
All personal data processing occurs exclusively within EU
213+
infrastructure provided by European companies for analytics event
214+
processing and storage. Some account, billing, and email delivery
215+
data is processed by our service providers and may involve
216+
international transfers depending on where those providers
217+
operate.
218+
</p>
219+
</section>
220+
221+
<section className="mb-8">
222+
<h2 className="mb-4 font-bold text-2xl">Our Partners</h2>
223+
<p className="mb-4">
224+
We work with a small number of trusted partners to deliver our
225+
service. This includes Hetzner for hosting our databases in
226+
Germany, Railway for our API infrastructure, Vercel for our
227+
dashboard, and Bunny.net for our CDN. We also use Resend for
228+
emails and Stripe for payments.
229+
</p>
230+
<p className="mb-4">
231+
All our partners are required to follow the same data protection
232+
standards we do. If we ever change partners, we'll let you know.
233+
For more details, see our{" "}
234+
<a
235+
className="text-primary hover:text-primary/80"
236+
href="/data-policy"
237+
>
238+
Data Policy
239+
</a>
240+
.
241+
</p>
242+
</section>
243+
244+
<section className="mb-8">
245+
<h2 className="mb-4 font-bold text-2xl">If Something Goes Wrong</h2>
246+
<p className="mb-4">
247+
If there's ever a data breach that affects personal data we
248+
process for you, we'll notify you within 72 hours. We'll give you
249+
all the details you need to understand what happened and what
250+
we're doing about it.
251+
</p>
252+
<p className="mb-4">
253+
We'll also help you meet any legal requirements to notify
254+
authorities or affected individuals if needed.
255+
</p>
256+
</section>
257+
258+
<section className="mb-8">
259+
<h2 className="mb-4 font-bold text-2xl">When You Leave</h2>
260+
<p className="mb-4">
261+
When you stop using our service or ask us to delete your data,
262+
we'll delete or return all the personal data we've processed for
263+
you, unless we're legally required to keep some of it.
264+
</p>
265+
<p className="mb-4">
266+
We retain data as long as your account or project exists. When you
267+
delete your account or project, we delete all associated data,
268+
including both anonymous analytics data and any personal
269+
information.
270+
</p>
271+
<p className="mb-4">
272+
We'll confirm the deletion is complete in writing. Some data might
273+
stay in our backups for a short time, but it won't be accessible
274+
for any processing.
275+
</p>
276+
</section>
277+
278+
<section className="mb-8">
279+
<h2 className="mb-4 font-bold text-2xl">Checking Up on Us</h2>
280+
<p className="mb-4">
281+
You have the right to audit how well we're following this
282+
agreement. We'll cooperate and provide the information you need to
283+
verify we're meeting our data protection commitments.
284+
</p>
285+
<p className="mb-4">
286+
We keep detailed records of how we process data and our security
287+
measures, which you can review during audits. Just give us
288+
reasonable notice so we can arrange it without disrupting our
289+
service.
290+
</p>
291+
</section>
292+
293+
<section className="mb-8">
294+
<h2 className="mb-4 font-bold text-2xl">
295+
Who's Responsible for What
296+
</h2>
297+
<p className="mb-4">
298+
Our liability under this agreement follows the same limits as our{" "}
299+
<a className="text-primary hover:text-primary/80" href="/terms">
300+
Terms of Service
301+
</a>
302+
. If we mess up and it causes problems for you, we'll take
303+
responsibility for claims that result from our mistakes.
304+
</p>
305+
<p className="mb-4">
306+
Similarly, if you don't follow data protection laws or fail to get
307+
required consent from your visitors, you'll be responsible for any
308+
claims that result from those issues.
309+
</p>
310+
</section>
311+
312+
<section className="mb-8">
313+
<h2 className="mb-4 font-bold text-2xl">Governing Law</h2>
314+
<p className="mb-4">
315+
This DPA is governed by the laws applicable to our Terms of
316+
Service and forms part of our agreement with you. You do not need
317+
to sign this DPA separately. By using our service, you
318+
automatically agree to this DPA.
319+
</p>
320+
</section>
321+
322+
<section className="mb-8">
323+
<h2 className="mb-4 font-bold text-2xl">Questions?</h2>
324+
<p className="mb-4">
325+
For questions about this Data Processing Agreement, please contact
326+
us:
327+
</p>
328+
<div className="mt-4 mb-6 rounded border bg-muted/50 p-5">
329+
<p className="mb-3 flex items-center text-primary">
330+
<EnvelopeIcon className="mr-2 size-5" weight="duotone" />
331+
<a
332+
className="hover:underline"
333+
href="mailto:[email protected]"
334+
>
335+
336+
</a>
337+
</p>
338+
<p className="text-muted-foreground text-sm">
339+
We typically respond to inquiries within 24 hours.
340+
</p>
341+
</div>
342+
<div className="flex flex-wrap gap-4">
343+
<a className="text-primary hover:text-primary/80" href="/privacy">
344+
Privacy Policy →
345+
</a>
346+
<a
347+
className="text-primary hover:text-primary/80"
348+
href="/data-policy"
349+
>
350+
Data Policy →
351+
</a>
352+
<a
353+
className="text-primary hover:text-primary/80"
354+
href="/docs/compliance/gdpr-compliance-guide"
355+
>
356+
GDPR Compliance Guide →
357+
</a>
358+
</div>
359+
</section>
360+
</div>
361+
362+
{/* Footer */}
363+
<div className="mt-12">
364+
<Footer />
365+
</div>
366+
</div>
367+
</>
368+
);
369+
}

0 commit comments

Comments
 (0)