mgahed / laravel-starter
This is my package laravel-starter
Package info
github.com/Mgahed/laravel-starter
Language:JavaScript
pkg:composer/mgahed/laravel-starter
Requires
- php: ^8.2
- dompdf/dompdf: ^2.0
- phpunit/phpunit: ^11.1
- spatie/laravel-package-tools: ^1.14.0
- spatie/laravel-translatable: ^6.11
Requires (Dev)
- larastan/larastan: ^3.1
- laravel/pint: ^1.17
- orchestra/testbench: ^v9.0.0
README
The package mgahed/laravel-starter allows you to easily use starter templates for your Laravel projects.
This is a PHP Package made to serve a plain Laravel project, This package add authentication and (view, edit, delete) profile using Saul theme. And you can easily customize and use the theme features in your project.
Warning
Please note that this package is still in development.
Configuration
You can customize the behavior of the authentication views by adding the following variables to your .env file:
REGISTRATION_ENABLED: Set tofalseto disable the "Create an account" link on the login page. Defaults totrue.SOCIAL_AUTH_ENABLED: Set tofalseto disable the social authentication buttons (e.g., Google, Facebook) on the login page. Defaults totrue.
Installation
composer require mgahed/laravel-starter
Publishing
assets
php artisan vendor:publish --tag="mgahed-laravel-starter-assets"
This will add folder assets to the public path in your Laravel project.
migrations
php artisan vendor:publish --tag="mgahed-laravel-starter-migrations"
seeders
php artisan vendor:publish --tag="mgahed-laravel-starter-seeders"
Running Migrations
php artisan migrate --path=database/migrations/mgahed-laravel-starter
Running Seeders
php artisan db:seed --class=Mgahed\LaravelStarter\Database\Seeders\MgahedStarterSitesSeeder
php artisan db:seed --class=Mgahed\LaravelStarter\Database\Seeders\MgahedStarterMenusSeeder
Features supported
- Authentication
- Profile (view, edit, delete)
- Easy translation system with multi-language support
- Automated translation job (see Translation Job Guide)
- Menu management system with multi-language support
- Saul Theme supported
- Easy to customize
- Supports
mcamara/laravel-localizationpackage- Run
composer require mcamara/laravel-localization - publish the config file
php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider" - See docs here
- Run
Menu Management System
The package includes a powerful menu management system that supports multi-language menu titles. Menu titles are stored as JSON in the database and automatically integrate with mcamara/laravel-localization package.
Creating a New Menu Item
Use the mgahed:menu command to create menu items with multi-language support:
php artisan mgahed:menu {slug} {route?} {parent?}
Parameters:
slug(required): The unique slug for the menu itemroute(optional): The route name or URL (defaults to "#")parent(optional): The parent menu slug (for creating sub-menus)
Interactive Multi-Language Input:
The command automatically detects available languages from your mcamara/laravel-localization configuration and prompts you to enter the menu title for each language:
# Create a simple menu item php artisan mgahed:menu products products.index # Create a parent menu php artisan mgahed:menu settings-parent # Create a child menu with parent php artisan mgahed:menu site-settings settings.index settings-parent
Example Output:
Please enter the menu title for each language:
Title for English (en): Products
Title for Arabic (ar): المنتجات
Title for German (de): Produkte
Successfully created menu with id: 5
+----------+------------+
| Language | Title |
+----------+------------+
| en | Products |
| ar | المنتجات |
| de | Produkte |
+----------+------------+
How it works:
- The command reads available languages from
config/laravellocalization.php - Prompts you to enter a title for each configured language
- Stores the titles as JSON in the database using
spatie/laravel-translatable - If no localization config is found, defaults to English and Arabic
Database Structure:
Menu titles are stored as JSON in the title column:
{
"en": "Dashboard",
"ar": "لوحة التحكم",
"de": "Armaturenbrett"
}
This allows seamless integration with all Mgahed packages that support multi-language features like mgahed/ai, mgahed/core, mgahed/one, etc.
Translation System
The package includes a powerful translation job that can automatically translate your content to multiple languages using Google Translate API. The job integrates seamlessly with mcamara/laravel-localization to support all configured locales.
Translation Management UI
The package now includes a user-friendly interface for managing translations within the admin panel. This UI provides the following features:
- Scan Translations: Discover new translation keys from your application and vendor packages.
- Translate All: Automatically translate all unpublished translations at once.
- Publish Translations: Publish all translations to the language files.
- Unpublished Items: View a list of translations that have not yet been published.
- Translation Editor: Edit translations for different languages in a user-friendly table.
- Google Translate Integration: Automatically translate individual keys using Google Translate.
- Global Translation: Apply a translation to all occurrences of a key across the system.
Translation Scanning
The translation scanner automatically discovers translation keys from your code and vendor packages.
for example if you have alot of packages under mgahed By default, it scans:
- Application views and controllers
- All vendor packages under the
mgahednamespace (configurable)
Scanning Multiple Vendor Packages
You can configure the package prefix to scan all packages under a specific vendor namespace. This is useful when you have multiple packages like mgahed/ai, mgahed/core, mgahed/one, etc.
Configuration:
Add to your .env file:
PACKAGES_PREFIX=mgahed
How it works:
The scanner will automatically discover and scan all packages under vendor/{PACKAGES_PREFIX}/:
- Scans
resources/viewsdirectory in each package - Scans
srcdirectory in each package - No need to manually configure each package
Example:
If you have the following packages:
vendor/mgahed/aivendor/mgahed/corevendor/mgahed/onevendor/mgahed/laravel-starter
All of them will be automatically scanned for translation keys without additional configuration.
Running the Scan:
use Mgahed\LaravelStarter\Jobs\ScanTranslationJob; // Dispatch the job to scan for translation keys ScanTranslationJob::dispatch();
Quick Start
use Mgahed\LaravelStarter\Jobs\TranslateJob; // Translate from English to all supported languages TranslateJob::dispatch('en'); // Translate from English to specific languages TranslateJob::dispatch('en', ['ar', 'fr', 'es']);
For detailed usage instructions, see the Translation Job Guide.
System Settings
A new System Settings page lets you manage the company data used in document headers, footers, and the HACCP cover.
- Route:
system-settings.index - Cover preview:
system-settings.cover - Cover PDF:
system-settings.cover?format=pdf(requiresdompdf/dompdf)
Seeders:
SystemSettingsMenuSeederadds the menu item undersettings-parent.SystemSettingsSeederinserts the default company settings.