PHPackages                             zerp/example-package - 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. zerp/example-package

ActiveLibrary

zerp/example-package
====================

Starter template for a Zerp module: copy it, rename ExamplePackage, and build.

v1.0.1(1mo ago)00MITPHPCI passing

Since Jul 2Pushed 1mo agoCompare

[ Source](https://github.com/zerp-pk/package-template)[ Packagist](https://packagist.org/packages/zerp/example-package)[ RSS](/packages/zerp-example-package/feed)WikiDiscussions master Synced 1w ago

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

Zerp Package Template
=====================

[](#zerp-package-template)

A starter template for building a new [Zerp](https://github.com/zerp-pk) ERP module: a Laravel package with a React/Inertia frontend, following the same structure as every other `zerp/*` module.

Use this template
-----------------

[](#use-this-template)

Click **"Use this template"** on GitHub (or `gh repo create my-module --template zerp-pk/package-template`) to create a new repo from this skeleton, then:

1. **Rename the placeholder.** Everything here uses `ExamplePackage` / `example-package` as a stand-in for your module name. Replace it everywhere: ```
    NAME=YourModuleName        # PascalCase, e.g. Invoicing
    SLUG=your-module-slug      # kebab-case, e.g. invoicing
    grep -rl 'ExamplePackage' . --include=*.php --include=*.json --include=*.ts --include=*.tsx | xargs sed -i "s/ExamplePackage/$NAME/g"
    grep -rl 'example-package' . --include=*.json | xargs sed -i "s/example-package/$SLUG/g"
    mv src/Http/Controllers/ExamplePackageItemController.php "src/Http/Controllers/${NAME}ItemController.php" 2>/dev/null
    mv src/Models/ExamplePackageItem.php "src/Models/${NAME}Item.php" 2>/dev/null
    mv src/Providers/ExamplePackageServiceProvider.php "src/Providers/${NAME}ServiceProvider.php" 2>/dev/null
    mv src/Database/Seeders/ExamplePackageDatabaseSeeder.php "src/Database/Seeders/${NAME}DatabaseSeeder.php" 2>/dev/null
    ```
2. Update `composer.json`'s `name` to `zerp/$SLUG` and `description`.
3. Update `module.json`'s `name`, `alias`, and `description`.
4. Build out your module's models, controllers, routes, and React pages under `src/`.
5. Validate before pushing: ```
    composer validate --strict
    find src -name '*.php' -print0 | xargs -0 -n1 php -l
    ```

Structure
---------

[](#structure)

This mirrors every other Zerp module package:

```
composer.json                          # PSR-4 autoload + Laravel package-discovery provider
module.json                            # module metadata (name, alias, pricing, priority)
src/
  Providers/                           # ServiceProvider + EventServiceProvider
  Http/Controllers/, Http/Requests/    # backend
  Models/                              # Eloquent models
  Database/Migrations/, Database/Seeders/
  Routes/web.php
  Resources/js/Pages/                  # Inertia pages
  Resources/js/menus/                  # company-menu.ts / superadmin-menu.ts sidebar entries

```

Installing into the main Zerp app
---------------------------------

[](#installing-into-the-main-zerp-app)

Add a local path repository while developing, then require it:

```
"repositories": [
    { "type": "path", "url": "../PHPPackages/your-module-slug", "options": { "symlink": true } }
]
```

```
composer require zerp/your-module-slug:@dev
```

Laravel's package auto-discovery picks up the service provider automatically - no manual registration needed.

License
-------

[](#license)

MIT - see [LICENSE](LICENSE).

###  Health Score

34

—

LowBetter than 74% of packages

Maintenance92

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

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.

###  Release Activity

Cadence

Every ~16 days

Total

2

Last Release

43d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1361450b81d8000640ce2030f715fbc192a64598a434f4ec6d42972dde2b4b50?d=identicon)[hafizmmoaz](/maintainers/hafizmmoaz)

---

Top Contributors

[![HafizMMoaz](https://avatars.githubusercontent.com/u/103947442?v=4)](https://github.com/HafizMMoaz "HafizMMoaz (12 commits)")

---

Tags

boilerplateinertiajslaravelmodule-templateopen-sourcephpreactscaffoldingstarter-templatezerp

### Embed Badge

![Health badge](/badges/zerp-example-package/health.svg)

```
[![Health](https://phpackages.com/badges/zerp-example-package/health.svg)](https://phpackages.com/packages/zerp-example-package)
```

PHPackages © 2026

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