feat: add privacy page for youdian biji
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-03-12 15:15:46 +08:00
parent 6ba0f89593
commit 6936a2c203
5 changed files with 445 additions and 3 deletions

View File

@ -11,7 +11,7 @@ export const metadata: Metadata = {
},
};
const SUPPORT_EMAIL = "admin@yydd.ai";
const SUPPORT_EMAIL = "lanmu1818@gmail.com";
const SUPPORT_SUBJECT = encodeURIComponent("由点笔迹 技术支持");
const SUPPORT_MAILTO = `mailto:${SUPPORT_EMAIL}?subject=${SUPPORT_SUBJECT}`;
@ -126,6 +126,11 @@ export default function YoudianBijIAppSupportPage() {
>
发送邮件获取支持
</a>
<div className="mt-3 text-xs text-muted-foreground">
<a className="underline-offset-4 hover:underline" href="/riji/privacy">
隐私政策 / Privacy Policy
</a>
</div>
<p className="mt-2 text-xs text-muted-foreground">
如果你是 App Store 审核人员:由点笔迹为离线 App,无需登录即可使用。
</p>

144
app/riji/privacy/page.tsx Normal file
View File

@ -0,0 +1,144 @@
import type { Metadata } from "next";
export const metadata: Metadata = {
title: { absolute: "Eding(由点笔迹) - Privacy Policy" },
description:
"Privacy Policy for Eding(由点笔迹), an offline app with no login required. We do not collect, store, or transmit personal information to external servers.",
openGraph: {
title: "Eding(由点笔迹) - Privacy Policy",
description:
"Eding(由点笔迹)是一款离线 App,无需登录即可使用。我们不收集、存储或传输你的个人信息到外部服务器。",
},
};
const SUPPORT_EMAIL = "lanmu1818@gmail.com";
const SUPPORT_SUBJECT = encodeURIComponent("由点笔迹 隐私政策咨询");
const SUPPORT_MAILTO = `mailto:${SUPPORT_EMAIL}?subject=${SUPPORT_SUBJECT}`;
export default function YoudianBijIPrivacyPolicyPage() {
return (
<main
className="min-h-dvh text-foreground"
style={{
background:
"radial-gradient(1200px 600px at 20% -10%, rgba(124, 92, 255, 0.18), transparent 55%), radial-gradient(900px 520px at 90% 10%, rgba(45, 212, 191, 0.14), transparent 50%), linear-gradient(180deg, var(--background), var(--background))",
}}
>
<div className="mx-auto max-w-[980px] px-5 py-8 pb-16">
<header className="mb-7 flex items-center justify-between gap-4">
<div className="flex min-w-0 items-center gap-3">
<div
aria-hidden="true"
className="relative h-10 w-10 shrink-0 rounded-xl bg-gradient-to-br from-violet-500 to-teal-400 shadow-2xl"
>
<div className="absolute inset-2.5 rounded-lg border border-white/20 bg-white/15" />
</div>
<div className="min-w-0">
<p className="truncate text-sm font-semibold tracking-tight">Eding(由点笔迹)</p>
<p className="text-xs text-muted-foreground">
Privacy Policy · 隐私政策
</p>
</div>
</div>
<a className="text-xs text-muted-foreground hover:underline" href="/riji">
返回技术支持
</a>
</header>
<section className="rounded-3xl border border-border bg-card/60 p-7 shadow-2xl backdrop-blur">
<h1 className="mb-2 text-balance text-3xl font-semibold tracking-tight sm:text-5xl">
Privacy Policy
</h1>
<p className="text-sm text-muted-foreground">Last Updated: 2025-03-11</p>
<p className="mt-4 text-sm leading-relaxed text-muted-foreground">
Eding(由点笔迹) is a fully offline note-taking app. We value your privacy and are
committed to protecting your information.
</p>
</section>
<div className="mt-8 space-y-3">
<PolicyItem title="1. Information Collection">
Eding(由点笔迹) is a fully offline note-taking app. We do not collect, store, or
transmit any of your personal information to external servers. All notes,
images, videos, and other content you create are stored locally on your device.
</PolicyItem>
<PolicyItem title="2. Data Storage">
<ul className="list-disc space-y-1 pl-5 text-sm leading-relaxed text-muted-foreground">
<li>All note data is saved in local device storage.</li>
<li>Image and video files are stored in the app’s sandbox directory.</li>
<li>Encrypted notes are protected using AES encryption.</li>
<li>Privacy passwords are securely stored in the system Keychain.</li>
<li>Backup files are exported to the Files app and managed by you.</li>
</ul>
</PolicyItem>
<PolicyItem title="3. Biometric Authentication">
Eding(由点笔迹) supports Face ID / Touch ID to unlock encrypted notes. Biometric data
is managed by the iOS system. The app cannot access or store your biometric
information.
</PolicyItem>
<PolicyItem title="4. Photo Library Access">
When you choose to add images or videos, the app requests access to your photo
library. We only read the media files you select and do not scan or upload your
photo library content.
</PolicyItem>
<PolicyItem title="5. Network Usage">
Eding(由点笔迹) does not require a network connection to function. The app does not
make any network requests and does not include any third-party analytics,
advertising, or tracking SDKs.
</PolicyItem>
<PolicyItem title="6. Data Deletion">
You can delete notes at any time by moving them to trash and permanently deleting
them. Uninstalling the app will permanently remove all local data. We do not
retain any copies of your data.
</PolicyItem>
<PolicyItem title="7. Children’s Privacy">
Eding(由点笔迹) does not collect any personal information from any users, including
children. The app is suitable for users of all ages.
</PolicyItem>
<PolicyItem title="8. Policy Updates">
If we update this Privacy Policy, we will notify you through app updates.
Continued use of the app indicates your agreement to the updated policy.
</PolicyItem>
<div className="rounded-2xl border border-border bg-card/50 p-5 shadow-sm">
<h2 className="mb-1 text-sm font-semibold tracking-tight">Contact</h2>
<p className="text-sm leading-relaxed text-muted-foreground">
Questions about this policy? Email us at{" "}
<a className="underline-offset-4 hover:underline" href={SUPPORT_MAILTO}>
{SUPPORT_EMAIL}
</a>
.
</p>
</div>
</div>
<footer className="mt-10 flex flex-wrap items-center justify-between gap-3 border-t border-border pt-5 text-xs text-muted-foreground">
<span>Eding(由点笔迹) · Privacy Policy</span>
<span>Public page (no login required)</span>
</footer>
</div>
</main>
);
}
function PolicyItem({
title,
children,
}: {
title: string;
children: React.ReactNode;
}) {
return (
<section className="rounded-2xl border border-border bg-card/50 p-5 shadow-sm">
<h2 className="mb-1 text-sm font-semibold tracking-tight">{title}</h2>
<div className="text-sm leading-relaxed text-muted-foreground">{children}</div>
</section>
);
}

View File

@ -2,6 +2,10 @@
This folder contains a simple, single-page public app support website for **由点笔迹** (offline app, no login required).
It now includes:
- `riji/index.html` for the support URL
- `riji/privacy/index.html` for the privacy policy URL
## Publish as a subpage (Recommended)
If you already have a GitHub Pages repo/site (with its own homepage), just copy the whole `riji/` folder into it.

View File

@ -312,7 +312,7 @@
<h3>如何联系技术支持?</h3>
<p>
请发送邮件至
<a href="mailto:admin@yydd.ai?subject=%E7%94%B1%E7%82%B9%E7%AC%94%E8%BF%B9%20%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81">admin@yydd.ai</a>
<a href="mailto:lanmu1818@gmail.com?subject=%E7%94%B1%E7%82%B9%E7%AC%94%E8%BF%B9%20%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81">lanmu1818@gmail.com</a>
(建议在标题注明“由点笔迹 技术支持”)。
</p>
</article>
@ -325,7 +325,7 @@
<article class="card span-6">
<h3>支持邮箱</h3>
<p>
<a href="mailto:admin@yydd.ai?subject=%E7%94%B1%E7%82%B9%E7%AC%94%E8%BF%B9%20%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81">admin@yydd.ai</a>
<a href="mailto:lanmu1818@gmail.com?subject=%E7%94%B1%E7%82%B9%E7%AC%94%E8%BF%B9%20%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81">lanmu1818@gmail.com</a>
</p>
</article>
<article class="card span-6">
@ -333,6 +333,9 @@
<p>设备型号 / iOS 版本 / App 版本 / 问题描述 / 截图或录屏</p>
</article>
</div>
<p class="small" style="margin: 10px 0 0">
<a href="./privacy/">隐私政策 / Privacy Policy</a>
</p>
<p class="small" style="margin: 10px 0 0">
如果你是 App Store 审核人员:由点笔迹为离线 App,无需登录即可使用。
</p>

286
riji/privacy/index.html Normal file
View File

@ -0,0 +1,286 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Eding(由点笔迹) - Privacy Policy</title>
<meta
name="description"
content="Privacy Policy for Eding(由点笔迹), an offline app with no login required. We do not collect, store, or transmit personal information to external servers."
/>
<meta property="og:title" content="Eding(由点笔迹) - Privacy Policy" />
<meta
property="og:description"
content="Eding(由点笔迹)是一款离线 App,无需登录即可使用。我们不收集、存储或传输你的个人信息到外部服务器。"
/>
<meta name="theme-color" content="#0b1220" />
<style>
:root {
--bg: #070b14;
--panel: rgba(255, 255, 255, 0.06);
--panel2: rgba(255, 255, 255, 0.08);
--text: rgba(255, 255, 255, 0.92);
--muted: rgba(255, 255, 255, 0.68);
--border: rgba(255, 255, 255, 0.12);
--shadow: rgba(0, 0, 0, 0.35);
--accent: #7c5cff;
--accent2: #2dd4bf;
--maxw: 980px;
}
@media (prefers-color-scheme: light) {
:root {
--bg: #f7f8fc;
--panel: rgba(0, 0, 0, 0.04);
--panel2: rgba(0, 0, 0, 0.06);
--text: rgba(10, 12, 18, 0.92);
--muted: rgba(10, 12, 18, 0.66);
--border: rgba(10, 12, 18, 0.12);
--shadow: rgba(0, 0, 0, 0.12);
}
}
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial,
"Apple Color Emoji", "Segoe UI Emoji";
color: var(--text);
background: radial-gradient(1200px 600px at 20% -10%, rgba(124, 92, 255, 0.34), transparent 55%),
radial-gradient(900px 520px at 90% 10%, rgba(45, 212, 191, 0.26), transparent 50%),
linear-gradient(180deg, var(--bg), var(--bg));
}
a {
color: inherit;
}
.container {
max-width: var(--maxw);
margin: 0 auto;
padding: 28px 20px 64px;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
margin-bottom: 26px;
}
.brand {
display: flex;
align-items: center;
gap: 12px;
min-width: 0;
}
.mark {
width: 38px;
height: 38px;
border-radius: 12px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow: 0 14px 30px var(--shadow);
position: relative;
flex: 0 0 auto;
}
.mark::after {
content: "";
position: absolute;
inset: 10px;
border-radius: 9px;
background: rgba(255, 255, 255, 0.18);
border: 1px solid rgba(255, 255, 255, 0.24);
}
.brand-title {
font-weight: 700;
letter-spacing: -0.02em;
margin: 0;
font-size: 15px;
line-height: 1.25;
}
.brand-subtitle {
margin: 2px 0 0;
font-size: 12px;
color: var(--muted);
}
.hero,
.card {
border-radius: 20px;
background: linear-gradient(180deg, var(--panel2), var(--panel));
border: 1px solid var(--border);
box-shadow: 0 26px 60px var(--shadow);
}
.hero {
padding: 28px;
}
.card {
padding: 18px;
margin-top: 14px;
}
h1 {
font-size: clamp(28px, 4vw, 44px);
line-height: 1.1;
letter-spacing: -0.03em;
margin: 0 0 10px;
}
h2 {
font-size: 16px;
margin: 0 0 10px;
letter-spacing: -0.02em;
}
p,
li {
color: var(--muted);
line-height: 1.65;
font-size: 14px;
}
ul {
margin: 0;
padding-left: 18px;
}
.back {
font-size: 12px;
color: var(--muted);
text-decoration: none;
}
footer {
margin-top: 40px;
padding-top: 18px;
border-top: 1px solid var(--border);
color: var(--muted);
font-size: 12px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
}
</style>
</head>
<body>
<div class="container">
<header>
<div class="brand" aria-label="Eding(由点笔迹)">
<div class="mark" aria-hidden="true"></div>
<div>
<p class="brand-title">Eding(由点笔迹)</p>
<p class="brand-subtitle">Privacy Policy · 隐私政策</p>
</div>
</div>
<a class="back" href="../">返回技术支持</a>
</header>
<main>
<section class="hero">
<h1>Privacy Policy</h1>
<p>Last Updated: 2025-03-11</p>
<p>
Eding is a fully offline note-taking app. We value your privacy and are committed to
protecting your information.
</p>
</section>
<section class="card">
<h2>1. Information Collection</h2>
<p>
Eding is a fully offline note-taking app. We do not collect, store, or transmit any of
your personal information to external servers. All notes, images, videos, and other
content you create are stored locally on your device.
</p>
</section>
<section class="card">
<h2>2. Data Storage</h2>
<ul>
<li>All note data is saved in local device storage.</li>
<li>Image and video files are stored in the app’s sandbox directory.</li>
<li>Encrypted notes are protected using AES encryption.</li>
<li>Privacy passwords are securely stored in the system Keychain.</li>
<li>Backup files are exported to the Files app and managed by you.</li>
</ul>
</section>
<section class="card">
<h2>3. Biometric Authentication</h2>
<p>
Eding supports Face ID / Touch ID to unlock encrypted notes. Biometric data is managed
by the iOS system. The app cannot access or store your biometric information.
</p>
</section>
<section class="card">
<h2>4. Photo Library Access</h2>
<p>
When you choose to add images or videos, the app requests access to your photo library.
We only read the media files you select and do not scan or upload your photo library
content.
</p>
</section>
<section class="card">
<h2>5. Network Usage</h2>
<p>
Eding does not require a network connection to function. The app does not make any
network requests and does not include any third-party analytics, advertising, or
tracking SDKs.
</p>
</section>
<section class="card">
<h2>6. Data Deletion</h2>
<p>
You can delete notes at any time by moving them to trash and permanently deleting them.
Uninstalling the app will permanently remove all local data. We do not retain any
copies of your data.
</p>
</section>
<section class="card">
<h2>7. Children’s Privacy</h2>
<p>
Eding does not collect any personal information from any users, including children. The
app is suitable for users of all ages.
</p>
</section>
<section class="card">
<h2>8. Policy Updates</h2>
<p>
If we update this Privacy Policy, we will notify you through app updates. Continued use
of the app indicates your agreement to the updated policy.
</p>
</section>
<section class="card">
<h2>Contact</h2>
<p>
Questions about this policy? Email us at
<a href="mailto:lanmu1818@gmail.com?subject=%E7%94%B1%E7%82%B9%E7%AC%94%E8%BF%B9%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96%E5%92%A8%E8%AF%A2">lanmu1818@gmail.com</a>.
</p>
</section>
</main>
<footer>
<span>Eding(由点笔迹) · Privacy Policy</span>
<span>Public page (no login required)</span>
</footer>
</div>
</body>
</html>