diff --git a/docs/faq.md b/docs/faq.md index 5bad04a..2a87439 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -47,10 +47,6 @@ Kindly review the [Disclaimer](/docs/getting-started#disclaimer) carefully once It's [JetBrains Mono](https://www.jetbrains.com/lp/mono/), the opensource typeface by JetBrains. -### Where did you dig up the landing page illustrations from? - -Illustrations are from [unDraw](https://undraw.co/). - ### Can we meet Tyko, the mascot? Nope-that can't do, he's a very busy fella! diff --git a/package-lock.json b/package-lock.json index 269df08..d3292d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,8 @@ "@docusaurus/preset-classic": "3.7.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "lucide": "^0.542.0", + "lucide-react": "^0.542.0", "prism-react-renderer": "^2.3.0", "react": "^19.0.0", "react-dom": "^19.0.0" @@ -9342,6 +9344,19 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide": { + "version": "0.542.0", + "resolved": "https://registry.npmjs.org/lucide/-/lucide-0.542.0.tgz", + "integrity": "sha512-+EtDSHjqg/nONgCfnjHCNd84OzbDjxR8ShnOf+oImlU+A8gqlptZ6pGrMCnhEDw8pVNQv3zu/L0eDvMzcc7nWA==" + }, + "node_modules/lucide-react": { + "version": "0.542.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.542.0.tgz", + "integrity": "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", diff --git a/package.json b/package.json index 32f70ad..6ef2225 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "@docusaurus/preset-classic": "3.7.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "lucide": "^0.542.0", + "lucide-react": "^0.542.0", "prism-react-renderer": "^2.3.0", "react": "^19.0.0", "react-dom": "^19.0.0" diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c222dea..b8f85cf 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,70 +1,194 @@ -import type {ReactNode} from 'react'; -import clsx from 'clsx'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; -import Heading from '@theme/Heading'; - -import styles from './index.module.css'; +import React from "react"; +import Layout from "@theme/Layout"; +import Link from "@docusaurus/Link"; import useBaseUrl from '@docusaurus/useBaseUrl'; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import { BarChart3, Lock , HeartPulse, Rocket, CircleFadingArrowUp, Ship, Cable} from "lucide-react"; -// function HomepageHeader() { -// const {siteConfig} = useDocusaurusContext(); -// return ( -//
-//
-// -// {siteConfig.title} -// -//

{siteConfig.tagline}

-//
-// -// Get Started -> -// -//
-//
-//
-// ); -// } -function HomepageHeader() { - const {siteConfig} = useDocusaurusContext(); - const imgUrl = useBaseUrl('img/hero-banner.png'); // put your image at static/img/hero.jpg +export default function Home(): JSX.Element { + const { siteConfig } = useDocusaurusContext(); - return ( -
-
- Hero background -
-
- - {siteConfig.title} - -

{siteConfig.tagline}

-
- - Get Started -> - -
-
-
- ); -} - -export default function Home(): ReactNode { - const {siteConfig} = useDocusaurusContext(); return ( - -
- -
+ {/* HERO */} +
+
+
+
+

+ TyKO +

+

+ Your turnkey Typesense Kubernetes Operator
+ for highly available self-healing Typesense clusters +

+
+ + Get Started -> + + + GitHub + +
+
+
+ TyKO Hero { (e.currentTarget as HTMLImageElement).style.display = 'none'; }} + /> +
+
+
+
+ + {/* FEATURES */} +
+
+ {features.map((f) => ( +
+
+
+
{f.icon}
+

{f.title}

+

{f.desc}

+
+
+
+ ))} +
+
+ + {/* HOW IT WORKS */} +
+
+
+
+

How it works

+

Three simple steps to set up a highly available Typesense cluster

+
+
+
+ {steps.map((s, i) => ( +
+
+
+
+
+ {i + 1} +
+

{s.title}

+
+

{s.desc}

+ + Learn more -> + +
+
+
+ ))} +
+
+
+ + {/* FOOTER-LIKE LAST SECTION (Lucide-style, fixed colors) */} +
+ +
+
+
+ + © 2024-{new Date().getFullYear()} {siteConfig.title}, GPL-3.0 Licensed + +
+
+
+
+
+
); } + +const features = [ + { + title: "Self‑healing clusters", + desc: "Automated failover, quorum recovery, and raft re-evaluation keep your Typesense clusters healthy without any manual intervention.", + icon: , + }, + { + title: "Zero‑downtime updates", + desc: "Rolling updates with safe orchestration ensure your clusters stay online while you upgrade or downgrade their Typesense version.", + icon: , + }, + { + title: "Kubernetes‑native", + desc: "Built with Go & Operator SDK, following Kubernetes best‑practices. Extend TyKO to your needs if you wish.", + icon: , + }, + { + title: "Batteries‑included", + desc: "Ingress, Services, StatefulSets, ConfigMaps, Secrets, PodMetrics and many more, all managed for you.", + icon: , + }, + { + title: "Observability", + desc: "Expose Typesense nodes health status and metrics to Prometheus for monitoring and alerting purposes.", + icon: , + }, + { + title: "Production-ready", + desc: "Opinionated defaults for secure production‑ready clusters and sane resource limits.", + icon: , + }, +] as const; + +const steps = [ + { + title: "Install the Operator", + desc: "Add the Helm repo and install to your cluster.", + href: "/docs/installation#deploy-using-helm", + }, + { + title: "Declare your Cluster", + desc: "Apply a TypesenseCluster YAML with the size and storage you need.", + href: "/docs/crds/crds-examples", + }, + { + title: "Let TyKO do the rest", + desc: "TyKO provisions, configures, monitors and heals the cluster automatically.", + href: "/docs/how-it-works/", + }, +] as const;