Skip to content

Commit 1623548

Browse files
committed
Add privacy policy
1 parent 118f503 commit 1623548

3 files changed

Lines changed: 152 additions & 3 deletions

File tree

source/_layouts/main.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ class="ignore-agent shadow-xl z-50 fixed bottom-3.5 right-3.5 border border-zinc
135135
{{-- Footer --}}
136136
<footer class="border-t border-zinc-100 dark:border-zinc-800 py-8 agent:hidden">
137137
<x-container class="flex flex-col sm:flex-row sm:items-center justify-between gap-4 text-xs text-zinc-500 dark:text-zinc-400">
138-
<p>Brought you by Alessio and Gianluca, <a href="https://oneofftech.de" target="_blank" rel="noopener noreferrer" class="underline hover:text-zinc-950 dark:hover:text-white transition-button">OneOff-Tech</a> and contributors.</p>
139-
138+
<p>Brought you by Alessio and Gianluca, <a href="https://oneofftech.de" target="_blank" rel="noopener" class="underline hover:text-zinc-950 dark:hover:text-white transition-button">OneOff-Tech</a> and contributors. <a href="{{ $page->url('/privacy') }}">Privacy Policy</a>.</p>
139+
140140
<x-oot class="text-accent-600 dark:text-zinc-200" />
141141
</x-container>
142142
</footer>

