Skip to content

Commit f015eb7

Browse files
Add Responsive Privacy Policy Page to the Website
1 parent 9d34c19 commit f015eb7

3 files changed

Lines changed: 247 additions & 3 deletions

File tree

src/Routes/Router.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Login from "../pages/Login/Login.tsx";
88
import ContributorProfile from "../pages/ContributorProfile/ContributorProfile.tsx";
99
import Home from "../pages/Home/Home.tsx";
1010
import Activity from "../pages/Activity.tsx";
11+
import PrivacyPolicy from "../pages/Privacy/PrivacyPolicy.tsx"; // ✅ Updated import path to match your new folder structure
1112

1213
const Router = () => {
1314
return (
@@ -20,9 +21,10 @@ const Router = () => {
2021
<Route path="/contact" element={<Contact />} />
2122
<Route path="/contributors" element={<Contributors />} />
2223
<Route path="/contributor/:username" element={<ContributorProfile />} />
23-
24-
{/* ✅ new route */}
2524
<Route path="/activity" element={<Activity />} />
25+
26+
{/* Privacy Policy page route */}
27+
<Route path="/privacy" element={<PrivacyPolicy />} />
2628
</Routes>
2729
);
2830
};

src/components/Footer.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
FaArrowRight,
88
FaEnvelope,
99
FaInfoCircle,
10+
FaShieldAlt, // ✅ Added Privacy Icon
1011
} from 'react-icons/fa';
1112

