PHPackages                             ug-code/laranova - 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. [Testing &amp; Quality](/categories/testing)
4. /
5. ug-code/laranova

ActiveLibrary[Testing &amp; Quality](/categories/testing)

ug-code/laranova
================

Postman-like API test interface for Laravel. Pre-script Faker tags, HTTP Client wrapper, SPA UI.

v1.0.0(1mo ago)12MITBladePHP ^8.2

Since May 9Pushed 3w agoCompare

[ Source](https://github.com/ug-code/Laranova)[ Packagist](https://packagist.org/packages/ug-code/laranova)[ Docs](https://github.com/ug-code/Laranova)[ RSS](/packages/ug-code-laranova/feed)WikiDiscussions main Synced 1w ago

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

Laranova
========

[](#laranova)

> **Postman-like API test interface, directly inside your Laravel application.**
> Zero configuration, local-only, session-backed, and fully extensible.

[![Latest Version](https://camo.githubusercontent.com/6076b260cdf5d9123349aada805e567366999a1e363185307ac80f94c8ca1829/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f7461672f75672d636f64652f4c6172616e6f76613f6c6162656c3d76657273696f6e26736f72743d73656d766572)](https://packagist.org/packages/ug-code/laranova)[![PHP](https://camo.githubusercontent.com/1a107072ced2c4a25bf701de3ddaf3940906fb01183e1de7d8f4ece3584df389/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322b2d376237666235)](https://php.net)[![Laravel](https://camo.githubusercontent.com/5c87e679cd8645f06bef587b2a2463e9465f2f212747769bf24edf7b79667ff9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e785f2537435f31322e782d666235303362)](https://laravel.com)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)

---

Why Laranova?
-------------

[](#why-laranova)

You're debugging an API endpoint, testing validation rules, or inspecting a third-party integration. Normally you'd switch to Postman, Insomnia, or cURL — copy URLs, manage tokens, keep windows in sync.

Laranova lives **inside your Laravel app**. It scans all your routes, auto-detects validation rules, generates fake data via Faker, and lets you send requests — all from a single-page interface served at `/laranova`.

---

[![image](https://private-user-images.githubusercontent.com/17679067/595052476-92594af0-b3e0-4270-af13-169de867abb1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA0NzI1NTYsIm5iZiI6MTc4MDQ3MjI1NiwicGF0aCI6Ii8xNzY3OTA2Ny81OTUwNTI0NzYtOTI1OTRhZjAtYjNlMC00MjcwLWFmMTMtMTY5ZGU4NjdhYmIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjAzVDA3MzczNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY5Yjg3ZGI2ZjNkMTNmMGFmMWNmYTBiNGUxOWUxM2JhYmY3YTA2YzllOGVkNDJlNWJiYmEzMGVlMmY0MjBiYjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.RUtHrUfQ5t0qDcDbcaIxfI-puaEngKzdKO9tI-rOMp4)](https://private-user-images.githubusercontent.com/17679067/595052476-92594af0-b3e0-4270-af13-169de867abb1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA0NzI1NTYsIm5iZiI6MTc4MDQ3MjI1NiwicGF0aCI6Ii8xNzY3OTA2Ny81OTUwNTI0NzYtOTI1OTRhZjAtYjNlMC00MjcwLWFmMTMtMTY5ZGU4NjdhYmIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjAzVDA3MzczNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY5Yjg3ZGI2ZjNkMTNmMGFmMWNmYTBiNGUxOWUxM2JhYmY3YTA2YzllOGVkNDJlNWJiYmEzMGVlMmY0MjBiYjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.RUtHrUfQ5t0qDcDbcaIxfI-puaEngKzdKO9tI-rOMp4)Features
--------

[](#features)

FeatureDescription**Route Scanner**Lists every route in your app, grouped by controller. Shows middleware, validation rules, path parameters, and file upload fields at a glance.**Request Builder**Method, URL, headers, query params, and body — with environment variable replacement (`{{baseUrl}}`).**Header Toggle**Enable or disable individual headers on the fly without removing them.**Query Param Toggle**Same per-param enable/disable control, with a reset-to-defaults button.**Faker Tag Engine**Use `{{ @faker:name }}`, `{{ @faker:email }}`, `{{ @faker:int }}`, and 20+ other tags inside URLs, headers, query params, and body. Values are generated fresh on each request.**Pre-scripts (Postman Compat)**Run JavaScript before each request using the `pm.*` API — `pm.variables.set()`, `pm.environment.get()`, `pm.sendRequest()`.**Session-Backed History**Last 100 requests stored in session. Click to restore method + URL.**Route Info Panel**Select a route from the sidebar to see its controller, middleware stack, validation rules, and path parameters at a glance.**cURL Export**One-click copy as cURL command with resolved faker values.**Postman Export**Export the current request as a Postman Collection v2.1.**Variables Panel**Define reusable environment variables (`baseUrl`, `bearerToken`, etc.) with config defaults and localStorage persistence.**Auto Security Headers**Automatically pre-populates `Authorization: Bearer {{bearerToken}}` based on security config.**File Upload Support**Auto-detects file/image validation rules and renders file inputs.---

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

[](#installation)

```
composer require --dev ug-code/laranova
```

Laranova uses package auto-discovery. No manual service provider registration needed.

---

Quick Start
-----------

[](#quick-start)

Navigate to `/laranova` in your browser. That's it.

The interface only loads in `local` environment. If you need to test in other environments:

```
# config/app.php
'providers' => [
    // ...
    \Laranova\LaranovaServiceProvider::class,
],
```

Then set `APP_ENV=local` or temporarily remove the environment check from the provider.

---

Usage
-----

[](#usage)

### Sending a Request

[](#sending-a-request)

1. Select an HTTP method from the dropdown.
2. Enter the full URL (or use `{{baseUrl}}/api/endpoint`).
3. Add headers, query params, and body as needed.
4. Optionally write pre-scripts.
5. Click **Send Request**.

### Selecting Routes from the Sidebar

[](#selecting-routes-from-the-sidebar)

The left panel lists all application routes (excluding debug/telescope paths). Routes are grouped by controller. Click a route to auto-fill method, URL, query parameters, and body — including validation-rule-aware faker values.

### Using Faker Tags

[](#using-faker-tags)

Any text field supports faker tag replacement. Tags are resolved fresh on each request:

TagFaker MethodExample Output`{{ @faker:name }}``name()``Dr. Zachary Brown``{{ @faker:firstName }}``firstName()``John``{{ @faker:lastName }}``lastName()``Smith``{{ @faker:fullName }}``name()``Prof. Jane Doe``{{ @faker:email }}``email()``jane.doe@example.com``{{ @faker:safeEmail }}``safeEmail()``john.doe@example.org``{{ @faker:phone }}``phoneNumber()``+1-555-123-4567``{{ @faker:phoneNumber }}``phoneNumber()``555.123.4567``{{ @faker:address }}``address()``123 Main St, New York, NY 10001``{{ @faker:streetAddress }}``streetAddress()``456 Elm Street``{{ @faker:city }}``city()``New York``{{ @faker:country }}``country()``United States``{{ @faker:postcode }}``postcode()``10001``{{ @faker:text }}``text()``Lorem ipsum dolor sit amet, consectetur adipiscing elit...``{{ @faker:sentence }}``sentence()``The quick brown fox jumps over the lazy dog.``{{ @faker:paragraph }}``paragraph()``Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.``{{ @faker:number }}``randomNumber()``83742``{{ @faker:randomDigit }}``randomDigit()``7``{{ @faker:int }}``randomNumber()``58392``{{ @faker:uuid }}``uuid()``550e8400-e29b-41d4-a716-446655440000``{{ @faker:url }}``url()``https://www.example.com``{{ @faker:date }}``date()``2024-03-15``{{ @faker:dateTime }}``dateTime()``2024-03-15 14:30:00``{{ @faker:dateFrom }}``dateTimeBetween(-10y, now)``2019-07-22``{{ @faker:dateTo }}``dateTimeBetween(now, +10y)``2028-11-03``{{ @faker:company }}``company()``Acme Corporation``{{ @faker:boolean }}``boolean()``true``{{ @faker:word }}``word()``synergize``{{ @faker:title }}``title()``Prof.`Unknown tag types fall back to `word`.

---

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

[](#configuration)

Publish the config file:

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

```
// config/laranova.php

return [

    'default_headers' => [
        'Content-Type' => 'application/json',
        'Accept'       => 'application/json',
    ],

    'auto_content_type' => true,  // Auto-add Content-Type for body requests

    'faker' => [
        'locale' => env('LARANOVA_FAKER_LOCALE', 'en_US'),
    ],

    'http' => [
        'timeout'         => env('LARANOVA_HTTP_TIMEOUT', 30),
        'connect_timeout' => env('LARANOVA_HTTP_CONNECT_TIMEOUT', 10),
    ],

    'history' => [
        'max_items' => env('LARANOVA_HISTORY_MAX', 100),
    ],

    'routes' => [
        'exclude_prefixes' => [
            'laranova', '_debugbar', '_ignition', 'telescope', 'sanctum',
        ],
    ],

    'security' => [
        'type'     => env('LARANOVA_SECURITY_TYPE', 'bearer'),  // null, bearer, basic, apikey
        'name'     => env('LARANOVA_SECURITY_NAME', 'api_key'),
        'position' => env('LARANOVA_SECURITY_POSITION', 'header'),
    ],

    'default_variables' => [
        'baseUrl'     => env('LARANOVA_DEFAULT_BASE_URL', 'http://pinsever.test'),
        'bearerToken' => '',
    ],
];
```

---

Publishing Views
----------------

[](#publishing-views)

```
php artisan vendor:publish --tag=laranova-views
```

This publishes the Blade SPA to `resources/views/vendor/laranova/`. You can customize the UI directly. The frontend uses **Tailwind CSS** and **Alpine.js 3.x** from CDN — no npm build step required.

---

Environment Variables
---------------------

[](#environment-variables)

VariableDefaultDescription`LARANOVA_FAKER_LOCALE``en_US`Faker locale for generated data`LARANOVA_HTTP_TIMEOUT``30`HTTP client timeout (seconds)`LARANOVA_HTTP_CONNECT_TIMEOUT``10`HTTP connection timeout (seconds)`LARANOVA_HISTORY_MAX``100`Max history items stored in session`LARANOVA_SECURITY_TYPE``bearer`Default auth scheme (`bearer`, `basic`, `apikey`, or empty)`LARANOVA_DEFAULT_BASE_URL``http://pinsever.test`Default `{{baseUrl}}` variable value---

Architecture
------------

[](#architecture)

```
src/
├── LaranovaServiceProvider.php     # Routes, views, config, container bindings
├── Facades/Laranova.php            # Facade → ApiClient
├── Http/Controllers/
│   └── LaranovaController.php      # Readonly controller, 6 actions
├── Services/
│   ├── ScriptParser.php            # Regex faker-tag engine
│   ├── ApiClient.php               # Laravel HTTP::send() wrapper
│   └── RouteScanner.php            # Scans all routes, extracts rules & metadata
resources/views/
├── laranova.blade.php              # Single-file SPA (Alpine.js + Tailwind)
├── components/
│   ├── left-sidebar.blade.php      # Route tree + history panel
│   ├── center-panel.blade.php      # Request builder
│   ├── right-panel.blade.php       # Response viewer
│   └── settings-modal.blade.php    # Settings overlay
└── partials/
    ├── tab-headers.blade.php       # Header builder with toggle
    ├── tab-query-params.blade.php  # Query param builder with toggle
    ├── tab-body.blade.php          # Body editor
    ├── tab-pre-scripts.blade.php   # JavaScript pre-script editor
    └── tab-route-info.blade.php    # Selected route details

```

---

Routes
------

[](#routes)

All routes are prefixed with `/laranova` and use the `web` middleware:

MethodURIActionGET`/laranova/`Returns the SPA viewPOST`/laranova/resolve`Resolves faker tags &amp; returns parsed requestGET`/laranova/history`Returns session history as JSONPOST`/laranova/history`Stores a history entryDELETE`/laranova/history`Clears all historyGET`/laranova/routes`Returns all scanned routes as JSONRoute names are prefixed with `laranova.*` (e.g., `laranova.index`, `laranova.resolve`).

---

Pre-scripts API
---------------

[](#pre-scripts-api)

Laranova implements a subset of the Postman `pm.*` API:

```
// Variables
pm.variables.get('key');
pm.variables.set('key', 'value');
pm.variables.unset('key');
pm.variables.clear();
pm.variables.replace('Hello {{name}}');

// Environment (localStorage-backed)
pm.environment.get('key');
pm.environment.set('key', 'value');
pm.environment.unset('key');
pm.environment.clear();

// HTTP requests within pre-scripts
const response = await pm.sendRequest({ method: 'GET', url: '...' });
// callback style:
pm.sendRequest({ ... }, (err, res) => { ... });
```

---

Development
-----------

[](#development)

```
composer install
```

No build step. The frontend uses Tailwind CSS and Alpine.js from CDN.

---

License
-------

[](#license)

MIT © [ug-code](https://github.com/ug-code/Laranova)

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance95

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

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

Unknown

Total

1

Last Release

31d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b5881dc9a8457d42217567d70b7680ea70edc788d3df775d4584f2361d2cc71d?d=identicon)[ug-code](/maintainers/ug-code)

---

Top Contributors

[![ug-code](https://avatars.githubusercontent.com/u/17679067?v=4)](https://github.com/ug-code "ug-code (26 commits)")

---

Tags

testingapilaraveldebugPostman

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ug-code-laranova/health.svg)

```
[![Health](https://phpackages.com/badges/ug-code-laranova/health.svg)](https://phpackages.com/packages/ug-code-laranova)
```

###  Alternatives

[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k41.3M38.3k](/packages/orchestra-testbench)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k13.5M59](/packages/knuckleswtf-scribe)[orchestra/workbench

Workbench Companion for Laravel Packages Development

8219.1M67](/packages/orchestra-workbench)[hotmeteor/spectator

Testing helpers for your OpenAPI spec

3041.5M1](/packages/hotmeteor-spectator)[guanguans/laravel-soar

SQL optimizer and rewriter for laravel. - laravel 的 SQL 优化器和重写器。

2248.3k](/packages/guanguans-laravel-soar)[spurwork/spectator

Testing helpers for your OpenAPI spec

3041.5k](/packages/spurwork-spectator)

PHPackages © 2026

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