PHPackages                             matchory/herodot - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. matchory/herodot

ActiveLibrary[API Development](/categories/api)

matchory/herodot
================

A versatile documentation generator for APIs built with Laravel.

53PHPCI passing

Since Feb 17Pushed 5y ago2 watchersCompare

[ Source](https://github.com/matchory/herodot)[ Packagist](https://packagist.org/packages/matchory/herodot)[ RSS](/packages/matchory-herodot/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

### Herodot

[](#herodot)

 A versatile documentation generator for APIs built with Laravel.
 [**Explore the Documentation »**](https://matchory.github.io/herodot/)

Herodot is a documentation generation framework, tailored for Laravel applications. It works by analyzing the source code of your application, and generating documentation from it.
While everything usually works fine out of the box, Herodot is completely modular, configurable, and provides hooks and events in lots of interesting places.

**Features:**

- *Carefully built for Laravel:*
    Herodot takes every piece of a Laravel app under consideration: From clever route parsing, API resource, policy, and built-in middleware support to integration with Passport, Fortify, Sanctum, Scout and others. The more you stick to standards, the better it gets.
- *Adapts to your way of documenting:*
    Herodot provides strategies for PHP8+ attributes, OpenAPI annotations, documentation comments, external data sources, or just source code parsing. No matter \_ how\_ you prefer to document your API, Herodot will understand it.
- *Separate route collection, information extraction and output generation:*
    Herodot uses fully isolated phases, making it possible to extend and swap out implementations like Lego bricks.
- *Extensively documented:*
    Herodot ships with an extensive documentation that goes from simple setup to writing extensions.

**Requirements:**

- PHP &gt;= 8.0 (see [why we need PHP 8](#why-we-need-php-8))
- Laravel &gt;= 7.0 (older versions/Lumen *might* work, but are neither tested nor optimized)

**Alternatives:**

- [Scribe](https://github.com/knuckleswtf/scribe)
- [Laravel API Documentation Generator](https://github.com/mpociot/laravel-apidoc-generator)

Getting started
---------------

[](#getting-started)

To start using Herodot, install it via composer:

```
php composer require matchory/herodot
```

Unless you've disabled package auto-discovery, Herodot should be installed and available. Otherwise, add the service provider to your `config/app.php`:

```
'providers' => [
    // ...
    Matchory\Herodot\HerodotServiceProvider::class,
],
```

Usage
-----

[](#usage)

Herodot adds one central artisan command to your application:

```
php artisan herodot:generate
```

Executing it will start the documentation generation. You can do this now, safely: Herodot will analyze your code and generate documentation at `public/docs`. If this directory exists already, you will be prompted before anything is written.
By default, this should leave you with an HTML page, and an OpenAPI (aka. Swagger) definition. To configure the output formats, and any of the other settings, you should publish the package configuration file:

```
php artisan vendor:publish --provider="Matchory\\Herodot\\HerodotServiceProvider" --tag="config"
```

This causes the configuration file to be published to `config/herodot.php`. Check out the [configuration reference](https://matchory.github.io/herodot/configuration/) to learn about all available options.

Documenting your API
--------------------

[](#documenting-your-api)

Check out [the documentation](https://matchory.github.io/herodot/guide/strategies.html) to learn how to document your API!

Contributing
------------

[](#contributing)

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are *greatly appreciated*.

### Fork the Project

[](#fork-the-project)

- Create your Feature Branch (`git checkout -b your-name/amazing-feature`)
- Commit your Changes (`git commit -m 'Add some amazing feature'`)
- Push to the Branch (`git push origin your-name/amazing-feature`)
- Open a Pull Request

License
-------

[](#license)

Distributed under the [MIT License](https://spdx.org/licenses/MIT.html). See [LICENSE](./LICENSE.md) for more information.

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/aa633f25468b1a85e85646d55aa16c39d04e163e92744d0a7c2a694dbcafc3e1?d=identicon)[Radiergummi](/maintainers/Radiergummi)

---

Top Contributors

[![Radiergummi](https://avatars.githubusercontent.com/u/6115429?v=4)](https://github.com/Radiergummi "Radiergummi (51 commits)")

### Embed Badge

![Health badge](/badges/matchory-herodot/health.svg)

```
[![Health](https://phpackages.com/badges/matchory-herodot/health.svg)](https://phpackages.com/packages/matchory-herodot)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k14](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
