mirror of
https://github.com/Dokploy/website
synced 2025-06-26 18:16:01 +00:00
feat: add website
This commit is contained in:
5
app/[locale]/[...rest]/page.tsx
Normal file
5
app/[locale]/[...rest]/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
export default function CatchAll() {
|
||||
notFound();
|
||||
}
|
||||
106
app/[locale]/layout.tsx
Normal file
106
app/[locale]/layout.tsx
Normal file
@@ -0,0 +1,106 @@
|
||||
import clsx from "clsx";
|
||||
import { Inter, Lexend } from "next/font/google";
|
||||
import "@/styles/tailwind.css";
|
||||
import { NextIntlClientProvider } from "next-intl";
|
||||
import { getMessages } from "next-intl/server";
|
||||
|
||||
import { Footer } from "@/components/Footer";
|
||||
import { Header } from "@/components/Header";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
default: "Dokploy - Effortless Deployment Solutions",
|
||||
template: "%s | Simplify Your DevOps",
|
||||
},
|
||||
alternates: {
|
||||
canonical: "https://dokploy.com",
|
||||
languages: {
|
||||
en: "https://dokploy.com",
|
||||
},
|
||||
},
|
||||
description:
|
||||
"Streamline your deployment process with Dokploy. Effortlessly manage applications and databases on any VPS using Docker and Traefik for improved performance and security.",
|
||||
applicationName: "Dokploy",
|
||||
keywords: [
|
||||
"Dokploy",
|
||||
"Docker",
|
||||
"Traefik",
|
||||
"deployment",
|
||||
"VPS",
|
||||
"application management",
|
||||
"database management",
|
||||
"DevOps",
|
||||
"cloud infrastructure",
|
||||
"UI Self hosted",
|
||||
],
|
||||
referrer: "origin",
|
||||
robots: "index, follow",
|
||||
openGraph: {
|
||||
type: "website",
|
||||
url: "https://dokploy.com",
|
||||
title: "Dokploy - Effortless Deployment Solutions",
|
||||
description:
|
||||
"Simplify your DevOps with Dokploy. Deploy applications and manage databases efficiently on any VPS.",
|
||||
siteName: "Dokploy",
|
||||
images: [
|
||||
{
|
||||
url: "http://dokploy.com/og.png",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
site: "@Dokploy",
|
||||
creator: "@Dokploy",
|
||||
title: "Dokploy - Simplify Your DevOps",
|
||||
description:
|
||||
"Deploy applications and manage databases with ease using Dokploy. Learn how our platform can elevate your infrastructure management.",
|
||||
images: "https://dokploy.com/og.png",
|
||||
},
|
||||
};
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
variable: "--font-inter",
|
||||
});
|
||||
|
||||
const lexend = Lexend({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
variable: "--font-lexend",
|
||||
});
|
||||
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
params,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
params: { locale: string };
|
||||
}) {
|
||||
const { locale } = params;
|
||||
const messages = await getMessages();
|
||||
return (
|
||||
<html
|
||||
lang={locale}
|
||||
className={clsx("h-full scroll-smooth", inter.variable, lexend.variable)}
|
||||
>
|
||||
<head>
|
||||
<script
|
||||
defer
|
||||
src="https://umami.dokploy.com/script.js"
|
||||
data-website-id="7d1422e4-3776-4870-8145-7d7b2075d470"
|
||||
/>
|
||||
</head>
|
||||
{/* <GoogleAnalytics /> */}
|
||||
<body className="flex h-full flex-col">
|
||||
<NextIntlClientProvider messages={messages}>
|
||||
<Header />
|
||||
{children}
|
||||
<Footer />
|
||||
</NextIntlClientProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
5
app/[locale]/not-found.tsx
Normal file
5
app/[locale]/not-found.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
import { SlimLayout } from "@/components/SlimLayout";
|
||||
|
||||
export default function NotFound() {
|
||||
return <SlimLayout />;
|
||||
}
|
||||
20
app/[locale]/page.tsx
Normal file
20
app/[locale]/page.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import { CallToAction } from "@/components/CallToAction";
|
||||
import { Faqs } from "@/components/Faqs";
|
||||
import { Hero } from "@/components/Hero";
|
||||
import { PrimaryFeatures } from "@/components/PrimaryFeatures";
|
||||
import { SecondaryFeatures } from "@/components/SecondaryFeatures";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div>
|
||||
<main>
|
||||
<Hero />
|
||||
<PrimaryFeatures />
|
||||
<SecondaryFeatures />
|
||||
<CallToAction />
|
||||
{/* <Testimonials /> */}
|
||||
<Faqs />
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
9
app/[locale]/pricing/page.tsx
Normal file
9
app/[locale]/pricing/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Pricing } from "@/components/pricing";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="w-full">
|
||||
<Pricing />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
111
app/[locale]/privacy/page.tsx
Normal file
111
app/[locale]/privacy/page.tsx
Normal file
@@ -0,0 +1,111 @@
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="flex flex-col gap-4 w-full max-w-4xl mx-auto">
|
||||
<h1 className="text-3xl font-bold text-center mb-6">Privacy</h1>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<p>
|
||||
At Dokploy, we are committed to protecting your privacy. This Privacy
|
||||
Policy explains how we collect, use, and safeguard your personal
|
||||
information when you use our website and services.
|
||||
</p>
|
||||
<p>
|
||||
By using Dokploy, you agree to the collection and use of information
|
||||
in accordance with this Privacy Policy. If you do not agree with these
|
||||
practices, please do not use our services.
|
||||
</p>
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
1. Information We Collect
|
||||
</h2>
|
||||
<p className="">
|
||||
We only collect limited, non-personal data through Umami Analytics, a
|
||||
privacy-focused analytics tool. No personal identifying information
|
||||
(PII) is collected. The data we collect includes:
|
||||
</p>
|
||||
<ul className="list-disc list-inside mb-4">
|
||||
<li>Website usage statistics (e.g., page views, session duration)</li>
|
||||
<li>Anonymized IP addresses</li>
|
||||
<li>Referring websites</li>
|
||||
<li>Browser and device type</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
2. How We Use the Information
|
||||
</h2>
|
||||
<p className="mb-4">
|
||||
The information we collect is used solely for improving the
|
||||
functionality and user experience of our platform. Specifically, we
|
||||
use it to:
|
||||
</p>
|
||||
<ul className="list-disc list-inside mb-4">
|
||||
<li>Monitor traffic and website performance</li>
|
||||
<li>Optimize the user experience</li>
|
||||
<li>Understand how users interact with our platform</li>
|
||||
</ul>
|
||||
<p>
|
||||
Additionally, we use a single cookie to manage user sessions, which is
|
||||
necessary for the proper functioning of the platform.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="text-2xl font-semibold mb-4">3. Data Security</h2>
|
||||
<p className="">
|
||||
We take reasonable precautions to protect your data. Since we do not
|
||||
collect personal information, the risk of data misuse is minimized.
|
||||
Umami Analytics is privacy-friendly and does not rely on cookies or
|
||||
store PII.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">4. Third-Party Services</h2>
|
||||
|
||||
<p>
|
||||
We do not share your data with any third-party services other than
|
||||
Umami Analytics. We do not sell, trade, or transfer your data to
|
||||
outside parties.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">5. Cookies</h2>
|
||||
<p className="mb-4">
|
||||
Dokploy does not use cookies to track user activity. Umami Analytics
|
||||
is cookie-free and does not require any tracking cookies for its
|
||||
functionality.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
6. Changes to This Privacy Policy
|
||||
</h2>
|
||||
<p className="">
|
||||
We may update this Privacy Policy from time to time. Any changes will
|
||||
be posted on this page, and it is your responsibility to review this
|
||||
policy periodically.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">12. Contact Information</h2>
|
||||
<p className="mb-4">
|
||||
If you have any questions or concerns regarding these Privacy Policy,
|
||||
please contact us at:
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
Email:
|
||||
<a
|
||||
href="mailto:support@dokploy.com"
|
||||
className="text-blue-500 hover:underline"
|
||||
>
|
||||
support@dokploy.com
|
||||
</a>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
205
app/[locale]/terms/page.tsx
Normal file
205
app/[locale]/terms/page.tsx
Normal file
@@ -0,0 +1,205 @@
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="flex flex-col gap-4 w-full max-w-4xl mx-auto">
|
||||
<h1 className="text-3xl font-bold text-center mb-6">
|
||||
Terms and Conditions
|
||||
</h1>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<p>
|
||||
Welcome to Dokploy! These Terms and Conditions outline the rules and
|
||||
regulations for the use of Dokploy’s website and services.
|
||||
</p>
|
||||
<p>
|
||||
By accessing or using our services, you agree to be bound by the
|
||||
following terms. If you do not agree with these terms, please do not
|
||||
use our website or services.
|
||||
</p>
|
||||
<h2 className="text-2xl font-semibold mb-4">1. Definitions</h2>
|
||||
<p className="">
|
||||
Website: Refers to the website of Dokploy (
|
||||
<a
|
||||
href="https://dokploy.com"
|
||||
className="text-blue-500 hover:underline"
|
||||
>
|
||||
https://dokploy.com
|
||||
</a>
|
||||
) and its subdomains.
|
||||
</p>
|
||||
<p>
|
||||
Services: The platform and related services offered by Dokploy for
|
||||
deploying and managing applications using Docker and other related
|
||||
tools.
|
||||
</p>
|
||||
<p>User: Any individual or organization using Dokploy.</p>
|
||||
<p>
|
||||
Subscription: The paid plan for using additional features, resources,
|
||||
or server capacity.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">2. Service Description</h2>
|
||||
<p className="mb-4">
|
||||
Dokploy is a platform that allows users to deploy and manage web
|
||||
applications on their own servers using custom builders and Docker
|
||||
technology. Dokploy offers both free and paid services, including
|
||||
subscriptions for adding additional servers, features, or increased
|
||||
capacity.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
3. User Responsibilities
|
||||
</h2>
|
||||
<p className="">
|
||||
Users are responsible for maintaining the security of their accounts,
|
||||
servers, and applications deployed through Dokploy.
|
||||
</p>
|
||||
<p className="">
|
||||
Users must not use the platform for illegal activities, including but
|
||||
not limited to distributing malware, violating intellectual property
|
||||
rights, or engaging in cyberattacks.
|
||||
</p>
|
||||
<p className="">
|
||||
Users must comply with all local, state, and international laws in
|
||||
connection with their use of Dokploy.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
4. Subscription and Payment
|
||||
</h2>
|
||||
<ul className="list-disc list-inside mb-4">
|
||||
<li>
|
||||
By purchasing a subscription, users agree to the pricing and payment
|
||||
terms detailed on the website or via Paddle (our payment processor).
|
||||
</li>
|
||||
<li>
|
||||
Subscriptions renew automatically unless canceled by the user before
|
||||
the renewal date.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">5. Refund Policy</h2>
|
||||
<p className="mb-4">
|
||||
Due to the nature of our digital services, Dokploy operates on a
|
||||
no-refund policy for any paid subscriptions, except where required by
|
||||
law. We offer a self-hosted version of Dokploy with the same core
|
||||
functionalities, which users can deploy and use without any cost. We
|
||||
recommend users try the self-hosted version to evaluate the platform
|
||||
before committing to a paid subscription.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
6. Limitations of Liability
|
||||
</h2>
|
||||
<p className="">
|
||||
Dokploy is provided "as is" without any warranties, express or
|
||||
implied, including but not limited to the availability, reliability,
|
||||
or accuracy of the service.
|
||||
</p>
|
||||
<p className="">
|
||||
Users are fully responsible for any modifications made to their remote
|
||||
servers or the environment where Dokploy is deployed. Any changes to
|
||||
the server configuration, system settings, security policies, or other
|
||||
environments that deviate from the recommended use of Dokploy may
|
||||
result in compatibility issues, performance degradation, or security
|
||||
vulnerabilities. Additionally, Dokploy may not function properly on
|
||||
unsupported operating systems or environments. We do not guarantee the
|
||||
platform will operate correctly or reliably under modified server
|
||||
conditions or on unsupported systems, and we will not be held liable
|
||||
for any disruptions, malfunctions, or damages resulting from such
|
||||
changes or unsupported configurations.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
7. Service Modifications and Downtime
|
||||
</h2>
|
||||
<p className="mb-4">
|
||||
While we strive to provide uninterrupted service, there may be periods
|
||||
of downtime due to scheduled maintenance or upgrades to our
|
||||
infrastructure, such as server maintenance or system improvements. We
|
||||
will provide notice to users ahead of any planned maintenance.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="text-2xl font-semibold mb-4">
|
||||
8. Intellectual Property
|
||||
</h2>
|
||||
<p className="">
|
||||
Dokploy retains all intellectual property rights to the platform,
|
||||
including code, design, and content.
|
||||
</p>
|
||||
<p className="">
|
||||
Users are granted a limited, non-exclusive, and non-transferable
|
||||
license to use Dokploy in accordance with these terms.
|
||||
</p>
|
||||
<p className="">
|
||||
Users may not modify, reverse-engineer, or distribute any part of the
|
||||
platform without express permission.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">9. Termination</h2>
|
||||
<p className="mb-4">
|
||||
Dokploy reserves the right to suspend or terminate access to the
|
||||
platform for users who violate these terms or engage in harmful
|
||||
behavior.
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
Users may terminate their account at any time by contacting support.
|
||||
Upon termination, access to the platform will be revoked, and any
|
||||
stored data may be permanently deleted.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">10. Changes to Terms</h2>
|
||||
<p className="mb-4">
|
||||
Dokploy reserves the right to update these Terms & Conditions at any
|
||||
time. Changes will be effective immediately upon posting on the
|
||||
website. It is the user's responsibility to review these terms
|
||||
periodically.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">11. Governing Law</h2>
|
||||
<p className="mb-4">
|
||||
These Terms & Conditions are governed by applicable laws based on the
|
||||
user's location. Any disputes arising under these terms will be
|
||||
resolved in accordance with the legal jurisdiction relevant to the
|
||||
user’s location, unless otherwise required by applicable law.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="">
|
||||
<h2 className="text-2xl font-semibold mb-4">12. Contact Information</h2>
|
||||
<p className="mb-4">
|
||||
If you have any questions or concerns regarding these Terms, you can
|
||||
reach us at:
|
||||
</p>
|
||||
<p className="mb-4">
|
||||
Email:
|
||||
<a
|
||||
href="mailto:support@dokploy.com"
|
||||
className="text-blue-500 hover:underline"
|
||||
>
|
||||
support@dokploy.com
|
||||
</a>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
101
app/layout.tsx
101
app/layout.tsx
@@ -1,98 +1,11 @@
|
||||
import { Inter, Lexend } from "next/font/google";
|
||||
import clsx from "clsx";
|
||||
import "@/styles/tailwind.css";
|
||||
import type { Metadata } from "next";
|
||||
import GoogleAnalytics from "@/components/analitycs/google";
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
default: "Dokploy - Effortless Deployment Solutions",
|
||||
template: "%s | Simplify Your DevOps",
|
||||
},
|
||||
alternates: {
|
||||
canonical: "https://dokploy.com",
|
||||
languages: {
|
||||
en: "https://dokploy.com",
|
||||
},
|
||||
},
|
||||
description:
|
||||
"Streamline your deployment process with Dokploy. Effortlessly manage applications and databases on any VPS using Docker and Traefik for improved performance and security.",
|
||||
applicationName: "Dokploy",
|
||||
keywords: [
|
||||
"Dokploy",
|
||||
"Docker",
|
||||
"Traefik",
|
||||
"deployment",
|
||||
"VPS",
|
||||
"application management",
|
||||
"database management",
|
||||
"DevOps",
|
||||
"cloud infrastructure",
|
||||
"UI Self hosted",
|
||||
],
|
||||
referrer: "origin",
|
||||
robots: "index, follow",
|
||||
openGraph: {
|
||||
type: "website",
|
||||
url: "https://dokploy.com",
|
||||
title: "Dokploy - Effortless Deployment Solutions",
|
||||
description:
|
||||
"Simplify your DevOps with Dokploy. Deploy applications and manage databases efficiently on any VPS.",
|
||||
siteName: "Dokploy",
|
||||
images: [
|
||||
{
|
||||
url: "http://dokploy.com/og.png",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
site: "@Dokploy",
|
||||
creator: "@Dokploy",
|
||||
title: "Dokploy - Simplify Your DevOps",
|
||||
description:
|
||||
"Deploy applications and manage databases with ease using Dokploy. Learn how our platform can elevate your infrastructure management.",
|
||||
images: "https://dokploy.com/og.png",
|
||||
},
|
||||
type Props = {
|
||||
children: ReactNode;
|
||||
};
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
variable: "--font-inter",
|
||||
});
|
||||
|
||||
const lexend = Lexend({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
variable: "--font-lexend",
|
||||
});
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html
|
||||
lang="en"
|
||||
className={clsx("h-full scroll-smooth ", inter.variable, lexend.variable)}
|
||||
>
|
||||
<GoogleAnalytics />
|
||||
<body className="flex h-full flex-col">{children}</body>
|
||||
<a
|
||||
className="fixed bottom-0 right-0 m-4"
|
||||
href="https://www.producthunt.com/posts/dokploy?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-dokploy"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
<img
|
||||
src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=454418&theme=light"
|
||||
alt="Dokploy - Open-source alternative to Heroku, Vercel, and Netlify. | Product Hunt"
|
||||
width="250"
|
||||
height="54"
|
||||
/>
|
||||
</a>
|
||||
</html>
|
||||
);
|
||||
// Since we have a `not-found.tsx` page on the root, a layout file
|
||||
// is required, even if it's just passing children through.
|
||||
export default function RootLayout({ children }: Props) {
|
||||
return children;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,13 @@
|
||||
import Link from "next/link";
|
||||
"use client";
|
||||
|
||||
// import { Button } from "../components/Button";
|
||||
import { Logo } from "../components/shared/Logo";
|
||||
import { SlimLayout } from "../components/SlimLayout";
|
||||
import NextError from "next/error";
|
||||
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<SlimLayout>
|
||||
<div className="flex">
|
||||
<Link href="/" aria-label="Home">
|
||||
<Logo className="h-10 w-auto" />
|
||||
</Link>
|
||||
</div>
|
||||
<p className="mt-20 text-sm font-medium text-gray-700">404</p>
|
||||
<h1 className="mt-3 text-lg font-semibold text-gray-900">
|
||||
Page not found
|
||||
</h1>
|
||||
<p className="mt-3 text-sm text-gray-700">
|
||||
Sorry, we couldn’t find the page you’re looking for.
|
||||
</p>
|
||||
{/* <Button href="/" className="mt-10">
|
||||
Go back home
|
||||
</Button> */}
|
||||
</SlimLayout>
|
||||
<html lang="en">
|
||||
<body>
|
||||
<NextError statusCode={404} />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
25
app/page.tsx
25
app/page.tsx
@@ -1,25 +0,0 @@
|
||||
import { CallToAction } from "../components/CallToAction";
|
||||
import { Faqs } from "../components/Faqs";
|
||||
import { Footer } from "../components/Footer";
|
||||
import { Header } from "../components/Header";
|
||||
import { Hero } from "../components/Hero";
|
||||
import { PrimaryFeatures } from "../components/PrimaryFeatures";
|
||||
import { SecondaryFeatures } from "../components/SecondaryFeatures";
|
||||
import { Testimonials } from "../components/Testimonials";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div>
|
||||
<Header />
|
||||
<main>
|
||||
<Hero />
|
||||
<PrimaryFeatures />
|
||||
<SecondaryFeatures />
|
||||
<CallToAction />
|
||||
{/* <Testimonials /> */}
|
||||
<Faqs />
|
||||
<Footer />
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user