From 373a1f7bee5b85947f83e75bf645a8ab633a1ea0 Mon Sep 17 00:00:00 2001 From: Nitish Date: Sun, 31 May 2026 03:27:36 +0530 Subject: [PATCH] feat: add Terms of Service and Privacy Policy pages (#75) --- src/components/layout/PublicFooter.jsx | 6 ++--- src/pages/Privacy.jsx | 37 ++++++++++++++++++++++++++ src/pages/Terms.jsx | 37 ++++++++++++++++++++++++++ src/routes/AppRoutes.jsx | 6 +++++ 4 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 src/pages/Privacy.jsx create mode 100644 src/pages/Terms.jsx diff --git a/src/components/layout/PublicFooter.jsx b/src/components/layout/PublicFooter.jsx index c549b66..f7c04b0 100644 --- a/src/components/layout/PublicFooter.jsx +++ b/src/components/layout/PublicFooter.jsx @@ -8,10 +8,10 @@ export const PublicFooter = () => { window.scrollTo({ top: 0, behavior: "smooth" })} className="hover:text-slate-900 dark:hover:text-slate-100 transition-colors font-semibold">Home Features How it Works - About Us + About Us GitHub Repository - Terms of Service - Privacy Policy + Terms of Service + Privacy Policy

© 2026 RankerHub. Built with React + Vite + TailwindCSS.

Premium developer ranking dashboard. All features simulate active states.

diff --git a/src/pages/Privacy.jsx b/src/pages/Privacy.jsx new file mode 100644 index 0000000..3e43a23 --- /dev/null +++ b/src/pages/Privacy.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { ChevronLeft, Lock } from "lucide-react"; + +export const Privacy = () => { + return ( +
+
+ + Back to Home + +
+
+
+ +
+

Privacy Policy

+
+
+

Last Updated: May 31, 2026

+

1. Data Collection

+

We collect information you provide directly to us, such as when you create an account, update your profile, or communicate with us. We also collect public developer metrics from connected platforms like GitHub.

+

2. How We Use Your Data

+

We use the information we collect to calculate global and language-specific rankings, provide personalized coding challenges (CodingVerse), and maintain your developer streaks (CodingOwl).

+

3. Data Security

+

We take reasonable measures to help protect information about you from loss, theft, misuse, and unauthorized access. We do not store sensitive source code or private repository data.

+

+ This is a placeholder document for the RankerHub project. +

+
+
+
+
+ ); +}; + +export default Privacy; \ No newline at end of file diff --git a/src/pages/Terms.jsx b/src/pages/Terms.jsx new file mode 100644 index 0000000..be9d0ad --- /dev/null +++ b/src/pages/Terms.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { ChevronLeft, ShieldCheck } from "lucide-react"; + +export const Terms = () => { + return ( +
+
+ + Back to Home + +
+
+
+ +
+

Terms of Service

+
+
+

Last Updated: May 31, 2026

+

1. Acceptance of Terms

+

By accessing and using RankerHub, you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use our platform.

+

2. User Accounts and GitHub Integration

+

RankerHub uses public GitHub data to calculate developer rankings. By connecting your account, you authorize us to read your public repositories, commit history, and pull requests. We will never ask for write access to your code.

+

3. Platform Rules

+

Users must not manipulate the ranking system, create fake accounts to boost metrics, or use the platform for malicious purposes. Violation of these rules may result in permanent account suspension.

+

+ This is a placeholder document for the RankerHub project. +

+
+
+
+
+ ); +}; + +export default Terms; \ No newline at end of file diff --git a/src/routes/AppRoutes.jsx b/src/routes/AppRoutes.jsx index b592615..d7dc3a3 100644 --- a/src/routes/AppRoutes.jsx +++ b/src/routes/AppRoutes.jsx @@ -16,6 +16,8 @@ import Onboarding from "../pages/Onboarding"; import NotFound from "../pages/NotFound"; import Achievements from "../pages/Achievements"; import About from "../pages/About"; +import Terms from "../pages/Terms"; +import Privacy from "../pages/Privacy"; import ComingSoonCard from "../components/ui/ComingSoonCard"; import GlobalModals from "../components/ui/GlobalModals"; import { Settings as SettingsIcon } from "lucide-react"; @@ -121,6 +123,10 @@ export const AppRoutes = () => { {/* Standalone About Us page */} } /> + {/* Standalone Legal pages */} + } /> + } /> + {/* Public Login page (standalone) - guarded from logged in users */} } />