Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redesigned the terms page #767

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 103 additions & 1 deletion packages/app/src/app/privacy/page.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,115 @@
import { Heading } from "@/components/ui/heading";

function PrivacyTextElement({
title,
description,
}: {
title: string;
description: { type: string; content: string | string[] }[];
}) {
return (
<div className="container mt-6">
<p className="text-2xl text-muted-foreground mb-2">{title}</p>
{description.map((descriptionData, index) => (
<>
{descriptionData.type == "paragraph" && (
<p key={index}>{descriptionData.content}</p>
)}
{descriptionData.type == "list" &&
typeof descriptionData.content == "object" && (
<div className="container">
<ul key={index} className="list-disc text-sm mt-1">
{descriptionData.content.map((content, index) => (
<li key={index}>{content}</li>
))}
</ul>
</div>
)}
</>
))}
</div>
);
}

function PrivacyPage({}) {
return (
<div className="pt-12 pb-12">
<Heading
title="Privacy Policies"
description="Privacy policies for Code Racer"
/>
{/* ADD PRIVACY POLICY */}

<PrivacyTextElement
title="Privacy Policy"
description={[
{
type: "paragraph",
content:
"At Code Racer, we are committed to protecting your privacy. This Privacy Policy outlines how we collect, use, and safeguard your personal information when you interact with our services.",
},
]}
/>
<PrivacyTextElement
title="Information We Collect"
description={[
{
type: "paragraph",
content:
"We may collect personal information from you in a variety of ways, including, but not limited to:",
},
{
type: "list",
content: [
"Account Information",
"Usage Data",
"Cookies and Tracking Technologies",
],
},
]}
/>
<PrivacyTextElement
title="How We Use Your Information"
description={[
{
type: "paragraph",
content: "We use the information we collect to:",
},
{
type: "list",
content: [
"Provide and Maintain Services",
"Improve Our Services",
"Communication",
],
},
]}
/>
<PrivacyTextElement
title="Sharing Your Information"
description={[
{
type: "paragraph",
content:
"We do not sell, trade, or otherwise transfer your personal information to outside parties except as described in this policy. We may share your information with trusted third parties who assist us in operating our website, conducting our business, or servicing you, provided those parties agree to keep this information confidential.",
},
]}
/>
<PrivacyTextElement
title="Data Security"
description={[
{
type: "paragraph",
content:
"We implement a variety of security measures to maintain the safety of your personal information. However, no method of transmission over the internet or method of electronic storage is 100% secure, and we cannot guarantee its absolute security.",
},
]}
/>
{
// TODO:
// - Add contact information
// - Improve UI, ( visuals are not my strongsuite :-) )
// - Replace the text with the sites actuall privacy policy, i just used a generic one :I
}
</div>
);
}
Expand Down
190 changes: 137 additions & 53 deletions packages/app/src/app/terms/page.tsx
Original file line number Diff line number Diff line change
@@ -1,61 +1,145 @@
import { Heading } from "@/components/ui/heading";

function TermsTextElement({
title,
description,
}: {
title: string;
description: { type: string; content: string | string[] }[];
}) {
return (
<div className="container mt-6">
<p className="text-2xl text-muted-foreground mb-2">{title}</p>
{description.map((descriptionData, index) => (
<>
{descriptionData.type == "paragraph" && (
<p key={index}>{descriptionData.content}</p>
)}
{descriptionData.type == "list" &&
typeof descriptionData.content == "object" && (
<div className="container">
<ul key={index}>
{descriptionData.content.map((content, index) => (
<li className="mt-1" key={index}>
{content}
</li>
))}
</ul>
</div>
)}
</>
))}
</div>
);
}

