Add privacy policy and terms of service pages; fix footer links (#placeholder)
This commit is contained in:
+12
-25
@@ -108,26 +108,10 @@ export default function AboutPage() {
|
||||
</h2>
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-6">
|
||||
{[
|
||||
{
|
||||
name: "Caddy",
|
||||
role: "Reverse Proxy & SSL",
|
||||
icon: "🔒",
|
||||
},
|
||||
{
|
||||
name: "Docker",
|
||||
role: "Container Runtime",
|
||||
icon: "🐳",
|
||||
},
|
||||
{
|
||||
name: "Node.js",
|
||||
role: "API Backend",
|
||||
icon: "🟢",
|
||||
},
|
||||
{
|
||||
name: "Technitium",
|
||||
role: "DNS Server",
|
||||
icon: "🌐",
|
||||
},
|
||||
{ name: "Caddy", role: "Reverse Proxy & SSL", icon: "🔒" },
|
||||
{ name: "Docker", role: "Container Runtime", icon: "🐳" },
|
||||
{ name: "Node.js", role: "API Backend", icon: "🟢" },
|
||||
{ name: "Technitium", role: "DNS Server", icon: "🌐" },
|
||||
].map((tech) => (
|
||||
<div
|
||||
key={tech.name}
|
||||
@@ -147,8 +131,7 @@ export default function AboutPage() {
|
||||
<div className="max-w-3xl mx-auto text-center">
|
||||
<h2 className="text-2xl font-bold text-white mb-6">Get In Touch</h2>
|
||||
<p className="text-surface-300 mb-8">
|
||||
Have questions, feedback, or want to contribute? We'd love to
|
||||
hear from you.
|
||||
Have questions, feedback, or want to contribute? We'd love to hear from you.
|
||||
</p>
|
||||
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<a
|
||||
@@ -158,13 +141,17 @@ export default function AboutPage() {
|
||||
Email Us
|
||||
</a>
|
||||
<a
|
||||
href="#"
|
||||
href="https://discord.gg/dashcaddy"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="px-6 py-3 rounded-lg border border-surface-700 hover:border-surface-500 text-surface-300 font-medium transition-colors"
|
||||
>
|
||||
Join Discord
|
||||
</a>
|
||||
<a
|
||||
href="#"
|
||||
href="https://github.com/dashcaddy"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="px-6 py-3 rounded-lg border border-surface-700 hover:border-surface-500 text-surface-300 font-medium transition-colors"
|
||||
>
|
||||
GitHub
|
||||
@@ -194,4 +181,4 @@ export default function AboutPage() {
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
import Navbar from "@/components/Navbar";
|
||||
import Footer from "@/components/Footer";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Privacy Policy - DashCaddy",
|
||||
description:
|
||||
"How DashCaddy handles your data. We believe in privacy — your server, your data, never leaving your network.",
|
||||
};
|
||||
|
||||
export default function PrivacyPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="flex-1">
|
||||
<section className="pt-32 pb-20 px-4">
|
||||
<div className="max-w-3xl mx-auto">
|
||||
<h1 className="text-4xl font-bold text-white mb-8">
|
||||
Privacy Policy
|
||||
</h1>
|
||||
<div className="space-y-6 text-surface-300 leading-relaxed">
|
||||
<p className="text-surface-400 text-sm">
|
||||
Last updated: June 2025
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Your Server, Your Data
|
||||
</h2>
|
||||
<p>
|
||||
DashCaddy runs entirely on your own hardware. We do not operate
|
||||
any cloud services, and DashCaddy never phones home. All data
|
||||
— container configurations, DNS records, SSL certificates, and
|
||||
usage statistics — stays on your server.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
What We Collect
|
||||
</h2>
|
||||
<p>
|
||||
When you purchase a premium license, our payment processor
|
||||
(Stripe) collects standard billing information. We receive only
|
||||
your email address and a license key — no credit card numbers
|
||||
touch our servers.
|
||||
</p>
|
||||
<p>
|
||||
During license activation, your server sends a one-time machine
|
||||
fingerprint to generate a unique license key. This fingerprint
|
||||
contains no personal information and is used solely to bind your
|
||||
license to your hardware.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
License Server
|
||||
</h2>
|
||||
<p>
|
||||
Premium features require a license server URL to validate your
|
||||
subscription. When you configure this, your server will make a
|
||||
brief HTTPS call to our license server to verify your key is
|
||||
active. The call includes only your license key and machine
|
||||
identifier — no content of your services is ever transmitted.
|
||||
</p>
|
||||
<p>
|
||||
The license server is hosted on infrastructure we control. We
|
||||
do not sell, share, or monetise any data from this process.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Cookies
|
||||
</h2>
|
||||
<p>
|
||||
The DashCaddy dashboard itself uses no tracking cookies. The
|
||||
license server uses a single HttpOnly session cookie during
|
||||
your browser session to manage authenticated license
|
||||
management operations. No third-party analytics or advertising
|
||||
cookies are used anywhere in the product.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Third Parties
|
||||
</h2>
|
||||
<p>
|
||||
DashCaddy's premium checkout is processed by Stripe, Inc. Their
|
||||
privacy policy governs any data you share with them. We do not
|
||||
receive your payment card details under any circumstances.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Changes to This Policy
|
||||
</h2>
|
||||
<p>
|
||||
If this policy changes, the date at the top of the page will
|
||||
reflect the update. We will never retroactively change how we
|
||||
handle data already collected.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">Contact</h2>
|
||||
<p>
|
||||
Questions about privacy? Email{" "}
|
||||
<a
|
||||
href="mailto:privacy@dashcaddy.net"
|
||||
className="text-brand-400 hover:text-brand-300"
|
||||
>
|
||||
privacy@dashcaddy.net
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
import Navbar from "@/components/Navbar";
|
||||
import Footer from "@/components/Footer";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Terms of Service - DashCaddy",
|
||||
description:
|
||||
"The terms under which you may use DashCaddy. Plain language, no fine print surprises.",
|
||||
};
|
||||
|
||||
export default function TermsPage() {
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main className="flex-1">
|
||||
<section className="pt-32 pb-20 px-4">
|
||||
<div className="max-w-3xl mx-auto">
|
||||
<h1 className="text-4xl font-bold text-white mb-8">
|
||||
Terms of Service
|
||||
</h1>
|
||||
<div className="space-y-6 text-surface-300 leading-relaxed">
|
||||
<p className="text-surface-400 text-sm">
|
||||
Last updated: June 2025
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Acceptance of Terms
|
||||
</h2>
|
||||
<p>
|
||||
By purchasing or using DashCaddy, you agree to these terms. If
|
||||
you do not agree, do not use the software.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
License Grant
|
||||
</h2>
|
||||
<p>
|
||||
DashCaddy is provided under a commercial license. A valid
|
||||
license key grants you the right to use premium features on one
|
||||
server installation. Licenses are bound to your hardware and
|
||||
are not transferable. A free tier covering core features is
|
||||
available without a license.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Permitted Use
|
||||
</h2>
|
||||
<p>
|
||||
You may use DashCaddy to manage your own servers or those of
|
||||
your clients. You may not redistribute, resell, or sublicense
|
||||
the software. You may not reverse engineer the license
|
||||
validation system.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Subscription & Billing
|
||||
</h2>
|
||||
<p>
|
||||
Subscriptions are billed in advance on a monthly, quarterly,
|
||||
or annual basis depending on your plan. Cancelling a
|
||||
subscription stops future billing; you retain access to
|
||||
premium features until the end of your current billing
|
||||
period. No refunds are offered for partial periods, unless
|
||||
required by applicable law.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Service Availability
|
||||
</h2>
|
||||
<p>
|
||||
DashCaddy is software you run on your own infrastructure. We
|
||||
do not guarantee uptime for the license validation server. If
|
||||
our license server is temporarily unavailable, premium
|
||||
features gracefully degrade — your services continue to run
|
||||
normally; they simply stop enforcing license eligibility
|
||||
checks until connectivity is restored.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Disclaimer
|
||||
</h2>
|
||||
<p>
|
||||
DashCaddy is provided "as is" without warranty of any kind.
|
||||
We are not liable for any damages arising from the use of this
|
||||
software. It is your responsibility to ensure your
|
||||
configuration is secure and your backups are current.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Account Termination
|
||||
</h2>
|
||||
<p>
|
||||
We reserve the right to revoke a license key if it is used in
|
||||
violation of these terms, including use on more servers than
|
||||
the license permits, or attempting to circumvent license
|
||||
validation.
|
||||
</p>
|
||||
|
||||
<h2 className="text-xl font-semibold text-white">
|
||||
Contact
|
||||
</h2>
|
||||
<p>
|
||||
Questions? Email{" "}
|
||||
<a
|
||||
href="mailto:legal@dashcaddy.net"
|
||||
className="text-brand-400 hover:text-brand-300"
|
||||
>
|
||||
legal@dashcaddy.net
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<Footer />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -19,16 +19,15 @@ export default function Footer() {
|
||||
links: [
|
||||
{ label: 'Getting Started', href: '/docs' },
|
||||
{ label: 'API Reference', href: '/docs#api' },
|
||||
{ label: 'Community', href: '#' },
|
||||
{ label: 'Discord', href: 'https://discord.gg/dashcaddy' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Support',
|
||||
links: [
|
||||
{ label: 'Contact', href: 'mailto:support@dashcaddy.net' },
|
||||
{ label: 'Discord', href: '#' },
|
||||
{ label: 'Privacy Policy', href: '#' },
|
||||
{ label: 'Terms of Service', href: '#' },
|
||||
{ label: 'Privacy Policy', href: '/privacy' },
|
||||
{ label: 'Terms of Service', href: '/terms' },
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -41,7 +40,7 @@ export default function Footer() {
|
||||
</svg>
|
||||
),
|
||||
label: 'Discord',
|
||||
href: '#',
|
||||
href: 'https://discord.gg/dashcaddy',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -126,4 +125,4 @@ export default function Footer() {
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user