- What Laravel versions does this package support?
- This package is built for **Laravel 13.x** only. It leverages the latest Laravel features and dependencies, so it won’t work with older versions like Laravel 10 or 11. Always check the repository for updates if you need compatibility with future Laravel releases.
- How do I install and set up this starter in a new Laravel project?
- Run `composer create-project nasirkhan/laravel-starter your-project-name` to generate a fresh project. Then execute `php artisan starter:install` to configure the environment, run migrations, and set up assets. Use `--skip-db` if you need to avoid conflicts with existing database schemas.
- Can I use this starter for a brownfield Laravel project (extending an existing app)?
- Yes, but with caution. The package includes default database schemas (users, roles, posts) and migrations. Use the `--skip-db` flag during installation to avoid conflicts, then manually merge or override the provided modules. Test thoroughly to ensure compatibility with your existing codebase.
- What’s the difference between the frontend and backend in this starter?
- The frontend and backend are **completely separated**—they use distinct routes, controllers, and themes. The backend (admin panel) is built with Livewire for dynamic interactions, while the frontend is optimized for static or lightweight content. This separation makes it easier to customize or replace either layer independently.
- Does this package include authentication and authorization out of the box?
- Yes, it includes **pre-built authentication (login, registration, password reset)** and **role-based authorization** using Laravel’s built-in features. The admin backend has role management tools, and you can extend permissions using Laravel’s `Gate` or `Policy` classes. No need for third-party packages like Sanctum or Breeze unless you want additional features.
- How do I create a custom module in this starter?
- Use the Artisan command `php artisan module:build MODULE_NAME` to scaffold a new module with its own routes, controllers, views, and migrations. The generated module follows the starter’s modular structure, so you can reuse it across projects. Use `--force` to overwrite an existing module if needed.
- Is Livewire required, or can I use Inertia.js or Alpine.js instead?
- Livewire is **heavily used** in the admin backend for dynamic interactions (e.g., tables, forms). While you can replace Livewire components with Alpine.js or Inertia.js, it requires manual refactoring. The starter is optimized for Livewire, so teams unfamiliar with it may face a learning curve or performance trade-offs.
- What are the performance implications of using CoreUI and Tailwind in production?
- The frontend assets (CoreUI + Tailwind) add **~500KB+** to your bundle size, which can impact **LCP (Largest Contentful Paint)**. To mitigate this, extract critical CSS/JS, use Laravel Mix/PurgeCSS to remove unused styles, or consider a lighter theme. For high-performance apps, evaluate alternatives like Bootstrap or a custom CSS framework.
- How do I disable or remove unused modules (e.g., backup, log viewer) for security?
- Unused modules can be **disabled** by removing their service provider bindings in `config/app.php` and deleting their routes from `routes/web.php` or `routes/admin.php`. For a cleaner approach, fork the package and remove the module’s files entirely. Always test thoroughly after modifications to avoid breaking dependencies.
- What’s the backup and log viewer feature like, and how do I configure it?
- The starter includes a **built-in backup system** (using Laravel Backup) and a **log viewer** for admin panels. Backups are stored in `storage/app/backups` by default, and you can configure schedules in `.env` (e.g., `BACKUP_DISK=s3`). The log viewer displays Laravel logs in a user-friendly interface, but ensure you restrict access to authorized roles only.