diff --git a/docs/explanation/agent-internals.mdx b/docs/explanation/agent-internals.mdx index 6c6bd3a..2f38405 100644 --- a/docs/explanation/agent-internals.mdx +++ b/docs/explanation/agent-internals.mdx @@ -2,6 +2,7 @@ type: explanation title: Agent Internals sidebar_position: 5 +description: Deep dive into Fishjam agent architecture, lifecycle, and how to integrate without using a server SDK. --- import Tabs from "@theme/Tabs"; diff --git a/docs/explanation/data-channels.mdx b/docs/explanation/data-channels.mdx index 31d5124..8f85e50 100644 --- a/docs/explanation/data-channels.mdx +++ b/docs/explanation/data-channels.mdx @@ -1,6 +1,7 @@ --- type: explanation sidebar_position: 7 +description: Send and receive arbitrary binary data between peers using Fishjam data channels. --- import Tabs from "@theme/Tabs"; diff --git a/docs/explanation/public-livestreams.mdx b/docs/explanation/public-livestreams.mdx index c556be0..e8f98db 100644 --- a/docs/explanation/public-livestreams.mdx +++ b/docs/explanation/public-livestreams.mdx @@ -2,6 +2,7 @@ type: explanation title: Private vs Public Livestreams sidebar_position: 6 +description: Understand the difference between private and public livestreams in Fishjam and how to configure them. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/backend/fastapi-example.mdx b/docs/how-to/backend/fastapi-example.mdx index 3564cc2..dd88625 100644 --- a/docs/how-to/backend/fastapi-example.mdx +++ b/docs/how-to/backend/fastapi-example.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 1 title: FastAPI +description: Example FastAPI server integration using the Fishjam Python SDK. --- # FastAPI example diff --git a/docs/how-to/backend/fastify-example.mdx b/docs/how-to/backend/fastify-example.mdx index 2fd837c..f9450d1 100644 --- a/docs/how-to/backend/fastify-example.mdx +++ b/docs/how-to/backend/fastify-example.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 0 title: Fastify +description: Example Fastify server integration using the Fishjam Node.js SDK. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/backend/production-deployment.mdx b/docs/how-to/backend/production-deployment.mdx index 7be6b05..04917c4 100644 --- a/docs/how-to/backend/production-deployment.mdx +++ b/docs/how-to/backend/production-deployment.mdx @@ -1,5 +1,6 @@ --- type: how-to +description: Deploy your Fishjam backend safely to production, moving from sandbox to a production-ready setup. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/backend/server-setup.mdx b/docs/how-to/backend/server-setup.mdx index 84903f3..d572b33 100644 --- a/docs/how-to/backend/server-setup.mdx +++ b/docs/how-to/backend/server-setup.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 0 +description: Install and configure a Fishjam server SDK for Node.js or Python, or integrate via the bare REST API. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/background-streaming.mdx b/docs/how-to/client/background-streaming.mdx index eb6e47d..c2829df 100644 --- a/docs/how-to/client/background-streaming.mdx +++ b/docs/how-to/client/background-streaming.mdx @@ -1,6 +1,8 @@ --- +title: "Background calls" sidebar_position: 13 sidebar_label: "Background calls 📱" +description: Enable calls running in the background on Android and iOS in React Native applications. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/connecting.mdx b/docs/how-to/client/connecting.mdx index f112ec6..04675a3 100644 --- a/docs/how-to/client/connecting.mdx +++ b/docs/how-to/client/connecting.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: Connect to a Fishjam room using a peer token and room URL obtained from your backend. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/custom-sources.mdx b/docs/how-to/client/custom-sources.mdx index a62c897..def2c69 100644 --- a/docs/how-to/client/custom-sources.mdx +++ b/docs/how-to/client/custom-sources.mdx @@ -1,6 +1,8 @@ --- +title: "Custom sources" sidebar_position: 8 sidebar_label: "Custom sources 🌐" +description: Stream non-standard video or audio sources (e.g. WebGL, WebGPU, Three.js) through Fishjam in web apps. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/debug-logging.mdx b/docs/how-to/client/debug-logging.mdx index fb51e1d..67b9667 100644 --- a/docs/how-to/client/debug-logging.mdx +++ b/docs/how-to/client/debug-logging.mdx @@ -1,6 +1,8 @@ --- +title: "Debug logging" sidebar_position: 9 sidebar_label: "Debug logging 🌐" +description: Enable SDK debug logging to troubleshoot connectivity and media issues in web applications. --- # Debug logging Web diff --git a/docs/how-to/client/installation.mdx b/docs/how-to/client/installation.mdx index fbbd5bc..6e0d597 100644 --- a/docs/how-to/client/installation.mdx +++ b/docs/how-to/client/installation.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 1 +description: Install the Fishjam client SDK for React (web) or React Native (mobile). --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/list-other-peers.mdx b/docs/how-to/client/list-other-peers.mdx index ba6dbcb..3f0b2b6 100644 --- a/docs/how-to/client/list-other-peers.mdx +++ b/docs/how-to/client/list-other-peers.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 5 +description: Access and display media tracks from other peers and the local peer using the usePeers hook. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/managing-devices.mdx b/docs/how-to/client/managing-devices.mdx index d923a65..d40bb82 100644 --- a/docs/how-to/client/managing-devices.mdx +++ b/docs/how-to/client/managing-devices.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 4 sidebar_label: "Managing devices" +description: Select, switch, mute, and dynamically control camera and microphone devices. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/migration-guide.mdx b/docs/how-to/client/migration-guide.mdx index 891a6ec..069e674 100644 --- a/docs/how-to/client/migration-guide.mdx +++ b/docs/how-to/client/migration-guide.mdx @@ -1,4 +1,5 @@ --- +title: "0.25.x Migration Guide" sidebar_position: 14 sidebar_label: "0.25.x Migration Guide 📱" --- diff --git a/docs/how-to/client/picture-in-picture.mdx b/docs/how-to/client/picture-in-picture.mdx index bee16f4..aae27bf 100644 --- a/docs/how-to/client/picture-in-picture.mdx +++ b/docs/how-to/client/picture-in-picture.mdx @@ -1,6 +1,8 @@ --- +title: "Picture in Picture" sidebar_position: 11 sidebar_label: "Picture in Picture 📱" +description: Display video in a floating PiP window when the user backgrounds the app on Android or iOS. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/reconnection-handling.mdx b/docs/how-to/client/reconnection-handling.mdx index 8d99882..ba7e659 100644 --- a/docs/how-to/client/reconnection-handling.mdx +++ b/docs/how-to/client/reconnection-handling.mdx @@ -1,6 +1,8 @@ --- +title: "Reconnect" sidebar_position: 10 sidebar_label: "Reconnect 📱" +description: Handle automatic reconnection to a Fishjam room after connection loss in React Native apps. --- # Reconnect Mobile diff --git a/docs/how-to/client/screensharing.mdx b/docs/how-to/client/screensharing.mdx index 1c400c4..52ca09b 100644 --- a/docs/how-to/client/screensharing.mdx +++ b/docs/how-to/client/screensharing.mdx @@ -1,6 +1,8 @@ --- +title: "Screen sharing" sidebar_position: 12 sidebar_label: "Screen sharing 📱" +description: Stream mobile device screen content to other peers in React Native applications. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/start-streaming.mdx b/docs/how-to/client/start-streaming.mdx index a55b30c..f983907 100644 --- a/docs/how-to/client/start-streaming.mdx +++ b/docs/how-to/client/start-streaming.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: Initialize camera and microphone access and start streaming media in a Fishjam room. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/client/stream-middleware.mdx b/docs/how-to/client/stream-middleware.mdx index df6d8e9..714ab90 100644 --- a/docs/how-to/client/stream-middleware.mdx +++ b/docs/how-to/client/stream-middleware.mdx @@ -1,6 +1,8 @@ --- +title: "Stream middleware" sidebar_position: 7 sidebar_label: "Stream middleware 🌐" +description: Intercept and transform media tracks before sending them to Fishjam, enabling effects and custom encodings. --- # Stream middleware Web diff --git a/docs/how-to/features/audio-only-calls.mdx b/docs/how-to/features/audio-only-calls.mdx index 17fca18..97d3369 100644 --- a/docs/how-to/features/audio-only-calls.mdx +++ b/docs/how-to/features/audio-only-calls.mdx @@ -1,5 +1,6 @@ --- type: how-to +description: Create audio-only rooms and livestreams for voice-only use cases at a discounted cost. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/features/sandbox-api-testing.mdx b/docs/how-to/features/sandbox-api-testing.mdx index 0f62048..3c6d0b0 100644 --- a/docs/how-to/features/sandbox-api-testing.mdx +++ b/docs/how-to/features/sandbox-api-testing.mdx @@ -1,5 +1,6 @@ --- type: how-to +description: Use the Sandbox API to create rooms and peers for testing without setting up your own backend server. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/features/selective-subscriptions.mdx b/docs/how-to/features/selective-subscriptions.mdx index 22d1c7a..3a356bc 100644 --- a/docs/how-to/features/selective-subscriptions.mdx +++ b/docs/how-to/features/selective-subscriptions.mdx @@ -1,6 +1,7 @@ --- type: how-to title: Selective Subscriptions +description: Configure manual subscription mode so your backend controls which peers receive which streams. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/features/text-chat.mdx b/docs/how-to/features/text-chat.mdx index b979571..6c85a25 100644 --- a/docs/how-to/features/text-chat.mdx +++ b/docs/how-to/features/text-chat.mdx @@ -1,6 +1,7 @@ --- type: how-to title: Text Chat +description: Implement peer-to-peer text chat in your application using Fishjam data channels. --- import Tabs from "@theme/Tabs"; diff --git a/docs/how-to/features/whip-whep.mdx b/docs/how-to/features/whip-whep.mdx index d7de8b0..8513493 100644 --- a/docs/how-to/features/whip-whep.mdx +++ b/docs/how-to/features/whip-whep.mdx @@ -1,6 +1,7 @@ --- type: how-to title: WHIP/WHEP with Fishjam +description: Publish and receive Fishjam livestreams directly using the WHIP and WHEP protocols. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/agents.mdx b/docs/tutorials/agents.mdx index 6ddde34..be19b91 100644 --- a/docs/tutorials/agents.mdx +++ b/docs/tutorials/agents.mdx @@ -2,6 +2,7 @@ type: tutorial sidebar_position: 4 title: Agents +description: Introduction to Fishjam agents and how to implement them using server SDKs. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/backend-quick-start.mdx b/docs/tutorials/backend-quick-start.mdx index 0087c9a..fb9a489 100644 --- a/docs/tutorials/backend-quick-start.mdx +++ b/docs/tutorials/backend-quick-start.mdx @@ -1,6 +1,7 @@ --- type: tutorial sidebar_position: 2 +description: Set up a backend server to create rooms and manage peers for your Fishjam application. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/gemini-live-integration.mdx b/docs/tutorials/gemini-live-integration.mdx index e4302b0..bd30bb2 100644 --- a/docs/tutorials/gemini-live-integration.mdx +++ b/docs/tutorials/gemini-live-integration.mdx @@ -2,6 +2,7 @@ type: tutorial sidebar_position: 5 title: Gemini Live Integration +description: Build a real-time speech-to-speech voice assistant using Fishjam and Google's Multimodal Live API. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/livestreaming.mdx b/docs/tutorials/livestreaming.mdx index 25691d9..d096155 100644 --- a/docs/tutorials/livestreaming.mdx +++ b/docs/tutorials/livestreaming.mdx @@ -2,6 +2,7 @@ type: tutorial sidebar_position: 3 title: Livestreaming +description: Set up livestreaming with Fishjam, from sandbox prototyping to production deployment with server SDKs. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/react-native-quick-start.mdx b/docs/tutorials/react-native-quick-start.mdx index e9a680a..04c7440 100644 --- a/docs/tutorials/react-native-quick-start.mdx +++ b/docs/tutorials/react-native-quick-start.mdx @@ -1,6 +1,7 @@ --- type: tutorial sidebar_position: 0 +description: Step-by-step guide to integrating Fishjam into a React Native application with a working video streaming app. --- import Tabs from "@theme/Tabs"; diff --git a/docs/tutorials/react-quick-start.mdx b/docs/tutorials/react-quick-start.mdx index 5bac37a..9c1f3fe 100644 --- a/docs/tutorials/react-quick-start.mdx +++ b/docs/tutorials/react-quick-start.mdx @@ -1,6 +1,7 @@ --- type: tutorial sidebar_position: 1 +description: Step-by-step guide to integrating Fishjam into a React web application with a working video streaming app. --- import Tabs from "@theme/Tabs"; diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 8abe1b9..13076bb 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -339,6 +339,32 @@ const config: Config = { ...typedocConfig, }, ], + [ + "docusaurus-plugin-llms", + { + generateLLMsTxt: true, + generateLLMsFullTxt: true, + processingBatchSize: 8, + title: "Fishjam Docs", + description: + "Fishjam is a multimedia streaming toolkit for building real-time video and audio applications with managed WebRTC infrastructure, client SDKs (React, React Native), and server SDKs (Node.js, Python).", + includeOrder: [ + "tutorials/**/*.{md,mdx}", + "how-to/**/*.{md,mdx}", + "explanation/**/*.{md,mdx}", + "api/reference.{md,mdx}", + "api/mobile/index.{md,mdx}", + "api/web/index.{md,mdx}", + "api/server/index.{md,mdx}", + ], + ignoreFiles: ["**/type-aliases/**", "**/_common/**"], + includeUnmatchedLast: false, + excludeImports: true, + removeDuplicateHeadings: true, + rootContent: + "Curated index of Fishjam documentation. Start with Tutorials for quick starts, Explanation for concepts, How-to for guides, and API for SDK references.", + }, + ], ], }; diff --git a/package.json b/package.json index 10267fd..c734199 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "@google/genai": "^1.35.0", "@shikijs/twoslash": "^3.6.0", "cspell": "^9.1.2", + "docusaurus-plugin-llms": "^0.3.0", "docusaurus-plugin-typedoc": "1.4.0", "prettier": "^3.5.3", "typedoc": "0.28.5", diff --git a/yarn.lock b/yarn.lock index 7c23e0e..2e5a5d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8203,7 +8203,7 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^2.0.1": +"brace-expansion@npm:^2.0.1, brace-expansion@npm:^2.0.2": version: 2.0.2 resolution: "brace-expansion@npm:2.0.2" dependencies: @@ -10256,6 +10256,19 @@ __metadata: languageName: node linkType: hard +"docusaurus-plugin-llms@npm:^0.3.0": + version: 0.3.0 + resolution: "docusaurus-plugin-llms@npm:0.3.0" + dependencies: + gray-matter: "npm:^4.0.3" + minimatch: "npm:^9.0.3" + yaml: "npm:^2.8.1" + peerDependencies: + "@docusaurus/core": ^3.0.0 + checksum: 10c0/39b1284a512b2226330a1c39919a5087d7b7b482951478e0f26f16d62c2f05eee2585661635f6ac1636526f5c8de576066dc68a449253d86a9ebce93f6df2514 + languageName: node + linkType: hard + "docusaurus-plugin-typedoc@npm:1.4.0": version: 1.4.0 resolution: "docusaurus-plugin-typedoc@npm:1.4.0" @@ -11348,6 +11361,7 @@ __metadata: clsx: "npm:^2.0.0" cspell: "npm:^9.1.2" docusaurus-lunr-search: "npm:3.6.0" + docusaurus-plugin-llms: "npm:^0.3.0" docusaurus-plugin-typedoc: "npm:1.4.0" expo-camera: "npm:^16.1.8" fastify: "npm:^5.4.0" @@ -15232,6 +15246,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.3": + version: 9.0.9 + resolution: "minimatch@npm:9.0.9" + dependencies: + brace-expansion: "npm:^2.0.2" + checksum: 10c0/0b6a58530dbb00361745aa6c8cffaba4c90f551afe7c734830bd95fd88ebf469dd7355a027824ea1d09e37181cfeb0a797fb17df60c15ac174303ac110eb7e86 + languageName: node + linkType: hard + "minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -20970,6 +20993,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.8.1": + version: 2.8.2 + resolution: "yaml@npm:2.8.2" + bin: + yaml: bin.mjs + checksum: 10c0/703e4dc1e34b324aa66876d63618dcacb9ed49f7e7fe9b70f1e703645be8d640f68ab84f12b86df8ac960bac37acf5513e115de7c970940617ce0343c8c9cd96 + languageName: node + linkType: hard + "yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1"