diff --git a/apps/web/src/app/(main)/contact/page.tsx b/apps/web/src/app/(main)/contact/page.tsx new file mode 100644 index 00000000..deadb47a --- /dev/null +++ b/apps/web/src/app/(main)/contact/page.tsx @@ -0,0 +1,181 @@ +/* eslint-disable react/no-unescaped-entities */ +import React from "react"; +import { Mail, Phone } from "lucide-react"; +import type { Metadata } from "next"; +import { + LegalPageLayout, + LegalPageHeader, + LegalSection, + LegalCard, + LegalFooter, + LegalContent, +} from "@/components/legal"; + +export const metadata: Metadata = { + title: "Contact Us - Opensox AI", + description: + "Get in touch with Opensox AI. Contact us via email at hi@opensox.ai or call +91 844-7500-346 for support and inquiries.", +}; + +export default function ContactPage() { + return ( + + + + + {/* Introduction */} +
+

+ Have questions, feedback, or need assistance? We're here to help! + Reach out to us through any of the following channels: +

+ + {/* Contact Cards */} +
+ {/* Email Card */} + +
+
+ +
+
+

Email

+ + hi@opensox.ai + +

+ For general inquiries, support, and feedback +

+
+
+
+ + {/* Phone Card */} + +
+
+ +
+
+

Phone

+ + +91 844-7500-346 + +

+ Available during business hours (IST) +

+
+
+
+
+
+ + {/* Response Time */} + +

+ Response Time +

+

+ We typically respond to all inquiries within 24-48 hours during + business days. For urgent matters, please mention "URGENT" in your + email subject line. +

+
+ + {/* What to Include */} + +
    +
  • Your registered email address (if applicable)
  • +
  • A clear description of your inquiry or issue
  • +
  • + Any relevant screenshots or error messages (if reporting a bug) +
  • +
  • Your subscription type (Free or Pro) if related to features
  • +
+
+ + {/* Other Ways to Connect */} + +
+
+

Community Discord

+

+ Join our Discord community for real-time discussions, help from + other users, and updates about Opensox AI. +

+ + Join Discord Community → + +
+ +
+

Social Media

+

+ Follow us on social media for updates, tips, and community + highlights: +

+ +
+ +
+

GitHub Issues

+

+ Found a bug or have a feature request? Open an issue on our + GitHub repository: +

+ + Report an Issue → + +
+
+
+
+ + +
+ ); +} diff --git a/apps/web/src/app/(main)/legal/cancellation-and-refund/page.tsx b/apps/web/src/app/(main)/legal/cancellation-and-refund/page.tsx new file mode 100644 index 00000000..53dd597a --- /dev/null +++ b/apps/web/src/app/(main)/legal/cancellation-and-refund/page.tsx @@ -0,0 +1,181 @@ +/* eslint-disable react/no-unescaped-entities */ +import React from "react"; +import type { Metadata } from "next"; +import { + LegalPageLayout, + LegalPageHeader, + LegalSection, + LegalCard, + ContactInfo, + LegalFooter, + LegalContent, +} from "@/components/legal"; + +const EFFECTIVE_DATE = "January 8, 2024"; + +export const metadata: Metadata = { + title: "Cancellation and Refund Policy - Opensox AI", + description: + "Learn about Opensox AI's cancellation and refund policy. Currently, we do not support refunds. Contact us with questions before purchasing.", +}; + +export default function CancellationAndRefundPage() { + return ( + + + + + {/* Introduction */} + +

+ At Opensox AI, we are committed to providing valuable services to + our users. However, due to the nature of our digital products and + services, we maintain the following refund policy: +

+
+ + {/* Refund Policy */} + + +

+ Currently, we do not support refunds for our services. +

+

+ This policy applies to all subscriptions and one-time purchases + made on Opensox AI, including but not limited to: +

+
    +
  • Pro subscription plans (monthly or annual)
  • +
  • Any premium features or services
  • +
  • One-time payments for specific features
  • +
+
+
+ + {/* Why No Refunds */} + +

+ As a digital service provider offering immediate access to premium + features, personalized mentoring, and exclusive content, we are + unable to offer refunds once services have been accessed or + utilized. +

+

+ We believe in transparency and want to ensure you make an informed + decision before purchasing. +

+
+ + {/* Before You Purchase */} + +

+ We strongly encourage you to take advantage of the following + resources before making a purchase: +

+
+ +

+ 📚 Review Our Features +

+

+ Carefully review all features included in your subscription plan + on our pricing page +

+
+ +

💬 Ask Questions

+

+ Reach out to us with any questions or concerns before purchasing +

+
+ +

+ 🆓 Try Free Features +

+

+ Use our free tier to understand how the platform works before + upgrading +

+
+ +

+ 👥 Join Our Community +

+

+ Connect with existing users on Discord to hear about their + experiences +

+
+
+
+ + {/* Cancellation Policy */} + +

+ While we don't offer refunds, you can cancel your subscription at + any time: +

+
    +
  • + How to Cancel: You can cancel your subscription + through your account settings or by contacting us +
  • +
  • + When It Takes Effect: Cancellation will take + effect at the end of your current billing period +
  • +
  • + Access: You'll continue to have access to Pro + features until the end of your paid period +
  • +
  • + No Partial Refunds: You will not be charged again + after cancellation, but no refund will be provided for the + remaining days of your current billing cycle +
  • +
+
+ + {/* Exceptional Circumstances */} + +

+ In rare cases, we may consider refunds for exceptional circumstances + such as: +

+
    +
  • + Technical issues on our end that prevent you from accessing the + service +
  • +
  • Duplicate charges or billing errors
  • +
  • Unauthorized charges on your account
  • +
+

+ If you believe you qualify for an exceptional refund, please contact + us immediately with detailed information about your situation. +

+
+ + {/* Contact Section */} + + + + + {/* Policy Updates */} + +

+ We reserve the right to modify this Cancellation and Refund Policy + at any time. Any changes will be posted on this page with an updated + effective date. Your continued use of our services after any changes + constitutes acceptance of the new policy. +

+
+
+ + +
+ ); +} diff --git a/apps/web/src/app/(main)/legal/privacy/page.tsx b/apps/web/src/app/(main)/legal/privacy/page.tsx index b42e0df5..3a1b2bab 100644 --- a/apps/web/src/app/(main)/legal/privacy/page.tsx +++ b/apps/web/src/app/(main)/legal/privacy/page.tsx @@ -30,11 +30,11 @@ export default function PrivacyPolicyPage() { href="/legal/terms" className="text-blue-400 hover:text-blue-300 transition-colors" > - Terms of Service + Terms and Conditions , which incorporates this Privacy Policy. Any terms we use in this Policy without defining them have the definitions given to them in - the Terms of Service. + the Terms and Conditions.

@@ -684,7 +684,7 @@ export default function PrivacyPolicyPage() { Personal Data of Children

- As noted in the Terms of Service, we do not knowingly collect or + As noted in the Terms and Conditions, we do not knowingly collect or solicit Personal Data about children under 13 years of age; if you are a child under the age of 13, please do not attempt to register for or otherwise use the Services or send us any Personal Data. If @@ -785,7 +785,7 @@ export default function PrivacyPolicyPage() {

We process some Personal Data as a matter of "contractual necessity", meaning that we need to process the data to - perform under our Terms of Service with you, which enables us + perform under our Terms and Conditions with you, which enables us to provide you with the Services. When we process data due to contractual necessity, failure to provide such Personal Data will result in your inability to use some or all portions of diff --git a/apps/web/src/app/(main)/legal/shipping-and-exchange/page.tsx b/apps/web/src/app/(main)/legal/shipping-and-exchange/page.tsx new file mode 100644 index 00000000..3d9e0850 --- /dev/null +++ b/apps/web/src/app/(main)/legal/shipping-and-exchange/page.tsx @@ -0,0 +1,208 @@ +/* eslint-disable react/no-unescaped-entities */ +import React from "react"; +import Link from "next/link"; +import type { Metadata } from "next"; +import { + LegalPageLayout, + LegalPageHeader, + LegalSection, + LegalCard, + ContactInfo, + LegalFooter, + LegalContent, +} from "@/components/legal"; + +const EFFECTIVE_DATE = "January 8, 2024"; + +export const metadata: Metadata = { + title: "Shipping and Exchange Policy - Opensox AI", + description: + "Opensox AI provides digital software services. As we provide software, we do not support shipping or exchange.", +}; + +export default function ShippingAndExchangePage() { + return ( + + + + + {/* Introduction */} + +

+ Opensox AI is a digital software platform that provides online + services for discovering and contributing to open-source projects. + As a software service, we do not ship physical products. +

+ + + {/* No Physical Products */} + + +

+ As we provide software services, we do not support shipping or + exchange. +

+

+ All our products and services are delivered digitally and + instantly upon purchase: +

+ +
+
+ + {/* What This Means */} + +
+ +

+ ✅ Immediate Access +

+

+ Start using Pro features right after payment confirmation +

+
+ +

+ 🌐 Accessible Anywhere +

+

+ Access your account from any device with internet connection +

+
+ +

+ 🚫 No Waiting Period +

+

+ No shipping delays or delivery issues to worry about +

+
+ +

+ 🔄 No Exchanges Needed +

+

+ Digital services are delivered as described with instant access +

+
+
+
+ + {/* Service Issues */} + +

+ While we don't ship physical products, if you experience any + technical issues with accessing our services: +

+ +
+ + {/* Subscription Management */} + +

+ Instead of exchanges, you can manage your subscription through your + account: +

+ +

+ For more information about cancellations, please see our{" "} + + Cancellation and Refund Policy + + . +

+
+ + {/* Contact Section */} + + + + + {/* Related Policies */} + +
+ +

+ Cancellation & Refund Policy +

+

+ Learn about our cancellation process and refund policy +

+ + +

+ Terms and Conditions +

+

+ Review our complete terms of service +

+ +
+
+ + {/* Policy Updates */} + +

+ We reserve the right to modify this Shipping and Exchange Policy at + any time. Any changes will be posted on this page with an updated + effective date. Your continued use of our services after any changes + constitutes acceptance of the new policy. +

+
+ + + + + ); +} diff --git a/apps/web/src/app/(main)/legal/terms/page.tsx b/apps/web/src/app/(main)/legal/terms/page.tsx index 50f5fab9..68d47e0b 100644 --- a/apps/web/src/app/(main)/legal/terms/page.tsx +++ b/apps/web/src/app/(main)/legal/terms/page.tsx @@ -7,7 +7,7 @@ export default function TermsOfServicePage() {
{/* Header */}

- Terms of Service + Terms and Conditions

Effective date: January 8, 2024 @@ -19,7 +19,7 @@ export default function TermsOfServicePage() {

Welcome to Opensox.ai ("Opensox," "we," "us," or "our"). Please - read these Terms of Service ("Terms") carefully as they govern + read these Terms and Conditions ("Terms") carefully as they govern your use of our platform, website, and services. By accessing or using Opensox.ai, you agree to be bound by these Terms. If you do not agree to these Terms, please do not use our Services. @@ -500,8 +500,8 @@ export default function TermsOfServicePage() { 18. Contact Information

- For questions, concerns, or feedback regarding these Terms of - Service, please contact us: + For questions, concerns, or feedback regarding these Terms and + Conditions, please contact us:

@@ -531,7 +531,7 @@ export default function TermsOfServicePage() {

By using Opensox.ai, you acknowledge that you have read, - understood, and agree to be bound by these Terms of Service. + understood, and agree to be bound by these Terms and Conditions.

diff --git a/apps/web/src/components/landing-sections/footer.tsx b/apps/web/src/components/landing-sections/footer.tsx index bcaccc3e..50f60471 100644 --- a/apps/web/src/components/landing-sections/footer.tsx +++ b/apps/web/src/components/landing-sections/footer.tsx @@ -86,6 +86,12 @@ const Footer = () => { Legal
+ + Contact + { href="/legal/terms" className="text-[#b1b1b1] hover:text-white transition-colors text-xs" > - Terms of Service + Terms and Conditions + + + Cancellation and Refunds + + + Shipping and Exchange
diff --git a/apps/web/src/components/legal/ContactInfo.tsx b/apps/web/src/components/legal/ContactInfo.tsx new file mode 100644 index 00000000..6362b02f --- /dev/null +++ b/apps/web/src/components/legal/ContactInfo.tsx @@ -0,0 +1,59 @@ +import React from "react"; +import Link from "next/link"; + +interface ContactInfoProps { + showTitle?: boolean; + titleText?: string; + description?: string; + showContactPage?: boolean; +} + +export function ContactInfo({ + showTitle = true, + titleText = "Have Questions?", + description = "If you have any questions, concerns, or need clarification, please don't hesitate to reach out:", + showContactPage = true, +}: ContactInfoProps) { + return ( + <> + {showTitle && ( +

+ {titleText} +

+ )} + {description &&

{description}

} +
+

+ Email:{" "} + + hi@opensox.ai + +

+

+ Phone:{" "} + + +91 844-7500-346 + +

+ {showContactPage && ( +

+ Contact Page:{" "} + + opensox.ai/contact + +

+ )} +
+ + ); +} + diff --git a/apps/web/src/components/legal/LegalCard.tsx b/apps/web/src/components/legal/LegalCard.tsx new file mode 100644 index 00000000..046d094a --- /dev/null +++ b/apps/web/src/components/legal/LegalCard.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { cn } from "@/lib/utils"; + +interface LegalCardProps { + children: React.ReactNode; + className?: string; + variant?: "default" | "highlighted"; +} + +export function LegalCard({ + children, + className = "", + variant = "default", +}: LegalCardProps) { + return ( +
+ {children} +
+ ); +} + diff --git a/apps/web/src/components/legal/LegalContent.tsx b/apps/web/src/components/legal/LegalContent.tsx new file mode 100644 index 00000000..5c307d00 --- /dev/null +++ b/apps/web/src/components/legal/LegalContent.tsx @@ -0,0 +1,12 @@ +import React from "react"; + +interface LegalContentProps { + children: React.ReactNode; +} + +export function LegalContent({ children }: LegalContentProps) { + return ( +
{children}
+ ); +} + diff --git a/apps/web/src/components/legal/LegalFooter.tsx b/apps/web/src/components/legal/LegalFooter.tsx new file mode 100644 index 00000000..6424a721 --- /dev/null +++ b/apps/web/src/components/legal/LegalFooter.tsx @@ -0,0 +1,12 @@ +import React from "react"; + +export function LegalFooter() { + return ( +
+

+ © {new Date().getFullYear()} Opensox AI. All rights reserved. +

+
+ ); +} + diff --git a/apps/web/src/components/legal/LegalPageHeader.tsx b/apps/web/src/components/legal/LegalPageHeader.tsx new file mode 100644 index 00000000..3db3c322 --- /dev/null +++ b/apps/web/src/components/legal/LegalPageHeader.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +interface LegalPageHeaderProps { + title: string; + effectiveDate?: string; + subtitle?: string; +} + +export function LegalPageHeader({ + title, + effectiveDate, + subtitle, +}: LegalPageHeaderProps) { + return ( + <> +

{title}

+ {(effectiveDate || subtitle) && ( +

+ {effectiveDate + ? `Effective date: ${effectiveDate}` + : subtitle} +

+ )} + + ); +} + diff --git a/apps/web/src/components/legal/LegalPageLayout.tsx b/apps/web/src/components/legal/LegalPageLayout.tsx new file mode 100644 index 00000000..a7336c5b --- /dev/null +++ b/apps/web/src/components/legal/LegalPageLayout.tsx @@ -0,0 +1,14 @@ +import React from "react"; + +interface LegalPageLayoutProps { + children: React.ReactNode; +} + +export function LegalPageLayout({ children }: LegalPageLayoutProps) { + return ( +
+
{children}
+
+ ); +} + diff --git a/apps/web/src/components/legal/LegalSection.tsx b/apps/web/src/components/legal/LegalSection.tsx new file mode 100644 index 00000000..e869dc37 --- /dev/null +++ b/apps/web/src/components/legal/LegalSection.tsx @@ -0,0 +1,22 @@ +import React from "react"; + +interface LegalSectionProps { + title?: string; + children: React.ReactNode; + className?: string; +} + +export function LegalSection({ + title, + children, + className = "", +}: LegalSectionProps) { + return ( +
+ {title && ( +

{title}

+ )} + {children} +
+ ); +} diff --git a/apps/web/src/components/legal/index.ts b/apps/web/src/components/legal/index.ts new file mode 100644 index 00000000..a8b15b9d --- /dev/null +++ b/apps/web/src/components/legal/index.ts @@ -0,0 +1,8 @@ +export { LegalPageLayout } from "./LegalPageLayout"; +export { LegalPageHeader } from "./LegalPageHeader"; +export { LegalSection } from "./LegalSection"; +export { LegalCard } from "./LegalCard"; +export { ContactInfo } from "./ContactInfo"; +export { LegalFooter } from "./LegalFooter"; +export { LegalContent } from "./LegalContent"; +