Skip to content

Commit

Permalink
Add remaining static links and favicons
Browse files Browse the repository at this point in the history
  • Loading branch information
kaje94 committed Nov 18, 2023
1 parent ac35e24 commit 6dac001
Show file tree
Hide file tree
Showing 24 changed files with 518 additions and 43 deletions.
12 changes: 10 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
> API changes
- [] always sort images to make the preview image as the first image (specially in the detail screen)
- [] bot detection in auth0 enabled(recaptcha)
- [] check max length of all strings in schema file

> Web app todo list
- [] check max length of all strings in schema file
- [] add clearable prop to form elements
- [] add/remove clearable prop to form elements
- [] try out the date picker package for year select
- [] fix Entire page /search deopted into client-side rendering.
- [] show safety tips similar to ikman under item details description
Expand All @@ -31,6 +31,11 @@
- [] laziliy load filters
- [] lazily load landing searchbar?
- [] use links instead of router push ?
- [] optimistic updates for profile details?
- [] update manifest https://web.dev/articles/add-manifest
- [] minify manifest after changes!
- [] fix chrome third party cookies blocked warning


> Web app performance improvements
Expand All @@ -44,6 +49,9 @@

> SEO Todo list
- [] https://webmasters.stackexchange.com/questions/104987/how-to-change-which-image-from-website-is-shown-in-google-search-result
- [] add sitemap
- [] add open grapgh and twitter tags
- [] search box in google


> Update next 14
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"dev": "next dev --turbo",
"build": "next build",
"start": "next start --turbo",
"start": "next start",
"lint": "next lint",
"lint:fix": "next lint --fix",
"format-rest": "npx prettier --ignore-path .gitignore --write \"**/*.{css,md,json,yml}\" \"!package-lock.json\" --print-width 150 --tab-width 4",
Expand Down
Binary file added public/favicons/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicons/favicon-180x180.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicons/favicon-192x192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicons/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicons/favicon-512x512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicons/favicon.ico
Binary file not shown.
12 changes: 12 additions & 0 deletions public/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "Targabay - Your Ultimate Vehicle Marketplace",
"short_name": "Targabay",
"description": "Discover, buy, and sell vehicles on Targabay - Your ultimate destination for automotive transactions.",
"icons": [
{ "src": "/favicons/favicon-192x192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/favicons/favicon-512x512.png", "sizes": "512x512", "type": "image/png" }
],
"theme_color": "#000033",
"background_color": "#18182F",
"display": "minimal-ui"
}
5 changes: 4 additions & 1 deletion src/app/[locale]/(links)/contact-us/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { displayFont } from "@/app/fonts";
import { LinkWithLocale } from "@/components/Common";
import { ContactUsForm } from "@/components/ContactUsForm";
import { env } from "@/env.mjs";
import { RecaptchaProvider } from "@/providers/RecaptchaProvider";

