Skip to content

Commit c0b2626

Browse files
feat(legal): add Privacy Policy and Terms of Use pages
- Add GDPR-compliant Privacy Policy page (/privacy) - Add Terms of Use page (/terms) - Update login page with links to legal pages - Update PRD with legal pages in main screens section
1 parent e0c0a67 commit c0b2626

File tree

4 files changed

+412
-1
lines changed

4 files changed

+412
-1
lines changed

Spec/PRD.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
- **Settings**(Theme/Display/Typography)
1818
- **Shortcuts (?)**
1919
- **Account**(プロフィール、統計、アカウント削除)
20+
- **Privacy Policy** (`/privacy`) - GDPR対応プライバシーポリシー
21+
- **Terms of Use** (`/terms`) - 利用規約
2022

2123
---
2224

app/login/page.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
* - Accessibility support (keyboard navigation)
88
*/
99

10+
import Link from 'next/link'
11+
1012
import { signInWithGitHub } from '@/lib/actions/auth'
1113

1214
export default function LoginPage() {
@@ -49,7 +51,20 @@ export default function LoginPage() {
4951

5052
{/* Additional Info */}
5153
<p className="mt-4 text-center text-xs text-gray-500 dark:text-gray-400">
52-
By signing in, you agree to our terms and privacy policy
54+
By signing in, you agree to our{' '}
55+
<Link
56+
href="/terms"
57+
className="text-blue-600 hover:underline dark:text-blue-400"
58+
>
59+
Terms of Use
60+
</Link>{' '}
61+
and{' '}
62+
<Link
63+
href="/privacy"
64+
className="text-blue-600 hover:underline dark:text-blue-400"
65+
>
66+
Privacy Policy
67+
</Link>
5368
</p>
5469
</div>
5570
</div>

app/privacy/page.tsx

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
/**
2+
* Privacy Policy Page
3+
*
4+
* GDPR-compliant privacy policy for GitBox
5+
* - Personal project with GitHub OAuth
6+
* - Minimal data collection
7+
*/
8+
9+
import Link from 'next/link'
10+
11+
export const metadata = {
12+
title: 'Privacy Policy - GitBox',
13+
description: 'Privacy Policy for GitBox application',
14+
}
15+
16+
export default function PrivacyPage() {
17+
return (
18+
<main className="min-h-screen bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800 py-12 px-4">
19+
<article className="mx-auto max-w-3xl rounded-xl bg-white p-8 shadow-lg dark:bg-gray-800">
20+
<header className="mb-8">
21+
<Link
22+
href="/login"
23+
className="text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"
24+
>
25+
← Back to Login
26+
</Link>
27+
<h1 className="mt-4 text-3xl font-bold text-gray-900 dark:text-white">
28+
Privacy Policy
29+
</h1>
30+
<p className="mt-2 text-sm text-gray-500 dark:text-gray-400">
31+
Last updated: January 7, 2026
32+
</p>
33+
</header>
34+
35+
<div className="prose prose-gray dark:prose-invert max-w-none">
36+
<section className="mb-8">
37+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
38+
1. Introduction
39+
</h2>
40+
<p className="text-gray-600 dark:text-gray-300 mb-4">
41+
GitBox (&quot;we&quot;, &quot;our&quot;, or &quot;us&quot;) is a
42+
personal project that helps you organize GitHub repositories in
43+
Kanban format. This Privacy Policy explains how we collect, use,
44+
and protect your information.
45+
</p>
46+
</section>
47+
48+
<section className="mb-8">
49+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
50+
2. Data We Collect
51+
</h2>
52+
<p className="text-gray-600 dark:text-gray-300 mb-4">
53+
We collect minimal data necessary to provide our service:
54+
</p>
55+
<ul className="list-disc pl-6 text-gray-600 dark:text-gray-300 space-y-2">
56+
<li>
57+
<strong>GitHub Profile Information:</strong> Username, email,
58+
and avatar URL (provided via GitHub OAuth)
59+
</li>
60+
<li>
61+
<strong>GitHub Repository Data:</strong> Public repository names
62+
and metadata you choose to add to boards
63+
</li>
64+
<li>
65+
<strong>User-Generated Content:</strong> Board names, notes, and
66+
project information you create
67+
</li>
68+
</ul>
69+
</section>
70+
71+
<section className="mb-8">
72+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
73+
3. How We Use Your Data
74+
</h2>
75+
<ul className="list-disc pl-6 text-gray-600 dark:text-gray-300 space-y-2">
76+
<li>To authenticate you via GitHub OAuth</li>
77+
<li>To display and manage your Kanban boards</li>
78+
<li>To save your preferences and settings</li>
79+
</ul>
80+
<p className="text-gray-600 dark:text-gray-300 mt-4">
81+
We do <strong>not</strong> sell your data, use it for advertising,
82+
or share it with third parties for marketing purposes.
83+
</p>
84+
</section>
85+
86+
<section className="mb-8">
87+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
88+
4. Data Storage
89+
</h2>
90+
<p className="text-gray-600 dark:text-gray-300 mb-4">
91+
Your data is stored securely using:
92+
</p>
93+
<ul className="list-disc pl-6 text-gray-600 dark:text-gray-300 space-y-2">
94+
<li>
95+
<strong>Supabase:</strong> For database storage and
96+
authentication (
97+
<a
98+
href="https://supabase.com/privacy"
99+
className="text-blue-600 dark:text-blue-400 hover:underline"
100+
target="_blank"
101+
rel="noopener noreferrer"
102+
>
103+
Supabase Privacy Policy
104+
</a>
105+
)
106+
</li>
107+
<li>
108+
<strong>Vercel:</strong> For application hosting (
109+
<a
110+
href="https://vercel.com/legal/privacy-policy"
111+
className="text-blue-600 dark:text-blue-400 hover:underline"
112+
target="_blank"
113+
rel="noopener noreferrer"
114+
>
115+
Vercel Privacy Policy
116+
</a>
117+
)
118+
</li>
119+
<li>
120+
<strong>Local Storage:</strong> For preferences like theme
121+
settings (stored in your browser)
122+
</li>
123+
</ul>
124+
</section>
125+
126+
<section className="mb-8">
127+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
128+
5. Your Rights (GDPR)
129+
</h2>
130+
<p className="text-gray-600 dark:text-gray-300 mb-4">
131+
Under GDPR, you have the following rights:
132+
</p>
133+
<ul className="list-disc pl-6 text-gray-600 dark:text-gray-300 space-y-2">
134+
<li>
135+
<strong>Right to Access:</strong> Request a copy of your data
136+
</li>
137+
<li>
138+
<strong>Right to Rectification:</strong> Correct inaccurate data
139+
</li>
140+
<li>
141+
<strong>Right to Erasure:</strong> Delete your account and all
142+
associated data via Settings → Account → Delete Account
143+
</li>
144+
<li>
145+
<strong>Right to Data Portability:</strong> Export your data
146+
</li>
147+
<li>
148+
<strong>Right to Object:</strong> Object to data processing
149+
</li>
150+
</ul>
151+
</section>
152+
153+
<section className="mb-8">
154+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
155+
6. Cookies
156+
</h2>
157+
<p className="text-gray-600 dark:text-gray-300">
158+
We use essential cookies only for authentication. We do not use
159+
tracking cookies or analytics that require consent.
160+
</p>
161+
</section>
162+
163+
<section className="mb-8">
164+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
165+
7. Contact
166+
</h2>
167+
<p className="text-gray-600 dark:text-gray-300">
168+
For privacy-related inquiries, please open an issue on our{' '}
169+
<a
170+
href="https://github.com/laststance/gitbox/issues"
171+
className="text-blue-600 dark:text-blue-400 hover:underline"
172+
target="_blank"
173+
rel="noopener noreferrer"
174+
>
175+
GitHub repository
176+
</a>
177+
.
178+
</p>
179+
</section>
180+
181+
<section>
182+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white mb-4">
183+
8. Changes to This Policy
184+
</h2>
185+
<p className="text-gray-600 dark:text-gray-300">
186+
We may update this Privacy Policy from time to time. We will
187+
notify you of any changes by posting the new Privacy Policy on
188+
this page and updating the &quot;Last updated&quot; date.
189+
</p>
190+
</section>
191+
</div>
192+
193+
<footer className="mt-8 pt-8 border-t border-gray-200 dark:border-gray-700">
194+
<Link
195+
href="/terms"
196+
className="text-blue-600 dark:text-blue-400 hover:underline"
197+
>
198+
View Terms of Use →
199+
</Link>
200+
</footer>
201+
</article>
202+
</main>
203+
)
204+
}

0 commit comments

Comments
 (0)