# OpenScan

Generate beautiful API documentation from OpenAPI specs.

[openscan.dev](https://openscan.dev)

## Quick Start

```bash
npx openscan ./openapi.js
```

This starts a local server and opens your API docs at `http://localhost:4000`.

## Interactive Mode

Run without arguments for an interactive setup:

```bash
npx openscan
```

You'll be prompted to:

1. Enter your OpenAPI spec path or URL
2. Choose to preview locally or build static files
3. Specify an output directory (if building)

## CLI Commands

### Preview Locally

```bash
# From a local file
npx openscan ./openapi.json
npx openscan ./spec.yaml

# From a URL
npx openscan https://api.example.com/openapi.json

# Explicit serve command
npx openscan serve ./openapi.json
```

### Build Static Files

Generate static HTML files ready for deployment:

```bash
# Build to ./docs (default)
npx openscan build ./openapi.json

# Build to custom directory
npx openscan build ./openapi.json ./my-docs
```

## Deploying Your Docs

After building, deploy the `docs` folder to any static hosting provider:

### Bunny.net (Recommended)

[Bunny.net](https://bunny.net) offers fast, affordable static hosting:

1. Create a Storage Zone and upload your `docs` folder to it
2. Create and connect a Pull Zone
3. Your API docs are live!

### Other Providers

```bash
# Serve locally
npx serve docs

# Or use any static host
# - Netlify
# - Vercel
# - GitHub Pages
# - Cloudflare Pages
```

## Features

- Beautiful three-panel layout
- Syntax-highlighted code examples (cURL, JavaScript, Python)
- Endpoint search
- Support for JSON and YAML specs
- Markdown rendering in descriptions
- `x-logo` support for custom branding
- Standalone tag documentation pages
- Fully static output - no server required

## OpenAPI Support

- OpenAPI 3.0 and 3.1
- JSON and YAML formats
- `$ref` resolution for schemas and responses
- `allOf`, `oneOf`, `anyOf` schema composition
- `x-logo` extension for custom branding

## Links

- [Website](https://openscan.dev)
- [npm](https://www.npmjs.com/package/openscan)