source/privacy.blade.php

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
title: Privacy & Cookie Policy
3+
description: How contentmd.org processes your personal data and uses cookies, in compliance with EU Regulation 2016/679 (GDPR).
4+
card:
5+
template: '_og.page'
6+
path: /assets/og/privacy.png
7+
---
8+
9+
@extends('_layouts.main')
10+
11+
@section('body')
12+
13+
<x-page-hero>
14+
Privacy &amp; Cookie Policy
15+
16+
<x-slot name="description">
17+
How we processes your personal data and uses cookies, in compliance with EU Regulation 2016/679 (GDPR).
18+
</x-slot>
19+
</x-page-hero>
20+
21+
22+
<div class="pt-8">
23+
<x-container class="mt-4 mb-12">
24+
<div class="prose prose-zinc dark:prose-invert max-w-none">
25+
26+
<h2>Data Controller</h2>
27+
<p><strong>Controller</strong>: Oneofftech-UG (haftungsbeschränkt) &mdash; <a href="mailto:info@oneofftech.de">info@oneofftech.de</a></p>
28+
<p><strong>Data Protection Officer</strong>: <a href="mailto:privacy@oneofftech.xyz">privacy@oneofftech.xyz</a></p>
29+
30+
<h2>Data we collect</h2>
31+
32+
<h3>Server logs</h3>
33+
<p>When you visit contentmd.org, our web server automatically records:</p>
34+
<ul>
35+
<li>IP address</li>
36+
<li>Request path, method, and HTTP status code</li>
37+
<li>Date and time of the request</li>
38+
<li>Browser and operating system (User-Agent header)</li>
39+
<li>Referring URL</li>
40+
</ul>
41+
<p>These logs are used solely to keep the website running and diagnose technical issues. They are retained for 6 months and then deleted.</p>
42+
<p>We use no analytics services, tracking pixels, session recording tools, or any other third-party monitoring.</p>
43+
44+
<h3>Agent mode and session storage</h3>
45+
<p>The agent mode toggle saves your viewing preference (human or agent) in your browser&rsquo;s session storage. This data stays on your device and is never transmitted to our servers. No personal data is involved.</p>
46+
47+
<h2>Cookie policy</h2>
48+
<p>We do not use analytics, advertising, or tracking cookies.</p>
49+
<p>To operate the Agent Mode toggle we store a <code>contentmd-mode</code> entry in session storage. These data do not identify you personally and expire when you close your browser.</p>
50+
51+
<h2>Legal basis</h2>
52+
<p>Server log processing is based on our legitimate interest (Art. 6(1)(f) GDPR) in maintaining the security and reliable operation of this website.</p>
53+
54+
<h2>Data recipients</h2>
55+
<p>We do not sell or share your personal data with third parties for marketing or any other purposes.</p>
56+
<p>Hosting: Hetzner Online GmbH, Germany &mdash; our infrastructure provider, appointed as data processor under Article 28 GDPR.</p>
57+
58+
<h2>International transfers</h2>
59+
<p>We do not transfer personal data outside the European Union.</p>
60+
61+
<h2>Data retention</h2>
62+
<p>Server logs are retained for 6 months, after which they are permanently deleted.</p>
63+
64+
<h2>Your rights</h2>
65+
<p>Under the GDPR you have the right to access, rectify, or erase your personal data, to restrict or object to processing, and to lodge a complaint with a supervisory authority.</p>
66+
<p>To exercise any of these rights, contact our DPO at <a href="mailto:privacy@oneofftech.xyz">privacy@oneofftech.xyz</a>.</p>
67+
68+
<h2>Data security</h2>
69+
<p>All data in transit is protected with TLS. Our servers are located and managed at data centres in Germany.</p>
70+
71+
<h2>Changes to this policy</h2>
72+
<p>We may update this policy at any time. The current version is always available at this URL.</p>
73+
74+
</div>
75+
</x-container>
76+
</div>
77+
78+
79+
<div class="h-16 agent:hidden"></div>
80+
81+
@endsection
82+
83+
@push('markdown')
84+
85+
## Data Controller
86+
87+
**Controller**: Oneofftech-UG (haftungsbeschränkt) — [info@oneofftech.de](mailto:info@oneofftech.de)
88+
89+
**Data Protection Officer**: [privacy@oneofftech.xyz](mailto:privacy@oneofftech.xyz)
90+
91+
## Data we collect
92+
93+
### Server logs
94+
95+
When you visit contentmd.org, our web server automatically records:
96+
97+
- IP address
98+
- Request path, method, and HTTP status code
99+
- Date and time of the request
100+
- Browser and operating system (User-Agent header)
101+
- Referring URL
102+
103+
These logs are used solely to keep the website running and diagnose technical issues. They are retained for **6 months** and then deleted.
104+
105+
We use no analytics services, tracking pixels, session recording tools, or any other third-party monitoring.
106+
107+
### Agent mode and local storage
108+
109+
The agent mode toggle saves your viewing preference (human or agent) in your browser's session storage. This data stays on your device and is never transmitted to our servers. No personal data is involved.
110+
111+
## Cookie policy
112+
113+
We do not use analytics, advertising, or tracking cookies.
114+
115+
The website may set technically necessary session cookies to operate core functionality. These cookies do not identify you personally and expire when you close your browser.
116+
117+
## Legal basis
118+
119+
Server log processing is based on our legitimate interest (Art. 6(1)(f) GDPR) in maintaining the security and reliable operation of this website.
120+
121+
## Data recipients
122+
123+
We do not sell or share your personal data with third parties for marketing or any other purposes.
124+
125+
**Hosting**: Hetzner Online GmbH, Germany — our infrastructure provider, appointed as data processor under Article 28 GDPR.
126+
127+
## International transfers
128+
129+
We do not transfer personal data outside the European Union.
130+
131+
## Data retention
132+
133+
Server logs are retained for **6 months**, after which they are permanently deleted.
134+
135+
## Your rights
136+
137+
Under the GDPR you have the right to access, rectify, or erase your personal data, to restrict or object to processing, and to lodge a complaint with a supervisory authority.
138+
139+
To exercise any of these rights, contact our DPO at [privacy@oneofftech.xyz](mailto:privacy@oneofftech.xyz).
140+
141+
## Data security
142+
143+
All data in transit is protected with TLS. Our servers are located and managed at data centres in Germany.
144+
145+
## Changes to this policy
146+
147+
We may update this policy at any time. The current version is always available at this URL.
148+
149+
@endpush

src/Listeners/GenerateSitemap.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public function handle(Jigsaw $jigsaw)
3030
->reject(function ($path) {
3131
return $this->isExcluded($path);
3232
})->each(function ($path) use ($baseUrl, $sitemap) {
33-
$sitemap->addItem(rtrim($baseUrl, '/') . '/' . $path, time(), Sitemap::DAILY);
33+
$sitemap->addItem(rtrim($baseUrl, '/') . '/' . trimPath($path), time(), Sitemap::DAILY);
3434
});
3535

3636
$sitemap->write();

0 commit comments

Comments
 (0)