Skip to content

Commit

Permalink
Add privacy policy page
Browse files Browse the repository at this point in the history
  • Loading branch information
codeofandrin committed Jan 9, 2025
1 parent 5a87f21 commit 17911a6
Show file tree
Hide file tree
Showing 11 changed files with 306 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/app/(general)/legal/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import MdLegalNotice from "@/content/legal/legal-notice.md"
export default function LegalNotice() {
return (
<div className="flex flex-col items-center">
<div className="mt-10 w-full px-7 sm:mt-20 sm:max-w-screen-xl">
<div className="mt-24 w-full px-7 sm:mt-32 sm:max-w-screen-xl">
<MarkdownContent>{MdLegalNotice}</MarkdownContent>
</div>
</div>
Expand Down
13 changes: 13 additions & 0 deletions src/app/(general)/privacy/error.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
"use client"

import { useEffect } from "react"

import ErrorComponent from "@/components/Error"

export default function Error({ error, reset }: { error: Error & { digest?: string }; reset: () => void }) {
useEffect(() => {
console.error(error)
}, [error])

return <ErrorComponent reset={reset} />
}
15 changes: 15 additions & 0 deletions src/app/(general)/privacy/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import MarkdownContent from "@/components/common/MarkdownContent"
import MdPrivacyPolicy from "@/content/privacy/privacy-policy.md"
import "@/styles/privacy/PrivacyPolicy.css"

export default function PrivacyPolicy() {
return (
<div className="flex flex-col items-center">
<div className="mt-24 w-full px-7 sm:mt-32 sm:max-w-screen-xl">
<div className="content-privacy">
<MarkdownContent>{MdPrivacyPolicy}</MarkdownContent>
</div>
</div>
</div>
)
}
9 changes: 4 additions & 5 deletions src/app/(general)/release-notes/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import MarkdownContent from "@/components/common/MarkdownContent"
import { extractMarkdownMetaData } from "@/utils/helpers"
import "@/styles/Markdown.css"

export default function ReleaseNotes() {
const importAllFiles = (r: any) => r.keys().map(r)
Expand All @@ -10,8 +9,8 @@ export default function ReleaseNotes() {

return (
<div className="flex flex-col items-center">
<div className="mt-10 w-full px-7 sm:mt-20 sm:max-w-screen-xl">
<h1 className="mt-14 pb-6 font-logo text-3xl font-bold tracking-tight text-neutral-800 sm:text-4xl">
<div className="mt-24 w-full px-7 sm:mt-32 sm:max-w-screen-xl">
<h1 className="pb-6 font-logo text-3xl font-bold tracking-tight text-neutral-800 sm:text-4xl">
Release Notes
</h1>
{markdownFiles.map((release: { default: string }, i: number) => {
Expand All @@ -26,7 +25,7 @@ export default function ReleaseNotes() {
{/* Mobile view */}
<div className="mt-14 flex flex-col sm:hidden">
<p className="text-sm font-medium text-primary-400">{date}</p>
<div className={`${isLast ? "pb-5" : "pb-3"}`}>
<div className={`${isLast ? "pb-5" : "pb-3"} mt-5`}>
<MarkdownContent>{content}</MarkdownContent>
</div>
</div>
Expand All @@ -41,7 +40,7 @@ export default function ReleaseNotes() {
</div>
)}
</div>
<div className="pb-9">
<div className="mt-8 pb-9">
<MarkdownContent>{content}</MarkdownContent>
</div>
</div>
Expand Down
28 changes: 16 additions & 12 deletions src/components/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@ import Link from "next/link"
import { EMail } from "@/utils/constants"
import ImgLogoLarge from "@/assets/images/exifoo_logo_large.png"

const productItems = [
{ text: "Download", link: "/download" },
{ text: "Features", link: "/#features" },
{ text: "Release Notes", link: "/release-notes" },
{ text: "Pricing", link: "/#pricing" },
{ text: "Feedback", link: `mailto:${EMail.feedback}` },
{ text: "Support", link: `mailto:${EMail.help}` }
]

const legalItems = [
{ text: "Legal Notice", link: "/legal" },
{ text: "Privacy Policy", link: "/privacy" }
]

interface LinksPropsType {
title: string
items: { text: string; link: string }[]
Expand Down Expand Up @@ -50,19 +64,9 @@ export default function Footer() {
{/* Links */}
<div className="mt-14 grid grid-cols-2 sm:w-1/2 sm:justify-end">
{/* Product */}
<Links
title="Product"
items={[
{ text: "Download", link: "/download" },
{ text: "Features", link: "/#features" },
{ text: "Release Notes", link: "/release-notes" },
{ text: "Pricing", link: "/#pricing" },
{ text: "Feedback", link: `mailto:${EMail.feedback}` },
{ text: "Support", link: `mailto:${EMail.help}` }
]}
/>
<Links title="Product" items={productItems} />
{/* Legal */}
<Links title="Legal" items={[{ text: "Legal Notice", link: "/legal" }]} />
<Links title="Legal" items={legalItems} />
</div>
</div>
)
Expand Down
14 changes: 11 additions & 3 deletions src/content/legal/legal-notice.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
# Legal Notice

<div class="spacer-lg"></div>

### Responsible entity

Andrin Schaller
Fahrweidstrasse 83
5630 Muri AG
Andrin Schaller \
Fahrweidstrasse 83 \
5630 Muri AG \
Switzerland

<div className="spacer"></div>

**Email:** [$email-info](mailto:$email-info)

<div class="spacer-lg"></div>

### Disclaimer

The author assumes no liability for the correctness, accuracy, timeliness, reliability and completeness of the information.
Expand All @@ -20,10 +24,14 @@ Liability claims against the author for material or immaterial damage resulting

All offers are non-binding. The author expressly reserves the right to change, add to, or delete parts of the pages or the entire offer without prior notice, or to temporarily or permanently cease publication.

<div class="spacer-lg"></div>

### Disclaimer for content and links

References and links to third party websites are outside our area of responsibility. It rejected any responsibility for such websites. Access to and use of such websites is at the user's own risk.

<div class="spacer-lg"></div>

### Copyright declaration

The copyrights and all other rights to content, images, photos or other files on this website belong exclusively to Andrin Schaller or the specifically named rights holders. The written consent of the copyright holder must be obtained in advance for the reproduction of any elements.
Expand Down
164 changes: 164 additions & 0 deletions src/content/privacy/privacy-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# Privacy Policy

This Privacy Policy explains the type, scope, and purpose of the collection and use of personal data
on our website exifoo.com ("Website") by exifoo ("we", "us"). It also provides information about
your rights. These rights are based on the EU General Data Protection Regulation ("GDPR"),
the Swiss Federal Act on Data Protection (“FADP”), and the revised Swiss Federal Act on
Data Protection ("revFADP").

<div class="spacer-2xl"></div>

## Responsible entity

Responsible for processing data on the Website and the point of contact
for privacy-related inquiries is:

<div class="spacer"></div>

Andrin Schaller \
Fahrweidstrasse 83 \
5630 Muri AG \
Switzerland

<div class="spacer"></div>

**Email:** [$email-info](mailto:$email-info)

<div class="spacer-2xl"></div>

## Data Collection

<div class="spacer"></div>

### Hosting and Log Files

To host our Website, we use the services of Vercel Inc. (440 N Barranca Avenue #4133, Covina, CA 91723, USA)
("Vercel", "Host Provider"), with whom we have concluded a Data Processing Agreement ("DPA").

<div class="spacer"></div>

To optimize and maintain our Website, we log technical errors that may occur when using our Website.
Additionally, when using the Website, certain information is automatically collected and transmitted
by your device’s browser to our Host Provider. This information includes:

- IP address and operating system of your device
- Browser type, version, and language
- Date and time of the server request
- Accessed file
- The website from which the access was made (referrer URL)
- Status code (e.g., 404)
- Transmission protocol used (e.g., HTTP/2)

These data are collected and stored by our Host Provider to optimize processes and workflows,
particularly in connection with the use of our Website, as well as to ensure the security and
stability of the computer system.

<div class="spacer"></div>

For more information, please refer to Vercel's privacy policy: [https://vercel.com/legal/privacy-policy](https://vercel.com/legal/privacy-policy)

<div class="spacer-lg"></div>

### Cookies

With the exception of cookies from external services listed in Section 3, we do not store our own cookies
on this Website. These external services may set cookies to provide certain functionalities.

<div class="spacer"></div>

Cookies are small files that are stored on your device and saved by your browser.
Some cookies may be automatically deleted by the external service when you leave our Website.
Other cookies may remain on your device until you delete them or until they expire.

<div class="spacer"></div>

You can configure your browser to notify you before cookies are set and decide on a case-by-case basis
whether to accept cookies, block cookies for specific cases or in general, or completely disable cookies.
Please note that doing so may limit the functionality of this Website.

<div class="spacer"></div>

Cookies that are necessary for electronic communication, for functionalities requested by you,
or to optimize your user experience are stored — if the GDPR applies — based on Article 6(1)(f) of the GDPR.

<div class="spacer-2xl"></div>

## External Services

We use various third-party services on our Website. Below, we provide detailed information
about the specific services we use, their purposes, and the data they collect.

<div class="spacer-lg"></div>

### Payment Service Provider

For payment processing, we use the services of Lemon Squeezy LLC (222 South Main Street, Suite 500, Salt Lake City, UT 84101, USA)
("Lemon Squeezy", "Payment Service Provider").

<div class="spacer"></div>

The payment process is handled directly by the Payment Service Provider. We do not store or collect this
data for our own purposes, they're transmitted directly to the Payment Service Provider.

<div class="spacer"></div>

For more information, please refer to Lemon Squeezy's privacy policy: [https://www.lemonsqueezy.com/privacy](https://www.lemonsqueezy.com/privacy)

<div class="spacer-2xl"></div>

## Links

Our Website contains links to third-party websites. We are not responsible for the content and
privacy practices of external websites that you may reach through these links. Please refer to the
privacy policy directly on the respective websites.

<div class="spacer-2xl"></div>

## Sharing Data with Third Parties

To provide you with the information on our Website, we work with various service providers, especially with
IT service providers, to ensure we offer you a Website that meets today's standards. These service providers
only use your data within the scope of processing for us.

<div class="spacer"></div>

We transfer data to entities outside of Switzerland and the European Union (third countries) without your
consent only if this is required under the respective contract, to fulfill legal obligations,
or for the purposes of our legitimate interests.

<div class="spacer-2xl"></div>

## Your Rights

To the extent provided by the applicable data protection law, you have the right to request information
free of charge about the personal data stored about you, its origin, recipients, and the purpose of the
data processing. You also have the right, under certain legal conditions, to request correction, deletion,
restriction of processing, or, where applicable under the GDPR, to obtain your data for transfer to
another entity.

<div class="spacer"></div>

You can revoke any consent you have given with future effect at any time.
For this, simply send us an informal message via e-mail.

<div class="spacer"></div>

Please note that the rights mentioned above are subject to legal limitations and may affect or
prevent the provision of our services.

<div class="spacer"></div>

You have the right to assert your claims in court or to file a complaint with the competent
data protection authority. For Switzerland, the responsible authority is the Federal Data Protection
and Information Commissioner ([https://www.edoeb.admin.ch](https://www.edoeb.admin.ch)).

<div class="spacer-2xl"></div>

## Changes to this Privacy Policy

We reserve the right to change or update this Privacy Policy at any time. It is your responsibility
as a user to regularly review our Privacy Policy for updates to stay informed about any changes.

<div class="spacer"></div>

The current Privacy Policy can be accessed at [https://exifoo.com/privacy](https://exifoo.com/privacy).
20 changes: 20 additions & 0 deletions src/content/release-notes/2025-01-04_v0.1.0-alpha.10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
date: January 4, 2025
---

## v0.1.0-alpha.10

#### 🚀 New Features

- Lorem
- ipsum

#### 🔄 Improvements

- Lorem
- ipsum

#### 🐞 Bugfixes

- Lorem
- ipsum
20 changes: 20 additions & 0 deletions src/content/release-notes/2025-01-05_v0.2.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
date: January 5, 2025
---

## v0.1.0

#### 🚀 New Features

- Lorem
- ipsum

#### 🔄 Improvements

- Lorem
- ipsum

#### 🐞 Bugfixes

- Lorem
- ipsum
Loading

0 comments on commit 17911a6

Please sign in to comment.