Skip to content

Commit 19b8e43

Browse files
authored
Integrations plus (#7)
* feat: Add placeholder component with links to Learn, and stub articles and TOC. Ported SQL article * feat: Enhance IntegrationCard with tooltip for title and update integration-docs with new matches * feat: Add translations for sidebar topics in multiple languages * feat: Add placeholder component for Azure integration documentation * fix: Correct documentation descriptions for Go and Python integrations * Refactor Placeholder component usage across documentation - Updated Placeholder component in various integration documentation files to use LinkButton instead of anchor tags for improved UX. - Revised titles and descriptions to reflect ongoing documentation migration from Microsoft Learn to aspire.dev. - Standardized link texts for better consistency across integration pages. * Refactor Placeholder component usage in integration docs - Updated the Placeholder component to use 'name' and 'link' props instead of 'title', 'description', and 'linkText'. - Modified integration documentation files to reflect the new Placeholder structure, ensuring consistency across all integration pages. - Removed lengthy descriptions in favor of concise messaging about ongoing documentation migration. * fix: Add emoji to enhance user experience in Placeholder component * fix: Remove variant attribute from LinkButton in Placeholder component * feat: Add Docker, Kubernetes, Dev Tunnels, MailPit, and LavinMQ integrations with localized titles and links * Add KurrentDB and Orleans integration documentation - Created KurrentDB integration documentation at src/frontend/src/content/docs/integrations/databases/kurrentdb.mdx - Created Orleans integration documentation at src/frontend/src/content/docs/integrations/frameworks/orleans.mdx * fix: Exclude 'Aspire.Cli' from integration packages * Update GitHub stats: Increment star counts for existing repos and add CommunityToolkit/Aspire * fix: Update PivotSelector component class and clean up Contributors documentation * fix: Update pivot title color for dark and light themes * Replace dbGate icon with SVG format and add light variant; remove old JPEG icon * fix: Remove outdated install script redirects from redirects.mjs * Refactor code structure for improved readability and maintainability
1 parent 4a707ea commit 19b8e43

69 files changed

Lines changed: 3503 additions & 334 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/frontend/astro.config.mjs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { defineConfig } from 'astro/config';
33
import { sidebarTopics } from './sidebar.topics';
44
import { pivotDirective } from './src/directives/pivot-directive.mjs'
5+
import { redirects } from './redirects.mjs';
56
import catppuccin from "@catppuccin/starlight";
67
import lunaria from '@lunariajs/starlight';
78
import mermaid from 'astro-mermaid';
@@ -43,10 +44,7 @@ export default defineConfig({
4344
prefetch: true,
4445
site: 'https://aspire.dev',
4546
trailingSlash: 'always',
46-
redirects: {
47-
'/install.sh': 'https://aka.ms/aspire/get/install.sh',
48-
'/install.ps1': 'https://aka.ms/aspire/get/install.ps1',
49-
},
47+
redirects: redirects,
5048
integrations: [
5149
mermaid({
5250
theme: 'forest',

src/frontend/redirects.mjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const redirects = {
2+
// Docs redirects
3+
'/integrations/postgres': '/integrations/databases/postgres/',
4+
'/integrations/rabbitmq/': '/integrations/messaging/rabbitmq/',
5+
};

src/frontend/scripts/update-github-stats.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import fetch from 'node-fetch';
33

44
const REPOS = [
55
'dotnet/aspire',
6-
'dotnet/aspire-samples'
6+
'dotnet/aspire-samples',
7+
'CommunityToolkit/Aspire'
78
];
89
const OUTPUT_PATH = './src/data/github-stats.json';
910

src/frontend/scripts/update-integrations.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ const API_QUERIES = [
88
'CommunityToolkit.Aspire',
99
];
1010
const EXCLUDED_PACKAGES = [
11+
'Aspire.Cli',
1112
'Aspire.Hosting',
1213
'Aspire.Hosting.Azure',
14+
'Aspire.Hosting.IncrementalMigration'
1315
];
1416
const OUTPUT_PATH = './src/data/aspire-integrations.json';
1517

src/frontend/sidebar.topics.ts

Lines changed: 275 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
4444
}, slug: 'get-started/welcome'
4545
},
4646
{
47-
label: "What's new", collapsed: true, items: [
48-
{ label: 'Aspire 9.5', slug: 'whats-new/aspire-9-5' }
49-
],
47+
label: "What's new", collapsed: true, autogenerate: { directory: 'whats-new' },
5048
translations: {
5149
da: 'Hvad er nyt',
5250
de: 'Was gibt es Neues',
@@ -538,11 +536,123 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
538536
]
539537
},
540538
{
541-
label: 'Database',
539+
label: "Artificial Intelligence (AI)",
540+
collapsed: true,
541+
translations: {
542+
da: 'Kunstig intelligens (AI)',
543+
de: 'Künstliche Intelligenz (KI)',
544+
en: 'Artificial Intelligence (AI)',
545+
es: 'Inteligencia Artificial (IA)',
546+
fr: 'Intelligence Artificielle (IA)',
547+
hi: 'कृत्रिम बुद्धिमत्ता (एआई)',
548+
id: 'Kecerdasan Buatan (AI)',
549+
it: 'Intelligenza Artificiale (IA)',
550+
ja: '人工知能 (AI)',
551+
ko: '인공지능 (AI)',
552+
pt: 'Inteligência Artificial (IA)',
553+
'pt-BR': 'Inteligência Artificial (IA)',
554+
'pt-PT': 'Inteligência Artificial (IA)',
555+
ru: 'Искусственный интеллект (ИИ)',
556+
tr: 'Yapay Zeka (YZ)',
557+
uk: 'Штучний інтелект (ШІ)',
558+
'zh-CN': '人工智能 (AI)',
559+
},
560+
items: [
561+
{ label: "GitHub Models", slug: "integrations/ai/github-models" },
562+
{ label: "Ollama", slug: "integrations/ai/ollama" },
563+
{ label: "OpenAI", slug: "integrations/ai/openai" },
564+
]
565+
},
566+
{
567+
label: 'Cloud providers',
568+
collapsed: true,
569+
translations: {
570+
da: 'Cloud-udbydere',
571+
de: 'Cloud-Anbieter',
572+
en: 'Cloud providers',
573+
es: 'Proveedores de la nube',
574+
fr: 'Fournisseurs de cloud',
575+
hi: 'क्लाउड प्रदाता',
576+
id: 'Penyedia Cloud',
577+
it: 'Provider Cloud',
578+
ja: 'クラウドプロバイダー',
579+
ko: '클라우드 제공업체',
580+
pt: 'Provedores de Nuvem',
581+
'pt-BR': 'Provedores de Nuvem',
582+
'pt-PT': 'Provedores de Nuvem',
583+
ru: 'Облачные провайдеры',
584+
tr: 'Bulut Sağlayıcıları',
585+
uk: 'Хмарні провайдери',
586+
'zh-CN': '云提供商',
587+
}, items: [
588+
{ label: 'AWS', link: 'https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/aspire-integrations.html' },
589+
{ label: 'Azure', slug: 'integrations/cloud/azure/overview' },
590+
]
591+
},
592+
{
593+
label: "Caching & state",
594+
collapsed: true,
595+
translations: {
596+
da: 'Caching og tilstand',
597+
de: 'Caching & Zustand',
598+
en: 'Caching & state',
599+
es: 'Caché y estado',
600+
fr: 'Mise en cache et état',
601+
hi: 'कैशिंग और स्थिति',
602+
id: 'Caching & State',
603+
it: 'Caching e stato',
604+
ja: 'キャッシングと状態',
605+
ko: '캐싱 및 상태',
606+
pt: 'Cache e Estado',
607+
'pt-BR': 'Cache e Estado',
608+
'pt-PT': 'Cache e Estado',
609+
ru: 'Кэширование и состояние',
610+
tr: 'Önbellekleme ve Durum',
611+
uk: 'Кешування та стан',
612+
'zh-CN': '缓存与状态',
613+
},
614+
items: [
615+
{ label: "Redis", slug: "integrations/caching/redis" },
616+
{ label: "Redis Distributed Cache", slug: "integrations/caching/redis-distributed" },
617+
{ label: "Redis Output Cache", slug: "integrations/caching/redis-output" },
618+
{ label: "Valkey", slug: "integrations/caching/valkey" },
619+
{ label: "Garnet", slug: "integrations/caching/garnet" }
620+
]
621+
},
622+
{
623+
label: "Compute & Hosting",
624+
collapsed: true,
625+
translations: {
626+
da: 'Compute og hosting',
627+
de: 'Compute & Hosting',
628+
en: 'Compute & Hosting',
629+
es: 'Computación y alojamiento',
630+
fr: 'Calcul et hébergement',
631+
hi: 'कंप्यूट और होस्टिंग',
632+
id: 'Komputasi & Hosting',
633+
it: 'Calcolo e hosting',
634+
ja: 'コンピューティングとホスティング',
635+
ko: '컴퓨팅 및 호스팅',
636+
pt: 'Computação e Hospedagem',
637+
'pt-BR': 'Computação e Hospedagem',
638+
'pt-PT': 'Computação e Alojamento',
639+
ru: 'Вычисления и хостинг',
640+
tr: 'Hesaplama ve Barındırma',
641+
uk: 'Обчислення та хостинг',
642+
'zh-CN': '计算与托管',
643+
},
644+
items: [
645+
{ label: "Docker", slug: "integrations/compute/docker" },
646+
{ label: "Kubernetes", slug: "integrations/compute/kubernetes" }
647+
]
648+
},
649+
{
650+
label: 'Data & databases',
651+
collapsed: true,
542652
translations: {
543653
da: 'Database',
544654
de: 'Datenbank',
545-
en: 'Database',
655+
en: 'Data & databases',
546656
es: 'Base de datos',
547657
fr: 'Base de données',
548658
hi: 'डेटाबेस',
@@ -558,15 +668,61 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
558668
uk: 'База даних',
559669
'zh-CN': '数据库',
560670
}, items: [
561-
{ label: 'PostgreSQL', slug: 'integrations/postgres' },
671+
{ label: "Elasticsearch", slug: "integrations/databases/elasticsearch" },
672+
{ label: "EventStore", slug: "integrations/databases/eventstore" },
673+
{ label: "KurrentDB", slug: "integrations/databases/kurrentdb" },
674+
{ label: "Meilisearch", slug: "integrations/databases/meilisearch" },
675+
{ label: "Milvus", slug: "integrations/databases/milvus" },
676+
{ label: "MongoDB", slug: "integrations/databases/mongodb" },
677+
{ label: "MySQL", slug: "integrations/databases/mysql" },
678+
{ label: "Oracle", slug: "integrations/databases/oracle" },
679+
{ label: "PostgreSQL", slug: "integrations/databases/postgres" },
680+
{ label: "Qdrant", slug: "integrations/databases/qdrant" },
681+
{ label: "RavenDB", slug: "integrations/databases/ravendb" },
682+
{ label: "SQL Server", slug: "integrations/databases/sql-server" },
683+
{ label: "SQLite", slug: "integrations/databases/sqlite" },
562684
]
563685
},
564686
{
565-
label: 'Messaging',
687+
label: 'Frameworks & runtimes',
688+
collapsed: true,
689+
translations: {
690+
da: 'Frameworks og runtime-miljøer',
691+
de: 'Frameworks & Laufzeiten',
692+
en: 'Frameworks & runtimes',
693+
es: 'Frameworks y entornos de ejecución',
694+
fr: 'Frameworks et environnements d\'exécution',
695+
hi: 'फ्रेमवर्क और रनटाइम',
696+
id: 'Kerangka & Runtime',
697+
it: 'Framework e runtime',
698+
ja: 'フレームワークとランタイム',
699+
ko: '프레임워크 및 런타임',
700+
pt: 'Frameworks e Runtimes',
701+
'pt-BR': 'Frameworks e Runtimes',
702+
'pt-PT': 'Frameworks e Runtimes',
703+
ru: 'Фреймворки и среды выполнения',
704+
tr: 'Çerçeveler ve Çalışma Zamanları',
705+
uk: 'Фреймворки та середовища виконання',
706+
'zh-CN': '框架和运行时',
707+
},
708+
items: [
709+
{ label: 'Bun apps', slug: 'integrations/frameworks/bun-apps' },
710+
{ label: 'Dapr', slug: 'integrations/frameworks/dapr' },
711+
{ label: 'Deno apps', slug: 'integrations/frameworks/deno-apps' },
712+
{ label: 'Go apps', slug: 'integrations/frameworks/go-apps' },
713+
{ label: 'Java', slug: 'integrations/frameworks/java' },
714+
{ label: 'Orleans', slug: 'integrations/frameworks/orleans' },
715+
{ label: 'Python', slug: 'integrations/frameworks/python' },
716+
{ label: 'Rust', slug: 'integrations/frameworks/rust' },
717+
]
718+
},
719+
{
720+
label: 'Messaging & eventing',
721+
collapsed: true,
566722
translations: {
567723
da: 'Meddelelser',
568724
de: 'Messaging',
569-
en: 'Messaging',
725+
en: 'Messaging & eventing',
570726
es: 'Mensajería',
571727
fr: 'Messagerie',
572728
hi: 'मैसेजिंग',
@@ -583,7 +739,117 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [
583739
'zh-CN': '消息传递',
584740
},
585741
items: [
586-
{ label: 'RabbitMQ', slug: 'integrations/rabbitmq' },
742+
{ label: 'Apache Kafka', slug: 'integrations/messaging/apache-kafka' },
743+
{ label: 'LavinMQ', slug: 'integrations/messaging/lavinmq' },
744+
{ label: 'NATS', slug: 'integrations/messaging/nats' },
745+
{ label: 'RabbitMQ', slug: 'integrations/messaging/rabbitmq' },
746+
]
747+
},
748+
{
749+
label: "Security & identity",
750+
collapsed: true,
751+
translations: {
752+
da: 'Sikkerhed og identitet',
753+
de: 'Sicherheit & Identität',
754+
en: 'Security & identity',
755+
es: 'Seguridad e identidad',
756+
fr: 'Sécurité et identité',
757+
hi: 'सुरक्षा और पहचान',
758+
id: 'Keamanan & Identitas',
759+
it: 'Sicurezza e identità',
760+
ja: 'セキュリティとアイデンティティ',
761+
ko: '보안 및 ID',
762+
pt: 'Segurança e Identidade',
763+
'pt-BR': 'Segurança e Identidade',
764+
'pt-PT': 'Segurança e Identidade',
765+
ru: 'Безопасность и идентификация',
766+
tr: 'Güvenlik ve Kimlik',
767+
uk: 'Безпека та ідентичність',
768+
'zh-CN': '安全与身份',
769+
},
770+
items: [
771+
{ label: "Keycloak", slug: "integrations/security/keycloak" }
772+
]
773+
},
774+
{
775+
label: "Observability & logging",
776+
collapsed: true,
777+
translations: {
778+
da: 'Observerbarhed og logning',
779+
de: 'Beobachtbarkeit & Protokollierung',
780+
en: 'Observability & logging',
781+
es: 'Observabilidad y registro',
782+
fr: 'Observabilité et journalisation',
783+
hi: 'पर्यवेक्षण और लॉगिंग',
784+
id: 'Observabilitas & Logging',
785+
it: 'Osservabilità e registrazione',
786+
ja: '可観測性とログ記録',
787+
ko: '관측 가능성 및 로깅',
788+
pt: 'Observabilidade e Registro',
789+
'pt-BR': 'Observabilidade e Registro',
790+
'pt-PT': 'Observabilidade e Registo',
791+
ru: 'Наблюдаемость и ведение журналов',
792+
tr: 'Gözlemlenebilirlik ve Günlük Kaydı',
793+
uk: 'Спостережуваність та ведення журналів',
794+
'zh-CN': '可观察性与日志记录',
795+
},
796+
items: [
797+
{ label: 'Seq', slug: 'integrations/observability/seq' },
798+
]
799+
},
800+
{
801+
label: "Reverse proxies & APIs",
802+
collapsed: true,
803+
translations: {
804+
da: 'Reverse proxies & API\'er',
805+
de: 'Reverse Proxies & APIs',
806+
en: 'Reverse proxies & APIs',
807+
es: 'Reverse proxies y APIs',
808+
fr: 'Reverse proxies et APIs',
809+
hi: 'रिवर्स प्रॉक्सी और एपीआई',
810+
id: 'Reverse Proxies & API',
811+
it: 'Reverse proxy e API',
812+
ja: 'リバースプロキシとAPI',
813+
ko: '리버스 프록시 및 API',
814+
pt: 'Reverse Proxies e APIs',
815+
'pt-BR': 'Reverse Proxies e APIs',
816+
'pt-PT': 'Reverse Proxies e APIs',
817+
ru: 'Обратные прокси и API',
818+
tr: 'Ters Proxyler ve API\'ler',
819+
uk: 'Зворотні проксі та API',
820+
'zh-CN': '反向代理和API',
821+
},
822+
items: [
823+
{ label: 'YARP (Yet Another Reverse Proxy)', slug: 'integrations/reverse-proxies/yarp' },
824+
]
825+
},
826+
{
827+
label: "Dev tools & extensions",
828+
collapsed: true,
829+
translations: {
830+
da: 'Dev-værktøjer og udvidelser',
831+
de: 'Dev-Tools & Erweiterungen',
832+
en: 'Dev tools & extensions',
833+
es: 'Herramientas de desarrollo y extensiones',
834+
fr: 'Outils de développement et extensions',
835+
hi: 'डेव टूल्स और एक्सटेंशन',
836+
id: 'Alat & Ekstensi Dev',
837+
it: 'Strumenti di sviluppo ed estensioni',
838+
ja: '開発ツールと拡張機能',
839+
ko: '개발 도구 및 확장 프로그램',
840+
pt: 'Ferramentas e Extensões de Desenvolvimento',
841+
'pt-BR': 'Ferramentas e Extensões de Desenvolvimento',
842+
'pt-PT': 'Ferramentas e Extensões de Desenvolvimento',
843+
ru: 'Инструменты разработчика и расширения',
844+
tr: 'Geliştirici Araçları ve Uzantılar',
845+
uk: 'Інструменти розробника та розширення',
846+
'zh-CN': '开发工具和扩展',
847+
},
848+
items: [
849+
{ label: "Data API Builder", slug: "integrations/devtools/dab" },
850+
{ label: "Dev Tunnels", slug: "integrations/devtools/dev-tunnels" },
851+
{ label: "MailPit", slug: "integrations/devtools/mailpit" },
852+
{ label: "SQL Database Projects", slug: "integrations/devtools/sql-projects" },
587853
]
588854
}
589855
],
-18.7 KB
Binary file not shown.
Lines changed: 28 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)