1213
function Footer() {
@@ -80,6 +81,15 @@ function Footer() {
8081
<FaInfoCircle className="h-3.5 w-3.5" />
8182
About
8283
</Link>
84+
85+
{/* ✅ New Privacy Policy link integration */}
86+
<Link
87+
to="/privacy"
88+
className="inline-flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400 hover:text-indigo-600 dark:hover:text-indigo-400 transition-colors"
89+
>
90+
<FaShieldAlt className="h-3.5 w-3.5" />
91+
Privacy Policy
92+
</Link>
8393
</div>
8494
</div>
8595

@@ -181,4 +191,4 @@ function Footer() {
181191
);
182192
}
183193

184-
export default Footer;
194+
export default Footer;
Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
import React from 'react';
2+
import {
3+
FaShieldAlt, FaKey, FaDatabase, FaUserCheck, FaCheckCircle,
4+
FaLock, FaClock, FaShareAlt, FaCookieBite, FaChild
5+
} from 'react-icons/fa';
6+
7+
const PrivacyPolicy: React.FC = () => {
8+
return (
9+
<div className="w-full flex-1 flex flex-col items-stretch bg-gray-50 dark:bg-[#0f172a] min-h-full transition-colors duration-200 self-stretch">
10+
11+
{/* Centered Document Core Container */}
12+
<div className="w-full max-w-4xl mx-auto px-6 md:px-12 py-16 text-zinc-600 dark:text-zinc-400 font-sans antialiased selection:bg-blue-500/20">
13+
14+
{/* Header Area */}
15+
<div className="mb-14 pb-8 border-b border-zinc-200/80 dark:border-zinc-800/80 flex flex-col md:flex-row md:items-end md:justify-between gap-4">
16+
<div>
17+
<h1 className="text-4xl font-extrabold text-zinc-900 dark:text-zinc-50 tracking-tight mb-3">
18+
Privacy Policy
19+
</h1>
20+
<p className="text-sm text-zinc-400 dark:text-zinc-500">
21+
Comprehensive disclosure regarding data scopes, OAuth lifecycle protocols, and compliance frameworks.
22+
</p>
23+
</div>
24+
<div className="flex items-center gap-2 text-xs font-mono px-3 py-1.5 rounded-full bg-zinc-100 dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 text-zinc-500 w-fit shrink-0">
25+
<span>v1.1.0</span>
26+
<span>&bull;</span>
27+
<span>Updated May 23, 2026</span>
28+
</div>
29+
</div>
30+
31+
{/* Document Sections */}
32+
<div className="space-y-12">
33+
34+
{/* Section 1 */}
35+
<section className="group relative">
36+
<div className="flex flex-col sm:flex-row items-start gap-4">
37+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-blue-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-blue-500/50 group-hover:shadow-sm transition-all duration-200">
38+
<FaDatabase className="h-4 w-4" />
39+
</div>
40+
<div className="space-y-3 w-full">
41+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
42+
1. Information Architecture & Granular Scope
43+
</h2>
44+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
45+
Our GitHub Tracker system interfaces dynamically via encrypted requests using official GitHub REST and GraphQL v4 API structures. When authorizing our application, the platform requests specific parameters categorized into distinct transactional boundaries:
46+
</p>
47+
48+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 pt-2">
49+
<div className="p-4 rounded-xl border border-zinc-200/60 dark:border-zinc-800/80 bg-white/40 dark:bg-zinc-900/30 flex items-start gap-3 shadow-sm">
50+
<FaCheckCircle className="h-4 w-4 mt-0.5 shrink-0 text-blue-500" />
51+
<div>
52+
<h4 className="text-sm font-semibold text-zinc-800 dark:text-zinc-200">Public Personas & Identity</h4>
53+
<p className="text-xs text-zinc-500 mt-0.5 leading-relaxed">Unique GitHub account numbers, alphanumeric handles, public email registries, display names, avatar image URLs, and explicit organizational memberships.</p>
54+
</div>
55+
</div>
56+
<div className="p-4 rounded-xl border border-zinc-200/60 dark:border-zinc-800/80 bg-white/40 dark:bg-zinc-900/30 flex items-start gap-3 shadow-sm">
57+
<FaCheckCircle className="h-4 w-4 mt-0.5 shrink-0 text-blue-500" />
58+
<div>
59+
<h4 className="text-sm font-semibold text-zinc-800 dark:text-zinc-200">Repository Metadata</h4>
60+
<p className="text-xs text-zinc-500 mt-0.5 leading-relaxed">Repository naming schemes, fork/star status parameters, pull request records, timeline branches, file alteration schemas, and lines of code changed.</p>
61+
</div>
62+
</div>
63+
</div>
64+
</div>
65+
</div>
66+
</section>
67+
68+
{/* Section 2 */}
69+
<section className="group relative">
70+
<div className="flex flex-col sm:flex-row items-start gap-4">
71+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-purple-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-purple-500/50 group-hover:shadow-sm transition-all duration-200">
72+
<FaShieldAlt className="h-4 w-4" />
73+
</div>
74+
<div className="space-y-3 w-full">
75+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
76+
2. Data Integrity & Processing Framework
77+
</h2>
78+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
79+
Your tracking details are captured strictly to fulfill runtime chart mappings, contribution breakdowns, and metric visualizations within your dashboard component stack. We operate on a strict data minimization protocol:
80+
</p>
81+
<div className="p-4 rounded-xl border border-dashed border-zinc-300 dark:border-zinc-800 bg-white/30 dark:bg-zinc-900/20 text-sm italic text-zinc-500 dark:text-zinc-400">
82+
"No raw underlying source code contents, software structural logic matrices, or code blobs are ever read, indexed, parsed, or transferred beyond your current transient client session execution."
83+
</div>
84+
</div>
85+
</div>
86+
</section>
87+
88+
{/* Section 3 */}
89+
<section className="group relative">
90+
<div className="flex flex-col sm:flex-row items-start gap-4">
91+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-emerald-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-emerald-500/50 group-hover:shadow-sm transition-all duration-200">
92+
<FaKey className="h-4 w-4" />
93+
</div>
94+
<div className="space-y-3 w-full">
95+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
96+
3. Access Control, OAuth Scopes & Token Management
97+
</h2>
98+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
99+
Authentication OAuth variables are kept isolated inside client-side cross-site safe state blocks or managed through backend encryption protocols using advanced environment keys. Tokens hold restricted, read-only permissions mapping strictly to the interfaces you use.
100+
</p>
101+
<div className="p-4 rounded-xl bg-zinc-100/60 dark:bg-zinc-900/60 border border-zinc-200/50 dark:border-zinc-800 text-sm flex items-start gap-3">
102+
<FaLock className="h-4 w-4 text-rose-500 mt-0.5 shrink-0" />
103+
<p className="text-xs md:text-sm leading-6">
104+
<strong>Total Sovereignty:</strong> You can break application scope permissions instantly at any point. Simply head over to your personal GitHub settings page under <code className="px-1.5 py-0.5 bg-white dark:bg-zinc-800 text-rose-500 dark:text-rose-400 font-mono text-xs rounded border border-zinc-200 dark:border-zinc-700">Settings &rarr; Authorized OAuth Apps</code> and execute "Revoke Access".
105+
</p>
106+
</div>
107+
</div>
108+
</div>
109+
</section>
110+
111+
{/* Section 4 (NEW) */}
112+
<section className="group relative">
113+
<div className="flex flex-col sm:flex-row items-start gap-4">
114+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-indigo-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-indigo-500/50 group-hover:shadow-sm transition-all duration-200">
115+
<FaClock className="h-4 w-4" />
116+
</div>
117+
<div className="space-y-3 w-full">
118+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
119+
4. Data Retention Windows
120+
</h2>
121+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
122+
We match our data lifecycles with the minimal window needed to calculate tracker outputs. Transient API query results are kept inside system short-term cache loops to prevent hitting rate limits against GitHub's infrastructure.
123+
</p>
124+
<p className="text-sm leading-6 text-zinc-500 dark:text-zinc-400">
125+
If you manually unbind your profile or close your application tracking dashboard, all temporary caches connected with your profile identity scope are dropped automatically within 24 hours.
126+
</p>
127+
</div>
128+
</div>
129+
</section>
130+
131+
{/* Section 5 (NEW) */}
132+
<section className="group relative">
133+
<div className="flex flex-col sm:flex-row items-start gap-4">
134+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-orange-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-orange-500/50 group-hover:shadow-sm transition-all duration-200">
135+
<FaShareAlt className="h-4 w-4" />
136+
</div>
137+
<div className="space-y-3 w-full">
138+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
139+
5. Third-Party Infrastructure Sub-Processors
140+
</h2>
141+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
142+
We do not lease or exchange analytical summaries with commercial ad engines. To deliver this platform service safely, operations traverse specific cloud infrastructure subprocessors:
143+
</p>
144+
<ul className="list-disc list-inside space-y-2 text-sm text-zinc-500 dark:text-zinc-400 pl-2">
145+
<li><strong className="text-zinc-700 dark:text-zinc-300">GitHub Inc:</strong> Primary provider of identity verification mechanisms and the source repository API layer.</li>
146+
<li><strong className="text-zinc-700 dark:text-zinc-300">Cloud Web Hosting (e.g., Vercel/Render):</strong> Delivers static code distribution structures and secure frontend client runtime routing instances.</li>
147+
</ul>
148+
</div>
149+
</div>
150+
</section>
151+
152+
{/* Section 6 (NEW) */}
153+
<section className="group relative">
154+
<div className="flex flex-col sm:flex-row items-start gap-4">
155+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-yellow-600 border border-zinc-200 dark:border-zinc-800 group-hover:border-yellow-500/50 group-hover:shadow-sm transition-all duration-200">
156+
<FaCookieBite className="h-4 w-4" />
157+
</div>
158+
<div className="space-y-3 w-full">
159+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
160+
6. Cookies & Local Storage Variables
161+
</h2>
162+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
163+
Our service does not embed tracking pixels or analytical cookie scripts designed to catalog off-site interactions. We utilize standard browser <code className="px-1.5 py-0.5 bg-white dark:bg-zinc-800 text-amber-500 font-mono text-xs rounded border border-zinc-200 dark:border-zinc-700">LocalStorage</code> and state variables strictly to preserve state parameters:
164+
</p>
165+
<ul className="list-disc list-inside space-y-1.5 text-xs md:text-sm pl-2">
166+
<li>Theme state configurations (Syncing dark/light toggles securely).</li>
167+
<li>Active session routing indices (Preventing drop-offs when running complex repository lookups).</li>
168+
</ul>
169+
</div>
170+
</div>
171+
</section>
172+
173+
{/* Section 7 (NEW) */}
174+
<section className="group relative">
175+
<div className="flex flex-col sm:flex-row items-start gap-4">
176+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-pink-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-pink-500/50 group-hover:shadow-sm transition-all duration-200">
177+
<FaChild className="h-4 w-4" />
178+
</div>
179+
<div className="space-y-3 w-full">
180+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
181+
7. Age Restrictions & Children's Privacy
182+
</h2>
183+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
184+
Our telemetry tools are structured for developers, open-source engineers, and software project maintainers. We do not intentionally harvest account vectors or profile tracking traces from users under the age of 13. If any minor submits profile identifiers, we will purge those traces from short-term memory setups immediately upon notification.
185+
</p>
186+
</div>
187+
</div>
188+
</section>
189+
190+
{/* Section 8 */}
191+
<section className="group relative">
192+
<div className="flex flex-col sm:flex-row items-start gap-4">
193+
<div className="mt-1 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-white dark:bg-zinc-900/80 text-amber-500 border border-zinc-200 dark:border-zinc-800 group-hover:border-amber-500/50 group-hover:shadow-sm transition-all duration-200">
194+
<FaUserCheck className="h-4 w-4" />
195+
</div>
196+
<div className="space-y-3 w-full">
197+
<h2 className="text-xl font-bold text-zinc-900 dark:text-zinc-100 tracking-tight">
198+
8. Your Rights, GDPR & Cache Control
199+
</h2>
200+
<p className="text-sm md:text-base leading-7 text-zinc-600 dark:text-zinc-400">
201+
Under strict modern global privacy framework mandates (including GDPR and CCPA standardizations), you retain unconditional control over your data metrics. For explicit token cache flush requests, structural transparency audits, or operational logging inquiries, you are invited to launch an official issue ticket inside our repository project workspace.
202+
</p>
203+
</div>
204+
</div>
205+
</section>
206+
207+
</div>
208+
209+
{/* Support Action Card */}
210+
<div className="mt-16 p-6 rounded-2xl bg-gradient-to-r from-zinc-100 to-zinc-50 dark:from-zinc-900/50 dark:to-zinc-900/30 border border-zinc-200/80 dark:border-zinc-800/80 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-6 shadow-sm">
211+
<div className="space-y-1">
212+
<h4 className="text-base font-bold text-zinc-900 dark:text-zinc-100">
213+
Have questions regarding data encryption limits?
214+
</h4>
215+
<p className="text-xs md:text-sm text-zinc-400 dark:text-zinc-500">
216+
Our active community engineers are standing by to review repository processing flows.
217+
</p>
218+
</div>
219+
<a
220+
href="/contact"
221+
className="inline-flex items-center justify-center px-5 py-2.5 text-sm font-bold text-white bg-blue-600 hover:bg-blue-700 active:scale-95 transition-all rounded-xl shadow-sm hover:shadow-md shadow-blue-500/10 shrink-0"
222+
>
223+
Contact Support Team
224+
</a>
225+
</div>
226+
227+
</div>
228+
</div>
229+
);
230+
};
231+
232+
export default PrivacyPolicy;

0 commit comments

Comments
 (0)