diff --git a/app/[lang]/(hyperjump)/products/data.ts b/app/[lang]/(hyperjump)/products/data.ts
index 02b7e67cd..70fe12f81 100644
--- a/app/[lang]/(hyperjump)/products/data.ts
+++ b/app/[lang]/(hyperjump)/products/data.ts
@@ -12,7 +12,15 @@ import {
productsCommercialData4Text,
productsCommercialData4Title,
productsCommercialData5Text,
- productsCommercialData5Title
+ productsCommercialData5Title,
+ productsCommercialData6Text,
+ productsCommercialData6Title,
+ productsCommercialData7Text,
+ productsCommercialData7Title,
+ productsCommercialData8Text,
+ productsCommercialData8Title,
+ productsCommercialData9Text,
+ productsCommercialData9Title
} from "@/locales/.generated/strings";
import type { SupportedLanguage } from "@/locales/.generated/types";
@@ -20,13 +28,41 @@ export type CommercialProduct = {
title: string;
description: string;
image: string;
- urlLearnMore: string;
+ urlLearnMore?: string;
};
+/**
+ * Returns commercial products for the products page, newest first.
+ *
+ * @param lang - Active locale for localized titles and descriptions
+ */
export function getCommercialProduct(
lang: SupportedLanguage
): CommercialProduct[] {
return [
+ {
+ title: productsCommercialData6Title(lang),
+ description: productsCommercialData6Text(lang),
+ image: "/images/products/typetable.svg",
+ urlLearnMore: "https://typetable.io"
+ },
+ {
+ title: productsCommercialData7Title(lang),
+ description: productsCommercialData7Text(lang),
+ image: "/images/products/hydra8.png",
+ urlLearnMore: "https://hydra8.hyperjump.tech"
+ },
+ {
+ title: productsCommercialData8Title(lang),
+ description: productsCommercialData8Text(lang),
+ image: "/images/products/avenu.png",
+ urlLearnMore: "https://avenu.hyperjump.tech"
+ },
+ {
+ title: productsCommercialData9Title(lang),
+ description: productsCommercialData9Text(lang),
+ image: "/images/products/frontier-news.svg"
+ },
{
title: productsCommercialData2Title(lang),
description: productsCommercialData2Text(lang),
@@ -65,6 +101,11 @@ export type OpenSourceProduct = {
repo: string;
};
+/**
+ * Returns open-source products for the products page.
+ *
+ * @param lang - Active locale for localized titles and descriptions
+ */
export function openSourceProducts(
lang: SupportedLanguage
): OpenSourceProduct[] {
diff --git a/app/[lang]/(hyperjump)/products/page.tsx b/app/[lang]/(hyperjump)/products/page.tsx
index 30598a89e..338ab5a91 100644
--- a/app/[lang]/(hyperjump)/products/page.tsx
+++ b/app/[lang]/(hyperjump)/products/page.tsx
@@ -145,17 +145,19 @@ export default async function ProductsPage({ params }: ProductsProps) {
__html: featured.description
}}
/>
-
+ {featured.urlLearnMore && (
+
+ )}
@@ -222,14 +224,16 @@ function CommercialCard({ product, lang }: CommercialCardProps) {
className="text-hyperjump-gray mb-6 flex-1 text-[15px] leading-relaxed"
dangerouslySetInnerHTML={{ __html: product.description }}
/>
-
- {productsLearnMore(lang)}
-
-
+ {product.urlLearnMore && (
+
+ {productsLearnMore(lang)}
+
+
+ )}
);
@@ -249,20 +253,24 @@ function JsonLd({ lang, products }: JsonLdProps) {
{ name: mainProductsLabel(lang), item: `${url}/${lang}/products` }
]}
/>
- {products.map(({ description, image, title, ...product }) => (
-
- ))}
+ {products.map(({ description, image, title, ...product }) => {
+ const productUrl =
+ (product as CommercialProduct)?.urlLearnMore ||
+ (product as OpenSourceProduct)?.url ||
+ `${url}/${lang}/products`;
+
+ return (
+
+ );
+ })}
>
);
}
diff --git a/locales/en/products.json b/locales/en/products.json
index cff4fca49..2be23a5b7 100644
--- a/locales/en/products.json
+++ b/locales/en/products.json
@@ -24,6 +24,22 @@
"5": {
"title": "Monitime",
"text": "Monitime is a synthetic monitoring service in collaboration with Qwords. You can monitor your website regionally and globally and be notified through various notification channels including Telegram, Slack, and WhatsApp."
+ },
+ "6": {
+ "title": "TypeTable",
+ "text": "Say what to record. Fill it in instantly. Describe what your team keeps re-typing — TypeTable proposes the table, enforces the rules, and lets everyone add records in plain language."
+ },
+ "7": {
+ "title": "Hydra8",
+ "text": "Version, test, and monitor LLM prompts without redeploying. An open-source LLM gateway for versioned prompt templates, evaluations, and monitoring — ship prompt changes from one dashboard."
+ },
+ "8": {
+ "title": "Avenu",
+ "text": "Enterprise-ready AI gateway. Create routing rules and budget for your team."
+ },
+ "9": {
+ "title": "Frontier News",
+ "text": "Daily newsletter with curated summaries of YouTube videos about AI, available in multiple languages."
}
}
},
diff --git a/locales/id/products.json b/locales/id/products.json
index a5f576151..acc82cdf5 100644
--- a/locales/id/products.json
+++ b/locales/id/products.json
@@ -24,6 +24,22 @@
"5": {
"title": "Monitime",
"text": "Monitime merupakan layanan synthetic monitoring hasil kolaborasi dengan Qwords yang memungkinkan pemantauan ketersediaan dan performa website secara regional maupun global. Sistem notifikasi mendukung berbagai kanal, termasuk Telegram, Slack, dan WhatsApp."
+ },
+ "6": {
+ "title": "TypeTable",
+ "text": "Ucapkan apa yang perlu dicatat. Isi secara instan. Jelaskan data yang biasanya diketik ulang tim Anda — TypeTable menyarankan tabel, menegakkan aturan, dan memungkinkan semua orang menambahkan catatan dengan bahasa sehari-hari."
+ },
+ "7": {
+ "title": "Hydra8",
+ "text": "Versi, uji, dan pantau prompt LLM tanpa perlu redeploy. Gateway LLM open-source untuk template prompt berversi, evaluasi, dan monitoring — kelola perubahan prompt dari satu dashboard."
+ },
+ "8": {
+ "title": "Avenu",
+ "text": "Gateway AI siap enterprise. Buat aturan routing dan anggaran untuk tim Anda."
+ },
+ "9": {
+ "title": "Frontier News",
+ "text": "Newsletter harian berisi ringkasan terkurasi dari video YouTube tentang AI, tersedia dalam berbagai bahasa."
}
}
},
diff --git a/public/images/products/avenu.png b/public/images/products/avenu.png
new file mode 100644
index 000000000..c9c23559f
Binary files /dev/null and b/public/images/products/avenu.png differ
diff --git a/public/images/products/frontier-news.svg b/public/images/products/frontier-news.svg
new file mode 100644
index 000000000..d3ec6970c
--- /dev/null
+++ b/public/images/products/frontier-news.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/public/images/products/hydra8.png b/public/images/products/hydra8.png
new file mode 100644
index 000000000..91ed6841a
Binary files /dev/null and b/public/images/products/hydra8.png differ
diff --git a/public/images/products/typetable.svg b/public/images/products/typetable.svg
new file mode 100644
index 000000000..1426aa618
--- /dev/null
+++ b/public/images/products/typetable.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file