Custom Add-on Development
Larapen add-ons follow a Laravel package-like structure. Here's how to create one from scratch.
Directory Structure
extensions/addons/my-addon/
├── addon.json
├── config/my-addon.php
├── src/
│ ├── MyAddonServiceProvider.php
│ ├── Http/Controllers/
│ ├── Models/
│ ├── Services/
│ └── Routes/
├── resources/views/
├── resources/lang/
└── database/migrations/
addon.json
The manifest file defines your add-on's metadata, dependencies, and provided features (admin menu entries, menu item types, etc.).
ServiceProvider
Your service provider registers routes, migrations, views, translations, and config. It extends the base Illuminate\Support\ServiceProvider.
Database Tables
Important: All add-on tables must be prefixed with the add-on name (e.g., my_addon_items) to prevent naming collisions.
Views
Add-on views can be overridden by themes. Place your default views in resources/views/ and they'll be resolved with theme override support automatically.