A hairline list of every way to follow a publication, each row naming the feed, what it carries and its address, over a copyable one-line request that stands in for the whole API.
A hairline list of every way to follow a publication, each row naming the feed, what it carries and its address, over a copyable one-line request that stands in for the whole API.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/devtools95?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/devtools95?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/devtools95.tsx and the badge6 component it uses for the eyebrow (installed to components/beste/component/badge6.tsx).
The installed file exports devtools95Demo alongside the block: the exact props behind the preview above. Spread it to get a working feeds page in one line.
import { Devtools95, devtools95Demo } from "@/components/beste/block/devtools95";
export default function FeedsPage() {
return <Devtools95 {...devtools95Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Devtools95 } from "@/components/beste/block/devtools95";
export default function FeedsPage() {
return (
<Devtools95
eyebrow="Read it your way"
heading="Four ways in, none of them an app"
description="Everything published here is available as a feed."
feeds={[
{
name: "RSS",
description: "Full text of every piece, in publication order.",
address: "/feed.xml",
href: "/feed.xml",
},
]}
snippetLabel="The whole API"
snippet={'curl "https://beste.co/api/archive?q=estimates&limit=5"'}
copyLabel="Copy"
copiedLabel="Copied"
note="If you build something on this, we would like to see it."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Badge6 label above the hairline rule |
heading | string | – | Section heading under the rule |
description | string | – | Supporting paragraph |
feeds | FeedRow[] | [] | One linked row per feed |
snippetLabel | string | – | Label above the request |
snippet | string | – | The request itself, shown in a pre |
copyLabel | string | – | Copy button label |
copiedLabel | string | – | Copy button label after copying |
note | string | – | Single line under the panel |
className | string | – | Extra classes for the outer section |
type FeedRow = {
name: string;
description: string;
address: string;
href: string;
};navigator.clipboard?.writeText, guarded with optional chaining, and the snippet stays selectable as the fallback.pre with overflow-x-auto, so a long request scrolls inside its panel instead of stretching the section.md up, which keeps paths of different lengths in one line down the page.devtools1
Interactive REST API endpoint reference with method badges, expandable parameter details, and response types. Grouped by resource.
devtools4
Application error tracking feed with severity indicators, occurrence counts, and source locations. Summary pills show error distribution.
devtools7
API documentation cards showing response examples with color-coded status badges. Headers section, JSON body with copy button, success/error variants.
devtools9
Timeline-style database migration tracker with applied, pending, and failed status indicators. Shows migration names, descriptions, and timestamps.