From e8ef958d0415108139ef351a559c40ecd771b30c Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Tue, 13 Jan 2026 11:22:30 -0500 Subject: [PATCH 1/7] first iteration of highlighting 5 key tutorials --- public/assets/camel-ai-logo.svg | 12 ++++ public/assets/fastapi-logo.svg | 2 + public/assets/golang-logo.svg | 9 +++ public/assets/nextjs-logo.svg | 8 +++ public/assets/qdrant-logo.svg | 11 ++++ src/components/Common/InfoCard/InfoCard.jsx | 4 +- .../ExternalTutorialLinks.jsx | 63 +++++++++++++++++++ src/pages/TutorialIndex.jsx | 2 + 8 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 public/assets/camel-ai-logo.svg create mode 100644 public/assets/fastapi-logo.svg create mode 100644 public/assets/golang-logo.svg create mode 100644 public/assets/nextjs-logo.svg create mode 100644 public/assets/qdrant-logo.svg create mode 100644 src/components/IntegratedTutorials/ExternalTutorialLinks.jsx diff --git a/public/assets/camel-ai-logo.svg b/public/assets/camel-ai-logo.svg new file mode 100644 index 000000000..64f2c091b --- /dev/null +++ b/public/assets/camel-ai-logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/assets/fastapi-logo.svg b/public/assets/fastapi-logo.svg new file mode 100644 index 000000000..582432b25 --- /dev/null +++ b/public/assets/fastapi-logo.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/public/assets/golang-logo.svg b/public/assets/golang-logo.svg new file mode 100644 index 000000000..82e89eb03 --- /dev/null +++ b/public/assets/golang-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/nextjs-logo.svg b/public/assets/nextjs-logo.svg new file mode 100644 index 000000000..50ccbbd18 --- /dev/null +++ b/public/assets/nextjs-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/public/assets/qdrant-logo.svg b/public/assets/qdrant-logo.svg new file mode 100644 index 000000000..058304c86 --- /dev/null +++ b/public/assets/qdrant-logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/components/Common/InfoCard/InfoCard.jsx b/src/components/Common/InfoCard/InfoCard.jsx index 73a63c60d..685533d3b 100644 --- a/src/components/Common/InfoCard/InfoCard.jsx +++ b/src/components/Common/InfoCard/InfoCard.jsx @@ -140,9 +140,7 @@ const InfoCard = ({ icon: Icon, iconVariant, title, description, iconColor, link > - - - + {React.isValidElement(Icon) ? Icon : } {title} {description} diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx new file mode 100644 index 000000000..5d91c9111 --- /dev/null +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { Box, Grid, Typography } from '@mui/material'; +import InfoCard from '../Common/InfoCard/InfoCard'; +import { getFullPath } from '../../lib/common-helpers'; + +const TUTORIALS = [ + { + icon: Next.js logo, + title: '5 minute RAG with DeepSeek', + description: 'Build a Retrieval-Augmented Generation (RAG) pipeline using Qdrant and DeepSeek.', + href: 'https://qdrant.tech/documentation/rag-deepseek/', + }, + { + icon: FastAPI logo, + title: 'Build a Semantic Search Engine', + description: 'In 5 minutes you will build a semantic search engine for science fiction books.', + href: 'https://qdrant.tech/documentation/beginner-tutorials/search-beginners/', + }, + { + icon: Golang logo, + title: 'Build a high-performance e-commerce search engine', + description: + 'Build and deploy your own neural search service to look through millions of products for an E-commerce site.', + href: 'https://qdrant.tech/documentation/beginner-tutorials/ecommerce-search/', + }, + { + icon: Camel-AI logo, + title: 'Agentic RAG discord bot with Camel-AI', + description: 'Develop a fully functional chatbot using Qdrant, CAMEL-AI, and OpenAI.', + href: 'https://qdrant.tech/documentation/agentic-rag-camelai-discord/', + }, + { + icon: Qdrant logo, + title: 'Build a Hybrid Search Service with FastEmbed and Qdrant', + description: 'Build and deploy your own hybrid search service to look companies on startups-list.com.', + href: 'https://qdrant.tech/documentation/beginner-tutorials/hybrid-search-fastembed/', + }, +]; + +const ExternalTutorialLinks = () => { + return ( + + + {'Integrated Tutorials'} + + .MuiGrid-root': { display: 'flex' } }}> + {TUTORIALS.map((tutorial) => ( + + + + ))} + + + ); +}; + +export default ExternalTutorialLinks; diff --git a/src/pages/TutorialIndex.jsx b/src/pages/TutorialIndex.jsx index 8214f4c1f..186a97df1 100644 --- a/src/pages/TutorialIndex.jsx +++ b/src/pages/TutorialIndex.jsx @@ -3,6 +3,7 @@ import { Alert, Box, Grid, Typography } from '@mui/material'; import { useClient } from '../context/client-context'; import InfoCard from '../components/Common/InfoCard/InfoCard'; import TutorialLinks from '../components/InteractiveTutorial/TutorialLinks'; +import ExternalTutorialLinks from '../components/IntegratedTutorials/ExternalTutorialLinks'; import { Zap, FileCode } from 'lucide-react'; export const TutorialIndex = () => { @@ -79,6 +80,7 @@ export const TutorialIndex = () => { + ); From 474c37fdc17f02056fe9e769b70105c7cf31cb6c Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Tue, 13 Jan 2026 11:58:20 -0500 Subject: [PATCH 2/7] update grid layout --- src/components/IntegratedTutorials/ExternalTutorialLinks.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 5d91c9111..1c21b85d9 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -45,7 +45,7 @@ const ExternalTutorialLinks = () => { .MuiGrid-root': { display: 'flex' } }}> {TUTORIALS.map((tutorial) => ( - + Date: Mon, 26 Jan 2026 16:29:55 -0500 Subject: [PATCH 3/7] fix some links --- public/assets/python-logo.svg | 15 +++++++++++++++ .../IntegratedTutorials/ExternalTutorialLinks.jsx | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 public/assets/python-logo.svg diff --git a/public/assets/python-logo.svg b/public/assets/python-logo.svg new file mode 100644 index 000000000..25df8268f --- /dev/null +++ b/public/assets/python-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 1c21b85d9..2d5789581 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -5,7 +5,7 @@ import { getFullPath } from '../../lib/common-helpers'; const TUTORIALS = [ { - icon: Next.js logo, + icon: Python logo, title: '5 minute RAG with DeepSeek', description: 'Build a Retrieval-Augmented Generation (RAG) pipeline using Qdrant and DeepSeek.', href: 'https://qdrant.tech/documentation/rag-deepseek/', From febfe56df231144be834c7c90275d4946caef6c5 Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Fri, 30 Jan 2026 14:15:38 -0500 Subject: [PATCH 4/7] add correct link with new golang tutorial --- src/components/IntegratedTutorials/ExternalTutorialLinks.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 2d5789581..360da25ea 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -19,9 +19,8 @@ const TUTORIALS = [ { icon: Golang logo, title: 'Build a high-performance e-commerce search engine', - description: - 'Build and deploy your own neural search service to look through millions of products for an E-commerce site.', - href: 'https://qdrant.tech/documentation/beginner-tutorials/ecommerce-search/', + description: `Build and deploy your own neural search service to look through hundreds of thousands of products for an E-commerce site.`, + href: 'https://qdrant.tech/documentation/tutorials-search-engineering/ecommerce-search-golang/', }, { icon: Camel-AI logo, From 81cf7a0f0b35567fa787b8e8c3388f6d16e6fe6a Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Mon, 2 Feb 2026 12:47:39 -0500 Subject: [PATCH 5/7] reorder --- .../ExternalTutorialLinks.jsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 360da25ea..12d2f69b8 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -16,12 +16,6 @@ const TUTORIALS = [ description: 'In 5 minutes you will build a semantic search engine for science fiction books.', href: 'https://qdrant.tech/documentation/beginner-tutorials/search-beginners/', }, - { - icon: Golang logo, - title: 'Build a high-performance e-commerce search engine', - description: `Build and deploy your own neural search service to look through hundreds of thousands of products for an E-commerce site.`, - href: 'https://qdrant.tech/documentation/tutorials-search-engineering/ecommerce-search-golang/', - }, { icon: Camel-AI logo, title: 'Agentic RAG discord bot with Camel-AI', @@ -34,6 +28,18 @@ const TUTORIALS = [ description: 'Build and deploy your own hybrid search service to look companies on startups-list.com.', href: 'https://qdrant.tech/documentation/beginner-tutorials/hybrid-search-fastembed/', }, + { + icon: Golang logo, + title: 'Build a high-performance e-commerce search engine', + description: `Build and deploy your own neural search service to look through hundreds of thousands of products for an E-commerce site.`, + href: 'https://qdrant.tech/documentation/tutorials-search-engineering/ecommerce-search-golang/', + }, + { + icon: Qdrant logo, + title: 'See more tutorials on Qdrant.tech', + description: 'See more tutorials', + href: 'https://qdrant.tech/documentation/beginner-tutorials/', + }, ]; const ExternalTutorialLinks = () => { From ff777838de4e1101f2a457f79b89f0ad2acca8ad Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Tue, 3 Feb 2026 09:39:55 -0500 Subject: [PATCH 6/7] change copy from neils suggestions --- .../ExternalTutorialLinks.jsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 12d2f69b8..099e23315 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -10,28 +10,28 @@ const TUTORIALS = [ description: 'Build a Retrieval-Augmented Generation (RAG) pipeline using Qdrant and DeepSeek.', href: 'https://qdrant.tech/documentation/rag-deepseek/', }, + { + icon: Qdrant logo, + title: 'Hybrid Search with Qdrant', + description: 'Build your own keyword + semantic search service using Qdrant and FastEmbed.', + href: 'https://qdrant.tech/documentation/beginner-tutorials/hybrid-search-fastembed/', + }, { icon: FastAPI logo, - title: 'Build a Semantic Search Engine', - description: 'In 5 minutes you will build a semantic search engine for science fiction books.', + title: 'Basic Semantic Search Engine', + description: 'Build information retrieval based on semantic meaning in 5 minutes.', href: 'https://qdrant.tech/documentation/beginner-tutorials/search-beginners/', }, { icon: Camel-AI logo, - title: 'Agentic RAG discord bot with Camel-AI', + title: 'Agentic RAG discord bot', description: 'Develop a fully functional chatbot using Qdrant, CAMEL-AI, and OpenAI.', href: 'https://qdrant.tech/documentation/agentic-rag-camelai-discord/', }, - { - icon: Qdrant logo, - title: 'Build a Hybrid Search Service with FastEmbed and Qdrant', - description: 'Build and deploy your own hybrid search service to look companies on startups-list.com.', - href: 'https://qdrant.tech/documentation/beginner-tutorials/hybrid-search-fastembed/', - }, { icon: Golang logo, - title: 'Build a high-performance e-commerce search engine', - description: `Build and deploy your own neural search service to look through hundreds of thousands of products for an E-commerce site.`, + title: 'E-commerce Search Engine', + description: `Build and deploy high-performance semantic retrieval for thousands of products.`, href: 'https://qdrant.tech/documentation/tutorials-search-engineering/ecommerce-search-golang/', }, { From d4e3476fb4a985a9a1d19331b0836b8efdb1072f Mon Sep 17 00:00:00 2001 From: Nathan LeRoy Date: Tue, 3 Feb 2026 09:40:27 -0500 Subject: [PATCH 7/7] change copy again --- src/components/IntegratedTutorials/ExternalTutorialLinks.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx index 099e23315..db294e629 100644 --- a/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx +++ b/src/components/IntegratedTutorials/ExternalTutorialLinks.jsx @@ -7,7 +7,7 @@ const TUTORIALS = [ { icon: Python logo, title: '5 minute RAG with DeepSeek', - description: 'Build a Retrieval-Augmented Generation (RAG) pipeline using Qdrant and DeepSeek.', + description: 'Ground your chatbot in fact-based knowledge using Retrieval-Augmented Generation.', href: 'https://qdrant.tech/documentation/rag-deepseek/', }, {