Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions docs/content/docs/plugins/blog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,9 @@ description: Content management, editor, drafts, publishing, SEO and more

import { Tabs, Tab } from "fumadocs-ui/components/tabs";
import { Callout } from "fumadocs-ui/components/callout";
import Image from "next/image";
import { PluginEvaluatorHeader } from "@/components/plugin-evaluator";

import blogProof from "../../../assets/product-proof/blog-proof.webp";

<div className="my-4">
<a href={blogProof.src} target="_blank" rel="noopener noreferrer">
<Image src={blogProof} alt="Real BTST Blog page with three published product-update posts in the generated Next.js application." className="rounded-lg border shadow-sm w-full h-auto hover:opacity-90 transition-opacity cursor-pointer" placeholder="blur" />
</a>
</div>

Blog is the canonical full-stack proof: routes, backend behavior, client UI, and a visible published result arrive as one plugin.

[View interactive demo →](https://www.better-stack.ai/playground?plugins=blog&view=preview)
<PluginEvaluatorHeader pluginKey="blog" />

## Installation

Expand Down
21 changes: 2 additions & 19 deletions docs/content/docs/plugins/form-builder.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,9 @@ description: Visual drag-and-drop form builder with JSON Schema storage and publ

import { Tabs, Tab } from "fumadocs-ui/components/tabs";
import { Callout } from "fumadocs-ui/components/callout";
import Image from "next/image";
import { PluginEvaluatorHeader } from "@/components/plugin-evaluator";

import formBuilderProof from "../../../assets/product-proof/form-builder-proof.webp";

<div className="my-4">
<a href={formBuilderProof.src} target="_blank" rel="noopener noreferrer">
<Image src={formBuilderProof} alt="Real BTST Form Builder with Email, Text Area, and Select fields on the canvas and in the live form preview." className="rounded-lg border shadow-sm w-full h-auto hover:opacity-90 transition-opacity cursor-pointer" placeholder="blur" />
</a>
</div>

The Form Builder plugin provides a visual drag-and-drop form creation interface where administrators can create forms that are serialized and stored as JSON Schema. This is distinct from the CMS plugin - while CMS uses developer-defined Zod schemas, Form Builder allows non-technical administrators to create forms dynamically.

**Key Features:**
- **Visual Form Builder** - Drag-and-drop interface for creating forms with various field types
- **JSON Schema Storage** - Forms are serialized to JSON Schema for database persistence
- **Public Form Rendering** - Render forms by slug on the frontend with automatic validation
- **Submission Tracking** - Store and view form submissions with IP address and user agent logging
- **Backend Hooks** - Typed lifecycle hooks for domain validation, rate limiting, and integrations

[View interactive demo →](https://www.better-stack.ai/playground?plugins=form-builder&view=preview)
<PluginEvaluatorHeader pluginKey="form-builder" />

## Installation

Expand Down
59 changes: 40 additions & 19 deletions docs/content/docs/plugins/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ description: Available plugins and features for BTST
---

import { Card, Cards } from "fumadocs-ui/components/card";
import { BookOpen, Database, Hammer, Bot, FileText, FileCode, Route, Layout, Columns3, MessageSquare, ImageIcon, ShieldCheck } from "lucide-react";
import { Database, Hammer, Bot, Route, Layout, Columns3, MessageSquare, ImageIcon, ShieldCheck } from "lucide-react";
import { PluginCatalogCard } from "@/components/plugin-evaluator";


BTST ships installable capabilities with different boundaries. Full-stack
Expand All @@ -16,13 +17,20 @@ Every capability below is released and installable. Choose a page to see its
actual payload and prerequisites; the catalog does not mix roadmap ideas into
the available inventory.

## Representative decision guides

These three entries establish the decision pattern for a complete feature, a
workflow-heavy feature, and an intentionally one-sided plugin.

<div className="not-prose my-6 grid gap-5 lg:grid-cols-2 2xl:grid-cols-3">
<PluginCatalogCard pluginKey="blog" />
<PluginCatalogCard pluginKey="form-builder" />
<PluginCatalogCard pluginKey="open-api" />
</div>

## More released plugins

<Cards>
<Card
title="Blog Plugin"
href="/plugins/blog"
icon={<BookOpen size={20} />}
description="Content management, editor, drafts, publishing, SEO, RSS feeds."
/>
<Card
title="AI Chat Plugin"
href="/plugins/ai-chat"
Expand All @@ -35,12 +43,6 @@ the available inventory.
icon={<Database size={20} />}
description="Headless CMS with custom content types, Zod schemas, and auto-generated forms."
/>
<Card
title="Form Builder Plugin"
href="/plugins/form-builder"
icon={<FileText size={20} />}
description="Dynamic form builder with drag-and-drop editor, submissions, and validation."
/>
<Card
title="UI Builder Plugin"
href="/plugins/ui-builder"
Expand All @@ -65,12 +67,6 @@ the available inventory.
icon={<ImageIcon size={20} />}
description="Media library with uploads, folders, picker UI, URL registration, and reusable image inputs."
/>
<Card
title="OpenAPI Plugin"
href="/plugins/open-api"
icon={<FileCode size={20} />}
description="Auto-generated API documentation with interactive Scalar UI."
/>
<Card
title="Route Docs Plugin"
href="/plugins/route-docs"
Expand All @@ -90,3 +86,28 @@ the available inventory.
description="Learn how to build your own plugins for BTST."
/>
</Cards>

## Versioned technical metadata

Build-time consumers can import `PLUGINS` and the `PluginDecisionMeta` type from
`@btst/codegen/meta`. The contract carries technical inventory such as topology,
relationship, maturity, dependencies, maintained integrations, and canonical
docs, demo, and source identifiers. Audience copy, workflow wording, and calls
to action remain presentation-owned.

<AutoTypeTable path="../packages/cli/src/utils/plugin-decision.ts" name="PluginDecisionMeta" />

Consumers that cannot wait for a package release can read the checked-in
[`plugin-decisions.json`](https://raw.githubusercontent.com/better-stack-ai/better-stack/main/packages/cli/plugin-decisions.json)
during their build or content-validation step. Pin the raw URL to a commit when
reproducibility matters. The same artifact is published as
`@btst/codegen/plugin-decisions.json`; check `schemaVersion` before consuming its
three `plugins` records. Do not fetch it from the browser at runtime.

After changing `PLUGIN_DECISIONS`, regenerate and verify the artifact from the
repository root:

```bash
pnpm --filter @btst/codegen plugin-decisions:generate
pnpm --filter @btst/codegen plugin-decisions:check
```
21 changes: 2 additions & 19 deletions docs/content/docs/plugins/open-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,9 @@ description: Auto-generated API documentation with interactive Scalar UI

import { Tabs, Tab } from "fumadocs-ui/components/tabs";
import { Callout } from "fumadocs-ui/components/callout";
import Image from "next/image";
import { PluginEvaluatorHeader } from "@/components/plugin-evaluator";

import openApiProof from "../../../assets/product-proof/openapi-proof.webp";

<div className="my-4">
<a href={openApiProof.src} target="_blank" rel="noopener noreferrer">
<Image src={openApiProof} alt="Real Scalar API reference generated by the backend-only BTST OpenAPI plugin." className="rounded-lg border shadow-sm w-full h-auto hover:opacity-90 transition-opacity cursor-pointer" placeholder="blur" />
</a>
</div>

The OpenAPI plugin automatically generates OpenAPI 3.1 documentation for all your BTST plugins. It provides both a JSON schema endpoint and an interactive API reference UI powered by [Scalar](https://scalar.com/).

## Features

- **Automatic Schema Generation** - Traverses all registered plugins and extracts endpoint metadata
- **OpenAPI 3.1 Compliant** - Generates valid OpenAPI 3.1 schemas from Zod definitions
- **Authorization Metadata** - Documents explicit public access or the stable permission ID enforced by each operation
- **Interactive UI** - Beautiful API reference page powered by Scalar
- **Multiple Themes** - Choose from 10+ Scalar themes to match your brand
- **Zero Configuration** - Works out of the box with sensible defaults
<PluginEvaluatorHeader pluginKey="open-api" />

## Installation

Expand Down
7 changes: 4 additions & 3 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
"version": "0.0.0",
"private": true,
"scripts": {
"build": "next build",
"build:vercel": "next build",
"dev": "next dev",
"build": "pnpm --filter @btst/codegen build && next build",
"build:vercel": "pnpm --filter @btst/codegen build && next build",
"dev": "pnpm --filter @btst/codegen build && next dev",
"start": "next start",
"postinstall": "fumadocs-mdx"
},
"dependencies": {
"@btst/codegen": "workspace:*",
"@btst/stack": "workspace:*",
"@vercel/analytics": "^1.6.1",
"framer-motion": "^12.19.1",
Expand Down
Loading
Loading