const ContactUsItem = ({ title, desc, subTitle }: { desc: string | ReactNode; subTitle?: string; title: string }) => {
return (
Expand Down Expand Up @@ -32,7 +33,9 @@ export default async function Page() {
</a>
. We value your inquiries and are committed to providing swift assistance.
</p>
<ContactUsForm session={session} />
<RecaptchaProvider>
<ContactUsForm session={session} />
</RecaptchaProvider>
</div>
<div className="flex flex-col justify-center gap-2">
<ContactUsItem
Expand Down
88 changes: 88 additions & 0 deletions src/app/[locale]/(links)/cookie-policy/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import { clsx } from "clsx";
import { ReactNode } from "react";
import { displayFont } from "@/app/fonts";
import { env } from "@/env.mjs";

const CookiePolicySection = ({ children, title }: { children: ReactNode; title: string }) => (
<div>
<h3 className="mb-3 mt-4 text-2xl font-bold">{title}</h3>
<div className="flex flex-col gap-2">{children}</div>
</div>
);

const CookiePolicyItem = ({ content, title }: { content?: string | ReactNode; title?: string }) => (
<div>
<h4 className="text-base font-semibold">{title}</h4>
<p>{content}</p>
</div>
);

export default function Page() {
return (
<div className="container relative mx-auto mb-5 px-4 py-8 md:px-4 lg:px-10">
<h3 className={clsx(displayFont.className, "mb-4 text-3xl lg:text-center lg:text-4xl xl:mb-6")}>Cookie Policy</h3>
<p className="opacity-70">Last Updated: 18/11/2023</p>
<p>
This Cookie Policy explains how we use cookies and similar technologies on our online vehicle marketplace. By using Targabay, you
agree to the use of cookies as described in this policy.
</p>
<div className="mx-auto flex flex-col gap-3">
<CookiePolicySection title="1. What Are Cookies?">
<p>
Cookies are small text files that are stored on your device (computer, tablet, smartphone) when you visit a website. They are
created by the website&apos;s server and can only be read by that server. Cookies serve various purposes, such as remembering
your preferences, analyzing how you interact with the site, and delivering personalized content.
</p>
</CookiePolicySection>
<CookiePolicySection title="2. How We Use Cookies">
<CookiePolicyItem
content="These cookies are necessary for the proper functioning of Targabay. They enable you to navigate our website and use its features, such as accessing secure areas or making transactions. Without these cookies, Targabay may not function properly."
title="2.1 Essential Cookies"
/>
<CookiePolicyItem
content="We use performance cookies to collect information about how visitors use our website. This includes data such as the pages you visit most frequently, the type of device you use, and any error messages you encounter. This information helps us analyze and improve the performance of the website, enhance the user experience, and understand which pages are most and least popular."
title="2.2 Performance Cookies"
/>
<CookiePolicyItem
content="Functionality cookies allow the website to remember choices you make (such as your username, language, or region) and provide enhanced, more personalized features. For example, they may remember your login details or the region you are in to provide you with locally relevant content."
title="2.3 Functionality Cookies"
/>
<CookiePolicyItem
content="These cookies are used to deliver advertisements that are more relevant to you and your interests. They may be placed on our website by advertising partners and help limit the number of times you see an advertisement. Additionally, they assist in measuring the effectiveness of our advertising campaigns."
title="2.4 Advertising/Targeting Cookies"
/>
</CookiePolicySection>
<CookiePolicySection title="3. Third-Party Cookies">
<p>
Targabay may use third-party services, such as analytics tools or advertising networks, which may set their own cookies. These
cookies are governed by the privacy policies of the respective third parties. We do not have control over these cookies, and
they are used to provide services such as analytics and targeted advertising.
</p>
</CookiePolicySection>
<CookiePolicySection title="4. Managing Cookies">
<p>
Most web browsers allow you to control cookies through their settings preferences. You can typically find these settings in
the &quot;Options&quot; or &quot;Preferences&quot; menu of your browser. However, please note that limiting the ability of
websites to set cookies may affect your overall user experience, and certain features of Targabay may not function correctly.
</p>
</CookiePolicySection>
<CookiePolicySection title="5. Changes to This Cookie Policy">
<p>
We may update this Cookie Policy from time to time to reflect changes in our practices or for other operational, legal, or
regulatory reasons. Any changes will be posted on this page, and the &quot;Last Updated&quot; date will be revised
accordingly. We encourage you to check this page periodically for the latest information on our use of cookies.
</p>
</CookiePolicySection>
<CookiePolicySection title="6. Contact Us">
<p>
If you have any questions, concerns, or requests regarding this Cookie Policy, please contact us at{" "}
<a className="link-hover link font-semibold" href={`mailto:${env.NEXT_PUBLIC_SUPPORT_EMAIL}`}>
{env.NEXT_PUBLIC_SUPPORT_EMAIL}
</a>
.
</p>
</CookiePolicySection>
</div>
</div>
);
}
2 changes: 1 addition & 1 deletion src/app/[locale]/(links)/faqs/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { LinkWithLocale } from "@/components/Common";
import { env } from "@/env.mjs";

const QuestionSection = ({ children, title }: { children: ReactNode; title: string }) => (
<div className="">
<div>
<h3 className="mb-3 mt-4 text-2xl font-bold">{title}</h3>
<div className="flex flex-col gap-2">{children}</div>
</div>
Expand Down
148 changes: 148 additions & 0 deletions src/app/[locale]/(links)/privacy-policy/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
import { clsx } from "clsx";
import { ReactNode } from "react";
import { displayFont } from "@/app/fonts";
import { LinkWithLocale } from "@/components/Common";
import { env } from "@/env.mjs";

const PrivacyPolicySection = ({ children, title }: { children: ReactNode; title: string }) => (
<div>
<h3 className="mb-3 mt-4 text-2xl font-bold">{title}</h3>
<div className="flex flex-col gap-2">{children}</div>
</div>
);

const PrivacyPolicyItem = ({ content, items = [], title }: { content?: string | ReactNode; items?: (string | ReactNode)[]; title?: string }) => (
<div>
<h4 className="text-base font-semibold">{title}</h4>
<p>{content}</p>
{items.length > 0 && (
<ul className="list-disc pl-5 ">
{items.map((item, index) => (
<li key={`li-item-${index}`}>{item}</li>
))}
</ul>
)}
</div>
);

export default function Page() {
return (
<div className="container relative mx-auto mb-5 px-4 py-8 md:px-4 lg:px-10">
<h3 className={clsx(displayFont.className, "mb-4 text-3xl lg:text-center lg:text-4xl xl:mb-6")}>Privacy Policy</h3>
<p className="opacity-70">Last Updated: 18/11/2023</p>
<p>
This Privacy Policy explains how we collect, use, disclose, and safeguard your personal information when you use our online vehicle
marketplace. By accessing or using Targabay, you agree to the terms of this Privacy Policy.
</p>
<div className="mx-auto flex flex-col gap-3">
<PrivacyPolicySection title="1. Information We Collect">
<PrivacyPolicyItem
content="We collect personal information that you voluntarily provide when you create an account, update your profile, or engage in transactions on Targabay. This information may include, but is not limited to:"
items={[
"Name: To personalize your Targabay experience.",
"Email address: For communication and account verification.",
"Contact information: Facilitate transactions and provide customer support.",
"Profile details: Enhance your user experience on the platform.",
]}
title="1.1 Personal Information:"
/>
<PrivacyPolicyItem
content="We may automatically collect certain information when you use Targabay, including:"
items={[
"Device information: Understand the devices accessing Targabay for optimization.",
"Usage data: Analyze how users interact with the platform for improvements.",
<span key="cookie-policy-desc">
Cookies and similar technologies: Enhance user experience and track preferences. For more details on how we use
cookies, please refer to our{" "}
<LinkWithLocale className="link-hover link font-semibold text-neutral" href="/cookie-policy">
Cookie policy
</LinkWithLocale>
.
</span>,
]}
title="1.2 Automatically Collected Information:"
/>
</PrivacyPolicySection>
<PrivacyPolicySection title="2. How We Use Your Information">
<p>We use the collected information for the following purposes:</p>
<PrivacyPolicyItem
items={[
"Facilitating transactions between buyers and sellers by sharing necessary information.",
"Enhancing and customizing user experience based on preferences.",
"Developing new features and services to improve the platform.",
]}
title="2.1 Providing and Improving Services:"
/>
<PrivacyPolicyItem
items={[
"Sending transaction notifications to keep users informed about their activities on Targabay.",
"Providing customer support and responding to inquiries.",
"Sending promotional and marketing communications (with user consent) to keep users informed about new features and promotions.",
]}
title="2.2 Communication:"
/>
<PrivacyPolicyItem
items={[
"Complying with legal obligations and responding to law enforcement requests.",
"Enforcing our Terms of Use to ensure a secure and trustworthy platform.",
]}
title="2.3 Legal Compliance:"
/>
</PrivacyPolicySection>
<PrivacyPolicySection title="3. Information Sharing">
<PrivacyPolicyItem
content="We may share your information with:"
items={[
"Other users as necessary for transactions to occur.",
"Third-party service providers assisting in platform operations, such as payment processors.",
"Legal authorities to comply with legal requirements.",
]}
/>
</PrivacyPolicySection>
<PrivacyPolicySection title="4. Data Security">
<p>
We take reasonable measures to protect your personal information from unauthorized access, disclosure, alteration, and
destruction. These measures include encryption, secure server configurations, and routine security assessments.
</p>
</PrivacyPolicySection>
<PrivacyPolicySection title="5. Your Choices">
<PrivacyPolicyItem
content="You can update or delete your account information at any time through the account settings on Targabay."
title="5.1 Account Information:"
/>
<PrivacyPolicyItem
content="You can opt out of receiving promotional emails by following the unsubscribe instructions included in the emails."
title="5.2 Marketing Communications:"
/>
</PrivacyPolicySection>
<PrivacyPolicySection title="6. Third-Party Links and Services">
<p>
Targabay may contain links to third-party websites or services. We are not responsible for their privacy practices, and we
encourage you to review their privacy policies before interacting with them.
</p>
</PrivacyPolicySection>
<PrivacyPolicySection title="7. Children's Privacy">
<p>
Targabay is not directed to individuals under the age of 13. If you are aware that a child under 13 has provided us with
personal information, please contact us, and we will take steps to delete such information.{" "}
</p>
</PrivacyPolicySection>
<PrivacyPolicySection title="8. Changes to this Privacy Policy">
<p>
We may update this Privacy Policy periodically. We will notify users of any material changes by posting the updated policy on
Targabay and updating the &quot;Last Updated&quot; date.
</p>
</PrivacyPolicySection>
<PrivacyPolicySection title="9. Contact Us">
<p>
If you have any questions, concerns, or requests regarding this Privacy Policy, please contact us at{" "}
<a className="link-hover link font-semibold" href={`mailto:${env.NEXT_PUBLIC_SUPPORT_EMAIL}`}>
{env.NEXT_PUBLIC_SUPPORT_EMAIL}
</a>
.
</p>
</PrivacyPolicySection>
</div>
</div>
);
}
8 changes: 3 additions & 5 deletions src/app/[locale]/(links)/safety-tips/page.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { clsx } from "clsx";
import { ReactNode } from "react";
import { displayFont } from "@/app/fonts";
import { LinkWithLocale } from "@/components/Common";
import { env } from "@/env.mjs";

const SafetyTipSection = ({ children, title }: { children: ReactNode; title: string }) => (
<div className="">
<div>
<h3 className="mb-3 mt-4 text-2xl font-bold">{title}</h3>
<div className="flex flex-col gap-2">{children}</div>
</div>
Expand All @@ -27,8 +25,8 @@ export default function Page() {
<div className="container relative mx-auto mb-5 px-4 py-8 md:px-4 lg:px-10">
<h3 className={clsx(displayFont.className, "mb-4 text-3xl lg:text-center lg:text-4xl xl:mb-6")}>Safety Tips</h3>
<p>
Welcome to Targabay, where your safety is our priority. We are committed to providing a secure online marketplace. Please follow these
safety tips for a worry-free experience.
At Targabay, your safety is our priority. We are committed to providing a secure online marketplace. Please follow these safety tips
for a worry-free experience.
</p>
<div className="mx-auto flex flex-col gap-3">
<SafetyTipSection title="General Safety Tips:">
Expand Down
Loading

0 comments on commit 6dac001

Please sign in to comment.