PHPackages                             andretmblkk/dfdgenerator - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. andretmblkk/dfdgenerator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

andretmblkk/dfdgenerator
========================

Generate Data Flow Diagram documentation automatically from Laravel routes, controllers, models, and database access.

v1.0.0(2w ago)02MITPHPPHP ^8.2

Since May 21Pushed 2w agoCompare

[ Source](https://github.com/Andretmblkk/DFDgenerator)[ Packagist](https://packagist.org/packages/andretmblkk/dfdgenerator)[ Docs](https://github.com/Andretmblkk/DFDgenerator)[ RSS](/packages/andretmblkk-dfdgenerator/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (5)Versions (2)Used By (0)

Laravel DFD Generator
=====================

[](#laravel-dfd-generator)

Laravel DFD Generator adalah package Laravel untuk membuat Data Flow Diagram (DFD) otomatis dari aplikasi Laravel. Package ini membaca route, controller action, pemakaian model Eloquent, dan akses database, lalu menampilkan hasilnya lewat live web viewer `/dfd` atau export static HTML/SVG/JSON/Mermaid.

Project ini dibuat oleh Andre Tumbelaka.

Fitur
-----

[](#fitur)

- Auto-scan route Laravel dan controller action.
- Parse source PHP memakai `nikic/php-parser`.
- Deteksi proses bisnis dari route/controller.
- Deteksi model Eloquent dan table database.
- Generate DFD Level 0 sampai Level 3.
- Live web viewer modern di `/dfd` tanpa sambung JSON manual.
- Dark UI, sidebar hierarchy, toolbar zoom/pan, minimap, dan export.
- CSS/JS viewer diload otomatis lewat route asset package.
- Export static HTML viewer, SVG, JSON, dan Mermaid.
- Artisan command: `php artisan dfd:generate`.

Requirement
-----------

[](#requirement)

- PHP 8.2 atau lebih baru.
- Laravel 10, 11, atau 12.
- Composer.

Installation
------------

[](#installation)

Install langsung lewat Composer:

```
composer require andretmblkk/dfdgenerator
```

Laravel akan auto-discover service provider package ini. Setelah install, route `/dfd` langsung tersedia selama config route package aktif.

Kalau auto-discovery dimatikan, daftarkan provider manual di `config/app.php`:

```
'providers' => [
    LaravelDfd\LaravelDfdServiceProvider::class,
],
```

Update package
--------------

[](#update-package)

Kalau package sudah pernah terinstall dan ingin mengambil versi terbaru:

```
composer update andretmblkk/dfdgenerator
```

Publish config
--------------

[](#publish-config)

Publish config bersifat opsional. Jalankan ini hanya kalau ingin mengubah prefix route, middleware, output path, semantic groups, atau setting lain.

```
php artisan vendor:publish --tag=dfd-config
```

File yang dibuat:

```
config/laravel-dfd.php
config/dfd.php

```

Publish assets
--------------

[](#publish-assets)

Live viewer `/dfd` langsung bekerja setelah install karena package menyajikan CSS/JS lewat route asset internal:

```
/dfd/assets/styles.css
/dfd/assets/viewer.js

```

Artinya user tidak wajib menjalankan `vendor:publish` agar UI tampil modern. Kalau ingin menyalin asset package ke public path Laravel standar, jalankan:

```
php artisan vendor:publish --tag=dfd-assets
```

File akan dipublish ke:

```
public/vendor/dfdgenerator

```

Usage: live viewer
------------------

[](#usage-live-viewer)

Jalankan aplikasi Laravel:

```
php artisan serve
```

Buka DFD viewer:

```
http://localhost:8000/dfd

```

Package akan scan route/controller aplikasi saat halaman `/dfd` dibuka, lalu render viewer langsung. Tidak perlu generate JSON atau menghubungkan frontend manual.

Viewer route mode memakai asset URL absolut dari Laravel `asset()`, sehingga `/dfd` tetap benar meskipun dibuka tanpa trailing slash. CSS dan JS akan diload dari `/dfd/assets/...`, bukan dari `/assets/...`.

Konfigurasi route viewer
------------------------

[](#konfigurasi-route-viewer)

Default route:

```
'route' => [
    'enabled' => env('DFD_ROUTE_ENABLED', true),
    'prefix' => env('DFD_ROUTE_PREFIX', 'dfd'),
    'middleware' => ['web'],
],
```

Ubah prefix lewat `.env`:

```
DFD_ROUTE_PREFIX=dfd
```

Kalau ingin disable viewer:

```
DFD_ROUTE_ENABLED=false
```

Kalau prefix diubah, asset viewer ikut menyesuaikan. Contoh:

```
DFD_ROUTE_PREFIX=developer/dfd
```

Viewer:

```
http://localhost:8000/developer/dfd

```

Asset:

```
http://localhost:8000/developer/dfd/assets/styles.css
http://localhost:8000/developer/dfd/assets/viewer.js

```

Konfigurasi nama sistem
-----------------------

[](#konfigurasi-nama-sistem)

Tambahkan ke `.env` aplikasi Laravel:

```
DFD_SYSTEM_NAME="Nama Sistem Saya"
```

Export static HTML/SVG/JSON
---------------------------

[](#export-static-htmlsvgjson)

Kalau tetap butuh file static:

```
php artisan dfd:generate
```

Default output:

```
storage/dfd

```

File yang dihasilkan:

```
storage/dfd/index.html
storage/dfd/level-0.svg
storage/dfd/level-0.json
storage/dfd/level-1.svg
storage/dfd/level-1.json
storage/dfd/level-2.svg
storage/dfd/level-2.json
storage/dfd/level-3.svg
storage/dfd/level-3.json
storage/dfd/assets/styles.css
storage/dfd/assets/viewer.js

```

Static HTML mode memakai asset relatif:

```

```

Karena itu `storage/dfd/index.html` bisa dibuka sebagai file static selama folder `assets` tetap berada di sebelah `index.html`.

Custom output folder:

```
php artisan dfd:generate --output=public/dfd
```

Buka:

```
public/dfd/index.html

```

Kalau output diarahkan ke `public/dfd`, viewer static juga bisa dibuka lewat web server:

```
http://localhost:8000/dfd/index.html

```

Export Mermaid legacy
---------------------

[](#export-mermaid-legacy)

```
php artisan dfd:generate --format=mermaid --output=storage/dfd/diagram.mmd
```

Export JSON legacy:

```
php artisan dfd:generate --format=mermaid --json --output=storage/dfd/diagram.json
```

Debug
-----

[](#debug)

Kalau command gagal dan butuh detail error:

```
php artisan dfd:generate --debug
```

Cara kerja singkat
------------------

[](#cara-kerja-singkat)

1. Package membaca route Laravel.
2. Action controller diparse dari source code.
3. Pemakaian model/table dideteksi.
4. Proses bisnis dikelompokkan berdasarkan config semantic groups.
5. DFD Level 0 sampai Level 3 dibangun.
6. Viewer route mode menampilkan diagram langsung di `/dfd`.
7. Static mode menulis `index.html`, SVG, JSON, dan asset viewer ke output folder.

Development package
-------------------

[](#development-package)

Clone repository:

```
git clone https://github.com/Andretmblkk/DFDgenerator.git
cd DFDgenerator
```

Install dependency:

```
composer install
```

Jalankan test:

```
composer test
```

Atau langsung:

```
vendor/bin/phpunit
```

Regenerate autoload setelah mengubah class:

```
composer dump-autoload
```

Struktur project
----------------

[](#struktur-project)

```
config/
  dfd.php
  laravel-dfd.php
routes/
  web.php
src/
  Builder/
  Commands/
  Generator/
  Http/
  IR/
  Parser/
  Renderer/
  Scanner/
  Support/
public/
  assets/
    styles.css
    viewer.js
resources/
  views/
tests/
  Fixtures/
  Unit/
composer.json
phpunit.xml
README.md

```

Catatan penting
---------------

[](#catatan-penting)

Package ini menganalisis struktur aplikasi berdasarkan route, controller, model, dan pemakaian database yang bisa dibaca secara statis. Kalau logic aplikasi terlalu dinamis, misalnya route/controller dibuat saat runtime, hasil diagram bisa kurang lengkap.

Untuk live viewer, pastikan route package tidak diblokir middleware aplikasi. Secara default package memakai middleware `web`.

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance96

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

19d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/588370d57f1d998532f08f1203180a0179eec41c239b72c37cd3f754ec8e1d23?d=identicon)[Andretmblkk](/maintainers/Andretmblkk)

---

Tags

laravelstatic analysisdocumentationartisandiagramdfddata-flow-diagram

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/andretmblkk-dfdgenerator/health.svg)

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

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.4k51.0M7.4k](/packages/larastan-larastan)[laravel/ai

The official AI SDK for Laravel.

9782.1M153](/packages/laravel-ai)[zidbih/laravel-deadlock

Make temporary Laravel workarounds expire and fail CI when ignored.

954.0k](/packages/zidbih-laravel-deadlock)[laravel/surveyor

Static analysis tool for Laravel applications.

8390.3k12](/packages/laravel-surveyor)[calebdw/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

15104.9k4](/packages/calebdw-larastan)

PHPackages © 2026

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