Skip to content

Commit 3cb6659

Browse files
Revamp README and update contributing header (#12)
Rewrite README.md to a full product-focused README: updated project name to "Bruno API Docs", added badges, principles, quickstart, feature list, ecosystem table, repository layout, roadmap, and development notes. Replaced short install/usage blurb with comprehensive guidance and links to Bruno docs. Minor update to contributing.md heading to match the new project name and reference the README. These changes improve discoverability and provide clear guidance for maintainers and users.
1 parent 89da487 commit 3cb6659

2 files changed

Lines changed: 60 additions & 16 deletions

File tree

README.md

Lines changed: 58 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,69 @@
1-
# bruno-api-docs
1+
# Bruno API Docs
22

3-
`@opencollection/docs` — an interactive API documentation site and request playground for the [OpenCollection](https://www.opencollection.com) format.
3+
[![Website](https://img.shields.io/badge/Website-usebruno.com-blue)](https://www.usebruno.com)
4+
[![Docs](https://img.shields.io/badge/Docs-docs.usebruno.com-blue)](https://docs.usebruno.com)
5+
[![X](https://img.shields.io/twitter/follow/use_bruno?style=social&logo=x)](https://twitter.com/use_bruno)
6+
[![Download Bruno](https://img.shields.io/badge/Download_Bruno-Latest-brightgreen)](https://www.usebruno.com/downloads)
47

5-
Point it at an OpenCollection and it renders a browsable docs site: a sidebar of requests, per-request documentation (params, headers, body, auth, scripts, assertions), and a live playground that sends the request and shows the response.
8+
**Living API docs, generated from the collection your team runs every day.** No second artifact to write or maintain: every endpoint your readers see is one they can send.
69

7-
## Install
10+
Bruno API Docs renders the collection: the artifact your team actually builds, runs, and tests every day. It captures everything needed to work with an API: working requests with real values filled in, multiple requests for the same endpoint to represent different scenarios, saved request/response examples representing different outcomes (such as success and error states), and the execution context needed to chain requests, share configurations, and automate workflows through variables, scripts, and tests. Readers can explore and customize everything directly in the playground or import it into Bruno, across HTTP, GraphQL, gRPC, and WebSocket. If your API is defined by an OpenAPI spec, Bruno's [OpenAPI Sync](https://docs.usebruno.com/open-api/openapi-sync) keeps the collection aligned as the spec evolves. And if you don't have a spec, the collection documents itself just as well.
811

9-
```bash
10-
npm install @opencollection/docs
11-
```
12+
## Principles
1213

13-
## Usage
14+
Same principles as Bruno itself:
1415

15-
It ships three ways:
16+
- **No account required.** Generate API docs directly from your collection: no Bruno account, login, or cloud service involved.
17+
- **You own the docs.** Docs are generated as static files you can share however you like: GitHub Pages, your own server, an internal portal, or a CDN. Bruno doesn't host or manage them.
18+
- **Git-native.** The collection lives in your repository and the docs are generated from it, so documentation evolves alongside your API and versioning comes naturally with git.
19+
- **Safe by default.** Environments and secrets are excluded from generated output unless you explicitly choose to include them.
20+
- **Open format.** Collections use the [OpenCollection](https://www.opencollection.com) schema, an open specification for API collections.
1621

17-
- **React component** — import `OpenCollection` and pass it a collection.
18-
- **Standalone bundle** — a self-contained JS/CSS build (`dist-standalone/`) for dropping into any page, served from the CDN.
19-
- **Express / server entry** — render the docs from a Node server.
22+
## Quickstart
2023

21-
See [`examples/`](./examples) for a working setup of each (`react`, `standalone-html`, `express-server`).
24+
If you already have a Bruno collection, open Collection Settings → Documentation → Generate Docs. Bruno generates a single self-contained HTML file that you can share, host, or publish anywhere.
25+
26+
Don't have a Bruno collection yet? Import your API from an [OpenAPI specification](https://docs.usebruno.com/open-api/importOAS) or [another API client](https://docs.usebruno.com/get-started/import-export-data/import-collections), then generate API docs in a single click.
27+
28+
See [Auto-generate documentation](https://docs.usebruno.com/api-docs/auto-generate-docs) in the Bruno docs for more details.
29+
30+
31+
## What you get
32+
33+
- **A full API Reference Docs Site:** every folder, request, and environment gets its own page with a stable shareable URL, prev/next pagination, breadcrumbs, and search with method filters. All from one static file with no server.
34+
- **The Bruno Playground, embedded:** readers edit and send requests right in the docs. Scripting runs in a sandboxed QuickJS environment with a safe-mode `bru.*` API; variables resolve across collection, folder, request, and environment scopes; assertions and tests run like they do in the app.
35+
- **Request pages built for consumers:** the request definition (method, URL, params, headers, body, auth, examples, code snippets) is separated from its execution context (scripts, variables, assertions, tests).
36+
- **Multi-protocol:** HTTP and GraphQL render and execute in-browser; WebSocket and gRPC render as documentation with execution via Open in Bruno (until execution channels ship, see Roadmap).
37+
- **Light and dark themes** from a token-based design system aligned with the Bruno app, and **Open in Bruno** to hand the collection off to the desktop app for full editing.
38+
39+
## The Bruno ecosystem
40+
41+
| Project | Description | GitHub | Get it |
42+
|---|---|---|---|
43+
| Bruno Desktop | Open-source IDE for exploring and testing APIs; collections live as files in your repo | [usebruno/bruno](https://github.com/usebruno/bruno) | [Download](https://www.usebruno.com/downloads) |
44+
| Bruno CLI | Run collections in CI, generate reports and docs from the command line | [usebruno/bruno](https://github.com/usebruno/bruno/tree/main/packages/bruno-cli) | [npm](https://www.npmjs.com/package/@usebruno/cli) |
45+
| Bruno for VS Code | Work with collections without leaving your editor | [usebruno/bruno-vscode](https://github.com/usebruno/bruno-vscode) | [Marketplace](https://marketplace.visualstudio.com/items?itemName=bruno-api-client.bruno) |
46+
| Bruno for Backstage | Surface and run Bruno collections on Backstage entity pages | *upcoming* | *upcoming* |
47+
| **Bruno API Docs** | The docs renderer and the embedded Bruno Playground | this repo | [Generate in Bruno](https://docs.usebruno.com/api-docs/auto-generate-docs) |
48+
| Bruno Docs Viewer | Hosted viewer that opens a collection fully client-side, live from its public git repo | *upcoming* | *upcoming* |
49+
50+
51+
## Repository layout
52+
53+
| Path | What it is |
54+
|---|---|
55+
| [`packages/bruno-api-docs`](./packages/bruno-api-docs) | The renderer: a React app built as a library and as the **standalone bundle** (`dist-standalone/`), the artifact the Bruno app's generated HTML loads from the CDN. |
56+
| [`examples/`](./examples) | Consumption patterns: `standalone-html` (how a generated HTML file uses the bundle), `react` and `express-server` (design sketches of the intended embedding API; not shipped packages yet, see Roadmap). |
57+
58+
## Roadmap
59+
60+
The renderer is the shared core for several distribution surfaces, in rough order:
61+
62+
1. **Framework integrations.** Official packages that serve the docs from inside your own app at a route you control (`myapi.com/docs`): Express, NestJS, and Next.js first, then Spring Boot, Laravel, and Rails. Each ships as a separate package in this repo, wrapping the same renderer bundle. Target DX: pass only the collection path, get docs with hot reload on every collection change; everything else (route, environment, theme) is optional.
63+
2. **Hostable static site.** A prerendered multi-page build (real URLs, per-page meta, sitemap, structured data, `llms.txt`) so published docs are indexable by search engines and citable by AI assistants, alongside the existing single-file output.
64+
3. **Playground parity.** Closing the gap with the desktop app: full auth-mode coverage (OAuth2, AWS SigV4, Digest, WSSE, and more), GraphQL/WebSocket/gRPC editors, and user-selectable execution channels for what browsers can't send directly (self-hosted proxy, browser extension, the Bruno desktop app as a local agent, or an explicit opt-in cloud proxy; never a silent default).
65+
4. **Bruno Docs Viewer.** A Bruno-hosted viewer that opens a collection fully client-side: it reads the collection straight from its public git repo and renders it live in the browser, no server processing, no snapshot, no account.
2266

2367
## Development
2468

25-
Work happens in `packages/bruno-api-docs`. See [contributing.md](./contributing.md) for setup, dev/test/build commands, and the PR flow.
69+
Prerequisites, dev/test/build commands, and the PR flow are in [contributing.md](./contributing.md). Work happens in `packages/bruno-api-docs`; the test suite includes unit tests (Vitest) and end-to-end tests (Playwright).

contributing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Contributing to bruno-api-docs
1+
# Contributing to Bruno API Docs
22

3-
Thanks for your interest. This repo holds `@opencollection/docs`, the interactive API documentation site and request playground for the [OpenCollection](https://www.opencollection.com) format.
3+
Thanks for your interest. This repo holds the Bruno API Docs renderer: the interactive API documentation site and embedded Bruno Playground that [Bruno](https://www.usebruno.com) generates from a collection. See the [README](./README.md) for what the project is and where it's headed.
44

55
## Prerequisites
66

0 commit comments

Comments
 (0)