From 57b332d93e927f06ba1205a2e8830a12dcb4d0f3 Mon Sep 17 00:00:00 2001 From: Kyriakos Akriotis Date: Sun, 31 Aug 2025 09:09:56 +0000 Subject: [PATCH 1/5] draft index #19 --- src/pages/index.tsx | 252 +++++++++++++++++++++++++++++++++----------- 1 file changed, 190 insertions(+), 62 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c222dea..b2fb8db 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,70 +1,198 @@ -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 React from "react"; +import Layout from "@theme/Layout"; +import Link from "@docusaurus/Link"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import styles from './index.module.css'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -// 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 -> - + + {/* HERO */} +
+
+
+
+

+ TyKO +

+

+ Your turnkey Typesense Kubernetes Operator +

+
+ + Get Started -> + + + GitHub + +
+
+
+ {/* Optional hero art: replace with your own static image in /static/img */} + 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 a resilient Typesense cluster

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

{s.title}

+
+

{s.desc}

+ + Learn more + +
+
+
+ ))} +
+
+
+ + {/* FOOTER-LIKE LAST SECTION (Lucide-style, fixed colors) */} +
+ +
+ {/* Bottom bar */} +
+
+ + © 2024-{new Date().getFullYear()} {siteConfig.title}, GPL-3.0 Licensed + +
+
+ {/* + Built with Docusaurus. + */} +
+
+
+
+ -export default function Home(): ReactNode { - const {siteConfig} = useDocusaurusContext(); - return ( - - -
- -
); } + +const features = [ + { + title: "Self‑healing clusters", + desc: "Automated failover, quorum recovery, and node reconciliation keep your Typesense clusters healthy without manual babysitting.", + icon: "🩹", + }, + { + title: "Zero‑downtime upgrades", + desc: "Rolling updates with safe orchestration ensure your search stays online while you iterate.", + icon: "⚙️", + }, + { + title: "Kubernetes‑native", + desc: "CRDs and controllers built with Go & Operator SDK, following Kubernetes best‑practices.", + icon: "☸️", + }, + { + title: "Batteries‑included", + desc: "Ingress, Services, StatefulSets, config, secrets and metrics — managed for you.", + icon: "🔋", + }, + { + title: "Observability", + desc: "Expose Prometheus metrics for proactive alerts and dashboards.", + icon: "📈", + }, + { + title: "Secure by default", + desc: "Opinionated defaults for 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/get-started", + }, + { + title: "Declare your Cluster", + desc: "Apply a TypesenseCluster YAML with the size and storage you need.", + href: "/docs/concepts/crd", + }, + { + title: "Let TyKO do the rest", + desc: "TyKO provisions, configures, monitors and heals the cluster automatically.", + href: "/docs/concepts/ha", + }, +] as const; From d21be67d22ccb591320bafa803def07670d0ce75 Mon Sep 17 00:00:00 2001 From: Kyriakos Akriotis Date: Sun, 31 Aug 2025 09:48:54 +0000 Subject: [PATCH 2/5] fixed text, links and lucene icons #19 --- package-lock.json | 15 +++++++++++++ package.json | 2 ++ src/pages/index.tsx | 54 ++++++++++++++++++++------------------------- 3 files changed, 41 insertions(+), 30 deletions(-) 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 b2fb8db..2d104b5 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,14 +2,15 @@ import React from "react"; import Layout from "@theme/Layout"; import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import { Shield, Settings, LifeBuoy, Battery, BarChart3, Lock , HeartPulse, Rocket, CircleFadingArrowUp, Ship} from "lucide-react"; export default function Home(): JSX.Element { const { siteConfig } = useDocusaurusContext(); return ( + title={`Typesense Kubernetes Operator Docs`} + description="TyKO, your turnkey Typesense Kubernetes Operator"> {/* HERO */}
- + Get Started -> - + GitHub
- {/* Optional hero art: replace with your own static image in /static/img */} TyKO Hero

How it works

-

Three simple steps to a resilient Typesense cluster

+

Three simple steps to set up a highly available Typesense cluster

