Add Privacy Policy + Terms of Service pages, fix Footer links

This commit is contained in:
Krystie
2026-08-13 06:06:07 -07:00
parent b16671ccee
commit 09113f1c19
3 changed files with 213 additions and 1 deletions
+132
View File
@@ -0,0 +1,132 @@
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Privacy Policy — DashCaddy',
description: 'DashCaddy privacy policy. We collect nothing. Your data never leaves your server.',
};
export default function PrivacyPage() {
return (
<div className="min-h-screen bg-surface-950 text-surface-100">
<div className="mx-auto max-w-3xl px-4 sm:px-6 lg:px-8 py-20">
<h1 className="text-4xl font-bold mb-8 text-white">Privacy Policy</h1>
<p className="text-surface-400 mb-8">Last updated: August 2026</p>
<div className="prose prose-invert max-w-none space-y-6 text-surface-300 leading-relaxed">
<section>
<h2 className="text-2xl font-semibold text-white mb-4">The Short Version</h2>
<p className="text-lg">
<strong className="text-brand-400">We collect nothing. We track nothing. Your data never leaves your server.</strong>
</p>
<p>
DashCaddy is self-hosted software. It runs entirely on your hardware. We have no servers in the middle,
no databases storing your information, and no analytics watching what you do. We literally cannot see your data.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">What We Don&apos;t Collect</h2>
<ul className="space-y-2">
<li> No telemetry or usage analytics</li>
<li> No error reporting sent to us (error tracking is opt-in and disabled by default)</li>
<li> No tracking pixels, cookies, or fingerprinting</li>
<li> No account creation required (TOTP-based auth, stored locally)</li>
<li> No data sold, shared, or transmitted to third parties</li>
<li> No advertising networks</li>
<li> No &quot;phone home&quot; functionality</li>
</ul>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">What Lives on Your Server</h2>
<p>
All of your data service configurations, credentials, SSL certificates, DNS records, backups,
and logs stays on your machine. DashCaddy stores this in a local data directory on your server.
It is never transmitted to us or any third party.
</p>
<p>
If you uninstall DashCaddy, you can delete the entire data directory. Nothing remains on external systems
because nothing was ever sent there.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">VM Sandboxing &amp; Isolation</h2>
<p>
DashCaddy creates a bounded virtual disk (WSL2 on Windows, Lima on macOS, loopback ext4 on Linux)
that physically cannot exceed the storage limit you choose. Uninstalling DashCaddy removes the entire
virtual machine and disk image. Zero data leakage.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">License Activation (Premium Only)</h2>
<p>
If you purchase a Premium license, the license key is validated locally. The initial activation
optionally contacts our license server to verify the key, but ongoing operation works fully offline.
No usage data is transmitted during validation only the license key itself.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Your California Privacy Rights (CCPA)</h2>
<p>
If you are a California resident, you have rights under the California Consumer Privacy Act (CCPA):
</p>
<ul className="space-y-2">
<li><strong>Right to Know:</strong> You can request what personal information we collect about you. (Answer: none.)</li>
<li><strong>Right to Delete:</strong> You can request deletion of your personal information. (There&apos;s nothing to delete it&apos;s all on your server.)</li>
<li><strong>Right to Opt-Out:</strong> You can opt out of the sale of your personal information. (We don&apos;t sell anything. There&apos;s nothing to opt out of.)</li>
<li><strong>Right to Non-Discrimination:</strong> You will not be treated differently for exercising these rights.</li>
</ul>
<p className="mt-4">
To exercise any of these rights, contact us at{' '}
<a href="mailto:support@dashcaddy.net" className="text-brand-400 hover:text-brand-300 font-medium">
support@dashcaddy.net
</a>. We will respond within 30 days.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Children&apos;s Privacy</h2>
<p>
DashCaddy does not knowingly collect any information from children under 13. Since we collect no
information from anyone, this is inherently satisfied.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Third-Party Services</h2>
<p>
DashCaddy deploys third-party applications (Docker containers) at your direction. These applications
are governed by their own privacy policies. DashCaddy itself does not integrate with or transmit data
to any third-party service.
</p>
<p>
For payments, we use Stripe. Stripe&apos;s privacy policy applies to payment processing. We never see
or store your credit card information.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Changes to This Policy</h2>
<p>
If we ever change our privacy practices, we&apos;ll update this page. But our core commitment won&apos;t change:
DashCaddy is self-hosted. Your data stays yours.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Contact</h2>
<p>
Questions about privacy? Email us at{' '}
<a href="mailto:support@dashcaddy.net" className="text-brand-400 hover:text-brand-300 font-medium">
support@dashcaddy.net
</a>
</p>
</section>
</div>
</div>
</div>
);
}
+80
View File
@@ -0,0 +1,80 @@
import type { Metadata } from 'next';
export const metadata: Metadata = {
title: 'Terms of Service — DashCaddy',
description: 'DashCaddy terms of service.',
};
export default function TermsPage() {
return (
<div className="min-h-screen bg-surface-950 text-surface-100">
<div className="mx-auto max-w-3xl px-4 sm:px-6 lg:px-8 py-20">
<h1 className="text-4xl font-bold mb-8 text-white">Terms of Service</h1>
<p className="text-surface-400 mb-8">Last updated: August 2026</p>
<div className="prose prose-invert max-w-none space-y-6 text-surface-300 leading-relaxed">
<section>
<h2 className="text-2xl font-semibold text-white mb-4">1. Acceptance of Terms</h2>
<p>By installing and using DashCaddy, you agree to these terms. If you don&apos;t agree, don&apos;t use it.</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">2. What DashCaddy Is</h2>
<p>
DashCaddy is self-hosted software that helps you deploy and manage Docker containers, reverse proxy
configuration, SSL certificates, and DNS records. It runs entirely on your hardware.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">3. User Responsibility</h2>
<p>
You are solely responsible for what you deploy using DashCaddy. DashCaddy provides deployment tools
it does not monitor, screen, or control what applications you choose to run.
</p>
<p className="mt-4">
<strong className="text-brand-400">You must comply with all applicable laws, including copyright and intellectual property laws.</strong>
Always stream and access content that you own or have legal rights to. DashCaddy does not condone or
support piracy of any kind.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">4. No Warranty</h2>
<p>
DashCaddy is provided &quot;as is&quot; without warranty of any kind. We are not liable for data loss,
service interruptions, security issues, or any damages arising from the use of DashCaddy.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">5. Premium License</h2>
<p>
Premium features require a paid license. Licenses are validated locally. Refunds are available within
14 days of purchase. Contact support@dashcaddy.net.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">6. Privacy</h2>
<p>
We collect no data. See our{' '}
<a href="/legal/privacy" className="text-brand-400 hover:text-brand-300 font-medium">Privacy Policy</a>{' '}
for details.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">7. Contact</h2>
<p>
Questions? Email{' '}
<a href="mailto:support@dashcaddy.net" className="text-brand-400 hover:text-brand-300 font-medium">
support@dashcaddy.net
</a>
</p>
</section>
</div>
</div>
</div>
);
}
+1 -1
View File
@@ -38,7 +38,7 @@ export default function Footer() {
links: [
{ label: 'Contact', href: 'mailto:support@dashcaddy.net' },
{ label: 'Docs', href: '/docs' },
{ label: 'Privacy Policy', href: '#' },
{ label: 'Privacy Policy', href: '/legal/privacy' },
{ label: 'Terms of Service', href: '/legal/terms' },
],
},