Files
website/dist/legal/privacy/index.html
2025-09-29 11:24:54 +02:00

350 lines
16 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<!-- CSS -->
<link rel="stylesheet" href="https://static.janishutz.com/css/slider.css">
<link rel="stylesheet" href="/css/style.css">
<!-- SEO -->
<title>Privacy Policy | janishutz.com</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta name="keywords" content="privacy-policy" />
<meta name="description"
content="Learn how your data is used on janishutz.com and all other services operated by Janis Hutz" />
<meta name="og:type" content="website" />
<meta name="og:url" content="https://janishutz.com" />
<meta name="og:locale" content="en_GB" />
<meta name="theme-color" content="#152b5c">
<style>
.info {
font-weight: normal;
}
</style>
</head>
<body>
<nav><script>
// Themeing
let loadedTheme = localStorage.getItem( 'theme' ) ?? 'auto';
var theme = loadedTheme;
let loadTheme = () => {
loadedTheme = localStorage.getItem( 'theme' ) ?? 'auto';
if ( loadedTheme === 'auto' ) {
if ( window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {
theme = 'dark_mode';
} else {
theme = 'light_mode';
}
}
if ( theme === 'dark_mode' ) {
document.documentElement.classList.remove( 'light' );
document.documentElement.classList.add( 'dark' );
} else {
document.documentElement.classList.add( 'light' );
document.documentElement.classList.remove( 'dark' );
theme === 'light_mode';
}
}
loadTheme();
setTimeout( () => {
document.querySelector( 'body' ).classList.add( 'loaded' );
}, 500 );
function changeTheme () {
theme = document.getElementById( 'theme-select' ).value;
localStorage.setItem( 'theme', theme );
loadTheme();
}
</script>
<div class="nav-placeholder"></div>
<div class="nav-top-bar">
<a href="/" class="logo-wrapper">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
</a>
<!-- <img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo"> -->
<div class="nav-toggle" onclick="openMenu( 'toggle' )">
<span class="line" id="line1"></span>
<span class="line" id="line2"></span>
<span class="line" id="line3"></span>
</div>
</div>
<div class="nav-menu">
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/projects">
<span class="material-symbols-outlined nav-icon">lightbulb</span>
<div>Projects</div>
</a>
<div class="nav-link-dropdown">
<a href="/projects">View all</a>
<a href="/projects/storagemanager">StorageManager</a>
<a href="/projects/qrscanner">QR & Barcode Insight</a>
<a href="/projects/libreevent">libreǝvent</a>
<a href="/projects/musicplayer">MusicPlayer</a>
<a href="https://conductorcalc.com" target="_blank">ConductorCalc</a>
</div>
</div>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/services">
<span class="material-symbols-outlined nav-icon">build</span>
<div>Services</div>
</a>
<div class="nav-link-dropdown">
<a href="https://store.janishutz.com">Store</a>
<a href="https://account.janishutz.com">Account</a>
<a href="https://development.janishutz.com">Custom Websites</a>
</div>
</div>
<a href="/" class="logo-wrapper">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
</a>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/about">
<span class="material-symbols-outlined nav-icon">info</span>
<div>About</div>
</a>
<div class="nav-link-dropdown">
<a href="/about">About janishutz.com</a>
<a href="/about/aboutme">About Janis Hutz</a>
<a href="https://blog.janishutz.com" target="_blank">Blog</a>
<a href="/legal">Legal</a>
</div>
</div>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/support">
<span class="material-symbols-outlined nav-icon">support_agent</span>
<div>Support</div>
</a>
<div class="nav-link-dropdown">
<a href="https://support.janishutz.com" target="_blank">Support Hub</a>
<a href="https://support.janishutz.com/knowledgebase.php" target="_blank">Knowledgebase</a>
<a href="/support/old">Old websites</a>
</div>
</div>
</div>
<script>
const toggle = document.getElementsByClassName( 'nav-toggle' )[ 0 ];
const menu = document.getElementsByClassName( 'nav-menu' )[ 0 ];
const bar = document.getElementsByClassName( 'nav-top-bar' )[ 0 ];
function openMenu( action ) {
if ( action === 'toggle' ) {
if ( menu.classList.contains( 'active' ) ) {
openMenu( 'close' );
} else {
openMenu( 'open' );
}
} else if ( action === 'close' ) {
menu.classList.remove( 'active' );
toggle.classList.remove( 'active' );
document.body.classList.remove( 'no-scroll' );
} else if ( action === 'open' ) {
document.body.classList.add( 'no-scroll' );
toggle.classList.add( 'active' );
menu.classList.add( 'active' );
bar.classList.remove( 'slide-up' );
menu.classList.remove( 'slide-up' );
}
}
let oldScroll = 0;
document.addEventListener( 'scroll', () => {
if ( oldScroll < window.scrollY && window.innerHeight * 0.2 < window.scrollY ) {
bar.classList.add( 'slide-up' );
menu.classList.add( 'slide-up' );
} else if ( oldScroll > window.scrollY ) {
bar.classList.remove( 'slide-up' );
menu.classList.remove( 'slide-up' );
}
oldScroll = window.scrollY;
} );
// TODO: Hide menu on when scrolling down
</script>
</nav>
<div class="content">
<h1 class="title">Privacy Policy</h1>
<a href="/legal" class="back">&leftarrow; Back to legal hub</a>
<hr class="pullquote-lines">
<h3 class="quotes-text">Privacy is an inherent human right, and a requirement for maintaining the human
condition with dignity and respect</h3>
<h4 class="quotes-author">- Bruce Schneier</h4>
<hr class="pullquote-lines">
<p>Keeping your data safe is at the centre of all of my software. Therefore, I will never sell your data and all
data that is collected automatically is not tied to your identity.</p>
<ol style="width: 100%">
<b>
<li>
What data is collected on you?
<p class="info">Some of my web-based services, but none of my apps may use Privacy Preserving
Product Analytics, meaning all data on interactions with my websites and services will be
aggregated and anonymized. All raw data is deleted within a day of being collected. <br>
This data includes your anonymized IP address and your approximated country (which is estimated
based on your IP address) and what pages you clicked on. For this purpose my services use
Matomo, which is a free and open source, self-hosted analytics tool.
<br> All other data that is collected on you is data you willingly and at your own
responsibility provide me with when signing up or using any of my services. Whilst I try to have
everything run cloud-less, some features still require some data handling on my servers.
</p>
</li>
</b>
<b>
<li>
How is this data stored and processed?
<p class="info">All the data that has to be sent to the cloud for processing, like the contact form,
is sent to my servers using an HTTPS connection, hence, it is an encrypted connection. You may
have your request deleted at any time. To do so, depending on the platform, you will either find
a button on the account page, or you will have to contact me to delete the data.
<br> The data collected automatically by my analytics tool is stored for one day and never
allows me to uniquely identify you as an individual. Once the data is aggregated, the raw data
is deleted, and you will only show up as part of all users that visit my websites.
</p>
</li>
</b>
<b>
<li>
How can I have my data deleted?
<p class="info">
You can delete your account data <a href="https://account.janishutz.com/account/delete"
target="_blank">here</a>. <br>
Data from other services that are connected to this service can also be deleted from the account
page under <a href="https://account.janishutz.com/account/services" target="_blank">here</a>.
<br>
To have non-account data deleted, or in case the automated deletion fails, please <a
href="https://support.janishutz.com/index.php?a=add&catid=5">contact me</a>. I will not be
able to delete the data that is collected automatically, as I do not know who this data belongs
to and all raw data is deleted within one day of creation.
</p>
</li>
</b>
<b>
<li>
Opting out of data collection
<p class="info">All websites that feature Matomo tracking code will allow you to opt out, by
clicking the small symbol in the bottom right corner.</p>
</li>
</b>
<b>
<li>
Cookies
<p class="info">Most of my websites do not use any cookies. If they do use cookies, the specific
service will explicitly state so when you first visit the page. Cookies are small amounts of
text-based data used to identify you, which, whenever one of my services uses cookies, is
required to allow you to sign into that page. No third party cookies are used on any of my
websites</p>
</li>
</b>
<b>
<li>
Sharing data with third parties
<p class="info">No data is shared with third parties, except you give your explicit, written consent
to do so. In the future, my store may support other developer's software. If so and you purchase
a product by a third-party developer, some data will have to be shared with them.</p>
</li>
</b>
<b>
<li>
Updating this privacy Policy
<p class="info">I retain the right to, at any time, at my own will and discretion, update this
privacy policy. Valid is always the privacy policy which is available at this URL</p>
</li>
</b>
</ol>
<i>Last updated 2025-09-12</i>
</div>
<footer><div class="footer-container">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
<div class="footer-text-container">
<div class="footer-category">
<h3>Projects</h3>
<a href="/projects">View all</a>
<a href="/projects/storagemanager">StorageManager</a>
<a href="/projects/qrscanner">QR & Barcode Insight</a>
<a href="/projects/libreevent">libreǝvent</a>
<a href="/projects/musicplayer">MusicPlayer</a>
<a href="/projects/biogascontrollerapp">BiogasControllerApp</a>
</div>
<div class="footer-category">
<h3>Info</h3>
<a href="/about">About janishutz.com</a>
<a href="/about/aboutme">About Janis Hutz</a>
<div class="theme-selector">
<span class="material-symbols-outlined" id="theme-switcher-icon">light_mode</span>
<select id="theme-select" onchange="changeTheme()">
<option value="auto">Auto</option>
<option value="light_mode">Light</option>
<option value="dark_mode">Dark</option>
</select>
</div>
</div>
<div class="footer-category">
<h3>Support</h3>
<a href="https://support.janishutz.com">Get support</a>
<a href="https://support.janishutz.com/knowledgebase.php">Knowledgebase</a>
<a href="/support/support-status">Support status</a>
</div>
<div class="footer-category">
<h3>Legal</h3>
<a href="/legal/privacy">Privacy Policy</a>
<a href="/legal/tos">Terms of Service</a>
<a href="/legal/returns">Return policy</a>
<a href="/support/support-status">Support Status</a>
<div onclick="showAnalytics()" style="cursor: pointer;">Analytics</div>
</div>
<div class="analytics-notice" id="analytics">
<h2>Analytics</h2>
<p>This website uses privacy preserving product analytics allowing me to analyze aggregated statistics for this website. All data collected will not allow me to uniquely identify you. <br><a href="/legal/privacy">Privacy Policy</a></p>
<!-- Matomo stuff -->
<div id="matomo-opt-out">
Loading...
</div>
<script src="https://analytics.janishutz.com/index.php?module=CoreAdminHome&action=optOutJS&divId=matomo-opt-out&language=auto&fontColor=000000&fontSize=12px&fontFamily=monospace&showIntro=1"></script>
<!-- Matomo Image Tracker-->
<img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.janishutz.com/matomo.php?idsite=2&amp;rec=1" style="border:0" alt="" />
<!-- End Matomo -->
<button class="analytics-button" onclick="closeAnalytics()"><span class="material-symbols-outlined">close</span></button>
<div class="small-symbol" onclick="showAnalytics()" title="Change your analytics preferences"><span class="material-symbols-outlined">Analytics</span></div>
</div>
</div>
<script>
function closeAnalytics () {
document.getElementById( 'analytics' ).classList.remove( 'show' );
localStorage.setItem( 'analytics-dismissed', 'true' );
}
function showAnalytics () {
document.getElementById( 'analytics' ).classList.add( 'show' );
}
if ( !localStorage.getItem( 'analytics-dismissed' ) ) {
document.getElementById( 'analytics' ).classList.add( 'show' );
}
// Show which theme is loaded
document.getElementById( 'theme-select' ).value = loadedTheme;
</script>
</div>
</footer>
</body>
</html>