Merge task/google-account-deletion into staging

This commit is contained in:
jjbrunton committed 2026-08-30 16:09:59 +01:00
commit 599be22eb1
6 files changed
+117

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
import { readFile } from 'node:fs/promises'
import { describe, expect, it } from 'vitest'
const pagePath = new URL('./page.tsx', import.meta.url)
describe('/delete-account public deletion resource', () => {
it('provides an accessible request route and the required deletion details', async () => {
const page = await readFile(pagePath, 'utf8')
expect(page).toContain('Delete your Sauci account')
expect(page).toContain('mailto:privacy@sauci.app')
expect(page).toContain('without reinstalling the app')
expect(page).toContain('Open Sauci and go to your Profile.')
expect(page).toContain('Choose Delete Account and follow the confirmation steps.')
expect(page).toContain('within 30 days')
expect(page).toContain('required for legal purposes')
expect(page).toContain('relationship data, question responses, match data, chat messages and photos')
})
})
+89
View File
@@ -0,0 +1,89 @@
import Link from 'next/link'
import { ArrowLeft } from 'lucide-react'
import type { Metadata } from 'next'
export const metadata: Metadata = {
title: 'Delete your Sauci account',
description: 'How to delete your Sauci account and associated data.',
}
export default function DeleteAccountPage() {
return (
<main className="min-h-screen bg-gradient-to-b from-background-light to-background">
<header className="py-6 px-6 border-b border-white/5">
<div className="max-w-4xl mx-auto flex items-center gap-4">
<Link href="/" className="flex items-center gap-2 text-white/60 hover:text-white transition-colors">
<ArrowLeft className="w-5 h-5" />
<span>Back to Home</span>
</Link>
</div>
</header>
<div className="max-w-4xl mx-auto px-6 py-12">
<h1 className="text-4xl font-bold mb-4">Delete your Sauci account</h1>
<p className="text-white/70 leading-relaxed text-lg">
You can request deletion of your Sauci account and associated data without reinstalling the app.
</p>
<div className="glass p-6 my-8">
<h2 className="text-2xl font-semibold text-white mb-3">Request deletion by email</h2>
<p className="text-white/70 leading-relaxed mb-4">
Email us from the address associated with your Sauci account and ask us to delete your account.
</p>
<a
href="mailto:privacy@sauci.app?subject=Sauci%20account%20deletion%20request"
className="inline-flex rounded-lg bg-primary px-5 py-3 font-semibold text-white hover:opacity-90 transition-opacity"
>
Request account deletion
</a>
<p className="text-white/60 mt-4">
Or email <a href="mailto:privacy@sauci.app" className="text-primary hover:underline">privacy@sauci.app</a>.
</p>
</div>
<div className="prose prose-invert prose-lg max-w-none space-y-8">
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Delete your account in the Sauci app</h2>
<ol className="list-decimal pl-6 text-white/70 space-y-2">
<li>Open Sauci and go to your Profile.</li>
<li>Select Account.</li>
<li>Choose Delete Account and follow the confirmation steps.</li>
</ol>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">What deletion covers</h2>
<p className="text-white/70 leading-relaxed">
Deleting an account permanently removes the account and profile, relationship data, question responses, match data, chat messages and photos, encryption keys, and other cloud-stored data associated with that account.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Timing and limited retention</h2>
<p className="text-white/70 leading-relaxed">
We will delete or anonymize your personal information within 30 days. We may retain information where required for legal purposes.
</p>
</section>
<section>
<h2 className="text-2xl font-semibold text-white mb-4">Need help?</h2>
<p className="text-white/70 leading-relaxed">
For questions about deletion or your data, contact <a href="mailto:privacy@sauci.app" className="text-primary hover:underline">privacy@sauci.app</a>.
</p>
</section>
</div>
</div>
<footer className="py-8 px-6 border-t border-white/5">
<div className="max-w-4xl mx-auto flex flex-col sm:flex-row items-center justify-between gap-4">
<span className="text-xl font-bold gradient-text">Sauci</span>
<div className="flex gap-6 text-sm text-white/40">
<Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link>
<Link href="/terms" className="hover:text-white transition-colors">Terms</Link>
<Link href="/" className="hover:text-white transition-colors">Home</Link>
</div>
</div>
</footer>
</main>
)
}
+4
View File
@@ -132,6 +132,9 @@ export default function PrivacyPolicy() {
<p className="text-white/70 leading-relaxed mt-4"> <p className="text-white/70 leading-relaxed mt-4">
To exercise these rights, please contact us at <a href="mailto:privacy@sauci.app" className="text-primary hover:underline">privacy@sauci.app</a>. To exercise these rights, please contact us at <a href="mailto:privacy@sauci.app" className="text-primary hover:underline">privacy@sauci.app</a>.
</p> </p>
<p className="text-white/70 leading-relaxed mt-4">
For account deletion instructions and an email deletion request, visit our <Link href="/delete-account" className="text-primary hover:underline">account deletion page</Link>.
</p>
</section> </section>
<section> <section>
@@ -176,6 +179,7 @@ export default function PrivacyPolicy() {
<span className="text-xl font-bold gradient-text">Sauci</span> <span className="text-xl font-bold gradient-text">Sauci</span>
<div className="flex gap-6 text-sm text-white/40"> <div className="flex gap-6 text-sm text-white/40">
<Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link> <Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link>
<Link href="/delete-account" className="hover:text-white transition-colors">Delete Account</Link>
<Link href="/terms" className="hover:text-white transition-colors">Terms</Link> <Link href="/terms" className="hover:text-white transition-colors">Terms</Link>
<Link href="/" className="hover:text-white transition-colors">Home</Link> <Link href="/" className="hover:text-white transition-colors">Home</Link>
</div> </div>
+1
View File
@@ -175,6 +175,7 @@ export default function RedeemPage() {
<span className="text-xl font-bold gradient-text">Sauci</span> <span className="text-xl font-bold gradient-text">Sauci</span>
<div className="flex gap-6 text-sm text-white/40"> <div className="flex gap-6 text-sm text-white/40">
<Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link> <Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link>
<Link href="/delete-account" className="hover:text-white transition-colors">Delete Account</Link>
<Link href="/terms" className="hover:text-white transition-colors">Terms</Link> <Link href="/terms" className="hover:text-white transition-colors">Terms</Link>
<Link href="/" className="hover:text-white transition-colors">Home</Link> <Link href="/" className="hover:text-white transition-colors">Home</Link>
</div> </div>
+1
View File
@@ -237,6 +237,7 @@ export default function TermsAndConditions() {
<span className="text-xl font-bold gradient-text">Sauci</span> <span className="text-xl font-bold gradient-text">Sauci</span>
<div className="flex gap-6 text-sm text-white/40"> <div className="flex gap-6 text-sm text-white/40">
<Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link> <Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link>
<Link href="/delete-account" className="hover:text-white transition-colors">Delete Account</Link>
<Link href="/terms" className="hover:text-white transition-colors">Terms</Link> <Link href="/terms" className="hover:text-white transition-colors">Terms</Link>
<Link href="/" className="hover:text-white transition-colors">Home</Link> <Link href="/" className="hover:text-white transition-colors">Home</Link>
</div> </div>
+3
View File
@@ -27,6 +27,9 @@ export default function Footer() {
<Link href="/privacy" className="text-white/60 hover:text-white transition-colors text-sm"> <Link href="/privacy" className="text-white/60 hover:text-white transition-colors text-sm">
Privacy Policy Privacy Policy
</Link> </Link>
<Link href="/delete-account" className="text-white/60 hover:text-white transition-colors text-sm">
Delete Account
</Link>
<Link href="/terms" className="text-white/60 hover:text-white transition-colors text-sm"> <Link href="/terms" className="text-white/60 hover:text-white transition-colors text-sm">
Terms & Conditions Terms & Conditions
</Link> </Link>