@@ -103,7 +103,7 @@ export default function Home(): JSX.Element {

{s.desc}

- Learn more + Learn more -> @@ -125,23 +125,17 @@ export default function Home(): JSX.Element { >
- {/* Bottom bar */}
© 2024-{new Date().getFullYear()} {siteConfig.title}, GPL-3.0 Licensed
-
- {/* - Built with Docusaurus. - */} -
+
-
); } @@ -149,33 +143,33 @@ export default function Home(): JSX.Element { const features = [ { title: "Self‑healing clusters", - desc: "Automated failover, quorum recovery, and node reconciliation keep your Typesense clusters healthy without manual babysitting.", - icon: "🩹", + desc: "Automated failover, quorum recovery, and raft re-evaluation keep your Typesense clusters healthy without any manual intervention.", + icon: , }, { - title: "Zero‑downtime upgrades", - desc: "Rolling updates with safe orchestration ensure your search stays online while you iterate.", - 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: "CRDs and controllers built with Go & Operator SDK, following Kubernetes best‑practices.", - icon: "☸️", + 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, config, secrets and metrics — managed for you.", - icon: "🔋", + desc: "Ingress, Services, StatefulSets, ConfigMaps, Secrets, PodMetrics and many more — all managed for you.", + icon: , }, { title: "Observability", - desc: "Expose Prometheus metrics for proactive alerts and dashboards.", - icon: "📈", + desc: "Expose Typesense nodes health status and metrics to Prometheus for monitoring and alerting purposes.", + icon: , }, { title: "Secure by default", - desc: "Opinionated defaults for production‑ready clusters and sane resource limits.", - icon: "🔐", + desc: "Opinionated defaults for secure production‑ready clusters and sane resource limits.", + icon: , }, ] as const; @@ -183,16 +177,16 @@ const steps = [ { title: "Install the Operator", desc: "Add the Helm repo and install to your cluster.", - href: "/docs/get-started", + href: "/docs/installation#deploy-using-helm", }, { title: "Declare your Cluster", desc: "Apply a TypesenseCluster YAML with the size and storage you need.", - href: "/docs/concepts/crd", + href: "/docs/crds/crds-examples", }, { title: "Let TyKO do the rest", desc: "TyKO provisions, configures, monitors and heals the cluster automatically.", - href: "/docs/concepts/ha", + href: "/docs/how-it-works/", }, ] as const; From 2dbc24433da340e418d0c319c7ff8b4f07762143 Mon Sep 17 00:00:00 2001 From: Kyriakos Akriotis Date: Sun, 31 Aug 2025 09:57:25 +0000 Subject: [PATCH 3/5] text and button sizes #19 --- docs/faq.md | 4 ---- src/pages/index.tsx | 7 ++++--- 2 files changed, 4 insertions(+), 7 deletions(-) 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/src/pages/index.tsx b/src/pages/index.tsx index 2d104b5..c9598aa 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -25,8 +25,9 @@ export default function Home(): JSX.Element {

TyKO

-

- Your turnkey Typesense Kubernetes Operator +

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

@@ -158,7 +159,7 @@ const features = [ }, { title: "Batteries‑included", - desc: "Ingress, Services, StatefulSets, ConfigMaps, Secrets, PodMetrics and many more — all managed for you.", + desc: "Ingress, Services, StatefulSets, ConfigMaps, Secrets, PodMetrics and many more, all managed for you.", icon: , }, { From e203e5449c9c5e1a72d9f354f86f85bebaec5e84 Mon Sep 17 00:00:00 2001 From: Kyriakos Akriotis Date: Sun, 31 Aug 2025 10:22:18 +0000 Subject: [PATCH 4/5] add hero banner #19 --- src/pages/index.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c9598aa..886168d 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,6 +1,7 @@ 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 { Shield, Settings, LifeBuoy, Battery, BarChart3, Lock , HeartPulse, Rocket, CircleFadingArrowUp, Ship} from "lucide-react"; @@ -14,7 +15,7 @@ export default function Home(): JSX.Element { {/* HERO */}
-
+
TyKO Hero { (e.currentTarget as HTMLImageElement).style.display = 'none'; }} />
From 956b8319796b7ce701f94af9caeb37db90baa0f9 Mon Sep 17 00:00:00 2001 From: Kyriakos Akriotis Date: Sun, 31 Aug 2025 10:42:30 +0000 Subject: [PATCH 5/5] fixed prod icon #19 --- src/pages/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 886168d..b8f85cf 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,7 +3,7 @@ import Layout from "@theme/Layout"; import Link from "@docusaurus/Link"; import useBaseUrl from '@docusaurus/useBaseUrl'; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import { Shield, Settings, LifeBuoy, Battery, BarChart3, Lock , HeartPulse, Rocket, CircleFadingArrowUp, Ship} from "lucide-react"; +import { BarChart3, Lock , HeartPulse, Rocket, CircleFadingArrowUp, Ship, Cable} from "lucide-react"; export default function Home(): JSX.Element { const { siteConfig } = useDocusaurusContext(); @@ -169,9 +169,9 @@ const features = [ icon: , }, { - title: "Secure by default", + title: "Production-ready", desc: "Opinionated defaults for secure production‑ready clusters and sane resource limits.", - icon: , + icon: , }, ] as const;