PHPackages                             aw-studio/docdress - 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. aw-studio/docdress

ActiveLibrary

aw-studio/docdress
==================

v0.1.3(5y ago)641.6k2[1 issues](https://github.com/aw-studio/docdress/issues)MITBlade

Since Aug 19Pushed 5y ago5 watchersCompare

[ Source](https://github.com/aw-studio/docdress)[ Packagist](https://packagist.org/packages/aw-studio/docdress)[ RSS](/packages/aw-studio-docdress/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (7)Versions (13)Used By (0)

Docdress
========

[](#docdress)

A package to create markdown documentations from GitHub repositories in your Laravel project. Easy editing for contributors.

[![Docdress](screens/screen.png "Docdress")](screens/screen.png)

The example image shows the [litstack documenation](https://litstack.io/docs). The GitHub repository can be found under [litstack/litstack.io](https://github.com/litstack/litstack.io).

Table Of Contents
-----------------

[](#table-of-contents)

- [Introduction](#introduction)
- [Setup](#setup)
    - [Add repository to Config](#add-repository-to-config)
    - [Clone repository](#clone-repository)
- [Structure](#structure)
    - [Readme.md](#readme-me)
    - [Table of Contents](#toc)
- [Configuration](#configuration)
    - [Versions](#versions)
    - [Private repositories](#private-repositories)
    - [Webhook](#webhook)
    - [Algolia](#algolia)
- [Authorization](#authorization)
- [Alerts](#alerts)
- [Search Component](#search-component)
- [Testing](#testing)

Introduction
------------

[](#introduction)

With Docdress you can turn your project/package documentation within minutes into a web interface with a Laravel-like design.

Docdress offers the following features:

- Laravel-like design
- Documentation for private repositories
- Documentation from subfolders of repositories
- Automatically updated by webhooks
- Any number of repositories in a Laravel project
- Custom themes
- Authentication

Setup
-----

[](#setup)

Install **Docdress** via composer:

```
composer require aw-studio/docdress
```

Now publish the required assets and the config:

```
php artisan vendor:publish --provider="Docdress\DocdressServiceProvider"
```

You may also publish the `config` or `assets`only like this:

```
php artisan vendor:publish --tag="docdress:assets"
php artisan vendor:publish --tag="docdress:config"
```

### Add repository to Config

[](#add-repository-to-config)

Add the desired repository to the `docdress` config.

```
'repos' => [
    'my/repo' => [
        //
    ],
],
```

### Clone repository

[](#clone-repository)

Once you have configured the repository, you must clone it using `docdress:clone`:

```
php artisan docdress:clone "my/repo"
```

Structure
---------

[](#structure)

### Readme.md

[](#readmemd)

The index is built as a nested list in the `readme.md`. It is located under `## Index`. So your `readme.md` could look like this:

```
# My Package

Hello World.

## Index

-   ## Getting Started
    -   [Introduction](introduction.md)
    -   [Installation](installation.md)
-   ## Foo
    -   [Bar](subfolder/bar.md)
```

Table of Contents
-----------------

[](#table-of-contents-1)

The table of contents is built from all `##` and `###` headings under the `#`heading. No link tag with a `name`attribute is needed. You can easily build your markdown file as follows:

```
# Title

## Introduction

...
```

Configuration
-------------

[](#configuration)

With **Docdress** any number of repositories can be documented in one laravel project. Each repository is configured in `docdress.repos` like so:

```
'repos' => [
    'my/repo' => [
        // ...
    ],
],
```

The following attributes can be configured for a repository:

- `route_prefix` - The route prefix under which the documentation is accessible.
- `default_page` - The default page
- `versions` - An array containing the branches that should be available in the documentation.
- `default_version` - The current version.
- `subfolder` - The subfolder of the documentation.
- `theme` - The theme that should be used for this repo. Default value: `default`.
- `access_token` - Personal access token for private repositories.
- `webhook_token` - Webhook token to allow pulling the repository after a change.

Some of the attributes are discussed in more detail below:

### Versions

[](#versions)

Every version is representing a branch. Set the `default_version` to your default branch. The versions are specified as branch name and title, like so:

```
'repos' => [

    'my/repo' => [
        // ...
        'default_version' => 'master',
        'versions'        => [
            'master' => 'Master',
            '1.0'    => '1.0'
        ]'
    ],

],
```

### Private repositories

[](#private-repositories)

Private repositories require a [personal access token](https://github.com/settings/tokens) with the read permissions for the repository.

```
'repos' => [

    'my/repo' => [
        // ...
        'access_token' => env('GITHUB_ACCESS_TOKEN', null)
    ],

],
```

### Subfolder

[](#subfolder)

You may have the documentation of a project or a package in a subfolder of the corresponding repository. If a `subfolder` is specified in the config, only this folder is cloned and displayed.

```
'repos' => [

    'my/repo' => [
        // ...
        'subfolder' => 'docs'
    ],

],
```

### Webhook

[](#webhook)

If you want the latest version to be automatically updated with every push, you have to set a webhook with the url `_docdress/update`.

[![webhook-url](screens/webhook-url.png "Webhook Url")](screens/webhook-url.png)

Additionally the **Content-Type** must be set to `application/json`.

[![webhook-content-type](screens/webhook-content-type.png "Webhook Content Type")](screens/webhook-content-type.png)

And the `token` from your config must be specified.

```
'repos' => [

    'my/repo' => [
        // ...

        'webhook_token' => env('GITHUB_WEBHOOK_TOKEN', null),
    ],

],
```

### Algolia

[](#algolia)

[![Docdress Search](screens/search.png "Docdress Search")](screens/search.png)

[Algolia Docsearch](https://docsearch.algolia.com/) can be used for the search of your documenation. All you have to do is to specify your **application key**for the respective repository.

```
'repos' => [

    'my/repo' => [
        // ...

        'algolia_app_key' => env('ALGOLIA_APP_KEY', null),
    ],

],
```

Authorization
-------------

[](#authorization)

You may create gate for a repository in the `boot` method of your `AuthServiceProvider` to manage access to the documentation.

```
use Docdress\Docdress;

public function boot()
{
    $this->registerPolicies();

    Docdress::gate('my/repo', function ($user) {
        return $user->is_admin;
    });
}
```

Alerts
------

[](#alerts)

You may display alerts just like custom-blocks in vuepress. The available alert types are `tip`, `warning`, `danger`

```
::: tip

Hello World!

:::
```

```
::: warning

Hello World!

:::
```

```
::: danger

Hello World!

:::
```

![alert-tip](screens/alert-tip.png "Alert Tip")![alert-warning](screens/alert-warning.png "Alert Warning")![alert-danger](screens/alert-danger.png "Alert Danger")

Search Component
----------------

[](#search-component)

By using the `x-dd-search-input` component. You can place the algolia search input in your blade views. The component needs the `repo` that should be searched and the desired version.

```

```

Testing
-------

[](#testing)

Execute tests via composer:

```
composer test
```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~19 days

Recently: every ~52 days

Total

12

Last Release

1879d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/29352871?v=4)[Lennart Carstens-Behrens](/maintainers/cbl)[@cbl](https://github.com/cbl)

---

Top Contributors

[![cbl](https://avatars.githubusercontent.com/u/29352871?v=4)](https://github.com/cbl "cbl (162 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/aw-studio-docdress/health.svg)

```
[![Health](https://phpackages.com/badges/aw-studio-docdress/health.svg)](https://phpackages.com/packages/aw-studio-docdress)
```

###  Alternatives

[orchid/platform

Platform for back-office applications, admin panel or CMS your Laravel app.

4.8k2.5M59](/packages/orchid-platform)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

397612.3k](/packages/jeroen-g-explorer)[benjaminhoegh/parsedown-extended

An extension for Parsedown.

5022.6k1](/packages/benjaminhoegh-parsedown-extended)[romanstruk/manticore-scout-engine

Laravel Manticore Scout Engine

4818.1k](/packages/romanstruk-manticore-scout-engine)[rapidez/core

Rapidez Core

1820.7k53](/packages/rapidez-core)[mozex/laravel-scout-bulk-actions

A Laravel Scout extension for bulk importing and flushing of all models.

1033.4k](/packages/mozex-laravel-scout-bulk-actions)

PHPackages © 2026

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