feat: privacy policy

This commit is contained in:
Maya 2025-10-16 22:13:32 +03:00
parent 6150c76487
commit 1032fc91fd
No known key found for this signature in database
4 changed files with 123 additions and 1 deletions

View File

@ -10,7 +10,8 @@
"footer": { "footer": {
"copyright": "© {year} VERT.", "copyright": "© {year} VERT.",
"source_code": "Source code", "source_code": "Source code",
"discord_server": "Discord server" "discord_server": "Discord server",
"privacy_policy": "Privacy policy"
}, },
"upload": { "upload": {
"title": "The file converter you'll love.", "title": "The file converter you'll love.",
@ -248,5 +249,8 @@
"button": "JPEGIFY {compression}%!!!", "button": "JPEGIFY {compression}%!!!",
"download": "Download", "download": "Download",
"delete": "Delete" "delete": "Delete"
},
"privacy": {
"title": "Privacy Policy"
} }
} }

View File

@ -5,6 +5,7 @@
const items = $derived([ const items = $derived([
[m["footer.source_code"](), GITHUB_URL_VERT], [m["footer.source_code"](), GITHUB_URL_VERT],
[m["footer.discord_server"](), DISCORD_URL], [m["footer.discord_server"](), DISCORD_URL],
[m["footer.privacy_policy"](), "/privacy"],
]); ]);
const year = new Date().getFullYear(); const year = new Date().getFullYear();

View File

@ -41,6 +41,11 @@
color: "var(--bg-gradient-red-from)", color: "var(--bg-gradient-red-from)",
at: 100, at: 100,
}, },
{
matcher: (path) => path === "/privacy/",
color: "var(--bg-gradient-red-from)",
at: 100,
},
]); ]);
const color = $derived( const color = $derived(

View File

@ -0,0 +1,112 @@
<script lang="ts">
import { m } from "$lib/paraglide/messages";
import { ShieldCheckIcon } from "lucide-svelte";
</script>
<div class="flex flex-col h-full items-center">
<h1 class="hidden md:block text-[40px] tracking-tight leading-[72px] mb-6">
<ShieldCheckIcon size="40" class="inline-block -mt-2 mr-2" />
{m["privacy.title"]()}
</h1>
<div
class="w-full max-w-[1280px] flex flex-col md:flex-row gap-4 p-4 md:px-4 md:py-0"
>
<div class="bg-panel rounded-2xl p-6 shadow-panel text-lg font-normal">
<h2 class="text-2xl mb-3">Summary</h2>
<p class="mb-4">
VERT's privacy policy is very simple: we do not collect or store
any data on you at all. We don't use cookies or trackers,
analytics are completely private, and all conversions (except
videos) happen locally on your browser. Videos are deleted after
being downloaded, or an hour, unless explicitly given permission
by you to be stored; it will only be used for the purpose of
troubleshooting.
<br />
<br />
Note this may only apply to the official VERT instance at
<a href="https://vert.sh" class="underline">vert.sh</a>;
third-party instances may handle your data differently.
</p>
<h2 class="text-2xl mb-3">Conversions</h2>
<p class="mb-4">
Most conversions (images, documents, audio) happen entirely
locally on your device using WebAssembly versions of the
relevant tools (e.g. ImageMagick, Pandoc, FFmpeg). This means
your files never leave your device and we will never have access
to them.
<br />
<br />
Video conversions are performed on our servers because they require
more processing power and cannot be done very quickly on the browser
yet. Videos you convert with VERT are deleted after being downloaded,
or after one hour, unless you explicitly give permission for us to
store them longer purely for troubleshooting purposes.
</p>
<h2 class="text-2xl mb-3">Conversion Errors</h2>
<div class="mb-4">
When a video conversion fails, we may collect some anonymous
data to help us diagnose the issue. This data may include:
<ul class="list-disc list-inside mt-2 mb-2">
<li>The job ID, which is the anonymized file name</li>
<li>The format you converted from</li>
<li>The format you converted to</li>
<li>
The FFmpeg stderr output of your job (error message)
</li>
<li>
The actual video file (if given explicit permission)
</li>
</ul>
This information is used solely for the purpose of diagnosing conversion
issues. The actual video file will only ever be collected if you
give us permission to do so, where it will only be used for troubleshooting.
</div>
<h3 class="text-xl mt-4 mb-2">Analytics</h3>
<p class="mb-4">
We self-host a Plausible instance for completely anonymous and
aggregated analytics. Plausible does not use cookies and
complies with all major privacy regulations (GDPR/CCPA/PECR).
You can opt out of analytics in the "Privacy & data" section in <a
href="/settings"
class="underline">settings</a
>
and read more about Plausible's privacy practices
<a
href="https://plausible.io/privacy-focused-web-analytics"
class="underline">here</a
>.
</p>
<h3 class="text-xl mt-4 mb-2">Local Storage</h3>
<p class="mb-4">
We use your browser's local storage to save your settings, and
your browser's session storage to temporarily store the GitHub
contributors list for the "About" section to reduce repeated
GitHub API requests. No personal data is stored or transmitted.
<br />
<br />
The WebAssembly versions of the conversion tools we use (FFmpeg,
ImageMagick, Pandoc) are also stored locally on your browser when
you first visit the website, so you dont need to redownload them
each visit. No personal data is stored or transmitted. You may view
or delete this data at any time in the "Privacy & data" section in
<a href="/settings" class="underline">settings</a>.
</p>
<h3 class="text-xl mt-4 mb-2">Contact</h3>
<p class="mb-0">
For questions, email us at: <a
href="mailto:hello@vert.sh"
class="underline">hello@vert.sh</a
>. If you are using a third-party instance of VERT, please
contact the hoster of that instance instead.
</p>
<p class="text-sm text-muted mt-6">Last updated: 2025-10-16</p>
</div>
</div>
</div>