const page = () => {
return (
<>
<Heading title="Terms" />
<div>
<h1>CodeRacer - Terms of Service</h1>
<p>Welcome to CodeRacer! These Terms of Service Terms constitute a legal agreement between you and CodeRacer. Please read these Terms carefully before using our platform, which is accessible at <a href="https://code-racer-eight.vercel.app/">https://code-racer-eight.vercel.app/</a>. By using CodeRacer, you agree to be bound by these Terms.</p>

<h2>1. User Accounts</h2>
<p>
<strong>1.1. Account Creation:</strong> To use certain features of CodeRacer, you must create an account by logging in with your GitHub account.
</p>
<p>
<strong>1.2. Account Responsibility:</strong> You are responsible for maintaining the confidentiality of your account information and for all activities that occur under your account.
</p>

<h2>2. Use of the Platform</h2>
<p>
<strong>2.1. Open Source:</strong> CodeRacer is an open-source platform, and its source code is available on GitHub for review and contributions.
</p>
<p>
<strong>2.2. Coding Practice:</strong> CodeRacer is designed for coding practice in various languages and supports multiplayer modes.
</p>
<p>
<strong>2.3. Privacy:</strong> We do not collect or store user data beyond what is necessary for GitHub authentication and platform functionality. For more details, please refer to our Privacy Policy.
</p>

<h2>3. Intellectual Property</h2>
<p>
<strong>3.1. Ownership:</strong> Users retain ownership of the code they create and submit on CodeRacer. CodeRacer retains ownership of the platform and its underlying software.
</p>

<h2>4. CodeRacer Community</h2>
<p>
<strong>4.1. Community Standards:</strong> Users are expected to maintain a respectful and inclusive environment while using the platform.
</p>

<h2>5. Termination</h2>
<p>
<strong>5.1. Termination Rights:</strong> CodeRacer reserves the right to terminate or suspend your access to the platform at any time for violations of these Terms or for any other reason.
</p>

<h2>6. Limitation of Liability</h2>
<p>
<strong>6.1. Disclaimer:</strong> CodeRacer is provided as is, and we make no warranties or representations about the accuracy or reliability of the platform. Your use of CodeRacer is at your own risk.
</p>

<h2>7. Changes to Terms</h2>
<p>
<strong>7.1. Updates:</strong> CodeRacer may update these Terms from time to time. We will notify you of any changes, and your continued use of the platform after such changes will constitute your acceptance of the revised Terms.
</p>

<h2>8. Contact Us</h2>
<p>
<strong>8.1. Questions:</strong> If you have any questions or concerns about these Terms, please contact us at <a href="mailto:[email protected]">[email protected]</a>.
</p>
</div>
<TermsTextElement
title="CodeRacer - Terms of Service"
description={[
{
type: "paragraph",
content:
"Welcome to CodeRacer! These Terms of Service Terms constitute a legal agreement between you and CodeRacer. By using CodeRacer, you agree to be bound by these Terms.",
},
]}
/>
<TermsTextElement
title="User Accounts"
description={[
{
type: "list",
content: [
"1.1 Account Creation: To use certain features of CodeRacer, you must create an account by logging in with your GitHub account.",
"1.2 Account Responsibility: You are responsible for maintaining the confidentiality of your account information and for all activities that occur under your account.",
],
},
]}
/>
<TermsTextElement
title="Use of the Platform"
description={[
{
type: "list",
content: [
"2.1 Open Source: CodeRacer is an open-source platform, and its source code is available on GitHub for review and contributions.",
"2.2 Coding Practice: CodeRacer is designed for coding practice in various languages and supports multiplayer modes.",
"2.3 Privacy: We do not collect or store user data beyond what is necessary for GitHub authentication and platform functionality. For more details, please refer to our Privacy Policy.",
],
},
]}
/>
<TermsTextElement
title="Intellectual Property"
description={[
{
type: "list",
content: [
"3.1 Ownership: Users retain ownership of the code they create and submit on CodeRacer. CodeRacer retains ownership of the platform and its underlying software.",
],
},
]}
/>
<TermsTextElement
title="CodeRacer Community"
description={[
{
type: "list",
content: [
"4.1 Community Standards: Users are expected to maintain a respectful and inclusive environment while using the platform.",
],
},
]}
/>
<TermsTextElement
title="Termination"
description={[
{
type: "list",
content: [
"5.1 Termination Rights: CodeRacer reserves the right to terminate or suspend your access to the platform at any time for violations of these Terms or for any other reason.",
],
},
]}
/>
<TermsTextElement
title="Limitation of Liability"
description={[
{
type: "list",
content: [
"6.1 Disclaimer: CodeRacer is provided as is, and we make no warranties or representations about the accuracy or reliability of the platform. Your use of CodeRacer is at your own risk.",
],
},
]}
/>
<TermsTextElement
title="Changes to Terms"
description={[
{
type: "list",
content: [
"7.1 Updates: CodeRacer may update these Terms from time to time. We will notify you of any changes, and your continued use of the platform after such changes will constitute your acceptance of the revised Terms.",
],
},
]}
/>
<TermsTextElement
title="Contact Us"
description={[
{
type: "list",
content: [
"8.1 Questions: If you have any questions or concerns about these Terms, please contact us using the information below.",
],
},
]}
/>
<br />
<br />
</>
);
};
Expand Down