Extends the official Laravel Livewire starter kit while retaining the original Livewire stack
laravel-starter-kit-livewire — Laravel Starter Template
By marekmiklusek
An enhanced version of the official Laravel Livewire starter kit, adding database backups, Telegram logging, and a code quality and testing toolchain.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Pre-installs marekmiklusek/database-backup, supporting automatic MySQL backups to local or Google Drive with a 14-day retention policy
Pre-installs marekmiklusek/telegram-logger to push logs and exceptions to Telegram in real time, sending only error level and above by default
Controls user registration and two-factor authentication via environment variable switches; when disabled, the corresponding routes return 404 and entries are hidden
Built-in English and Czech translations, switchable via APP_LOCALE
composer lint and composer test cover Rector, Pint, Prettier, PHPStan, Pest, and type and code coverage checks
Template Details
This is the Laravel Livewire starter kit maintained by marekmiklusek, which adds development workflow and code quality tools on top of the official Laravel Livewire starter kit. In addition to Laravel's default Livewire stack, the project pre-installs two packages by the author: marekmiklusek/database-backup for backing up MySQL to local storage or Google Drive, and marekmiklusek/telegram-logger for pushing logs and exceptions to Telegram in real time.
Installation creates the project via composer create-project, then runs composer setup to install dependencies, generate .env and .env.production, generate the application key, run database migrations, install NPM dependencies, and build frontend assets. During development, composer dev starts the Laravel development server, queue listener, Pail log viewer, and Vite development server simultaneously.
Configuration provides several switches: FORTIFY_REGISTRATION_ENABLED controls user self-registration; when disabled, the /register route returns 404 and the registration link on the login page is hidden. FORTIFY_2FA_ENABLED controls two-factor authentication; when disabled, the related routes and settings entry are removed. For languages, English and Czech translations are built in, switchable via APP_LOCALE. Database backups are scheduled daily at 02:00 by default, stored on the local disk at storage/app/private/database-backups, and retained for 14 days. Telegram logging sends only error level and above by default, and requires both enabling the switch and providing a bot token and chat id to take effect.
For code quality, composer lint runs Rector, Laravel Pint, and Prettier in sequence; composer test includes type coverage, code coverage, Pest unit and feature tests, code style checks, and PHPStan static analysis. The project also includes Pest 4 browser testing capabilities, which require installing Playwright separately. The repository uses the MIT license, but third-party assets such as demo images, fonts, and icons, as well as external services like domains, hosting, and databases, must be checked and paid for separately.
Is it right for your project?
Use Cases
- Quickly building a new project with authentication and settings pages based on Laravel Livewire
- Wanting the project to include scheduled database backups and Telegram exception notifications out of the box
- Needing to integrate unified code formatting, static analysis, and testing pipelines early in the project
- Projects targeting English and Czech users that require multilingual interfaces and validation messages
Suitable For
- Teams or individual developers building web applications with Laravel and Livewire
- Projects needing out-of-the-box authentication, registration switches, and two-factor authentication configuration
- Developers who want database backups and error log notifications included in the project's default configuration
- Projects that value consistent code style and test coverage
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Create the project with composer create-project marekmiklusek/laravel-starter-kit-livewire --prefer-dist, then run composer setup to complete initialization
- 2
Requires PHP, Composer, Node.js, and NPM, as well as MySQL or a database of your choice; configure the database connection in .env
- 3
For Pest browser testing, additionally run npm install playwright and npx playwright install to install browser binaries
- 4
Telegram logging requires setting TELEGRAM_LOGGER_ENABLED, TELEGRAM_BOT_TOKEN, and TELEGRAM_CHAT_ID in .env to take effect
- 5
config/essentials.php sets models to unguarded by default; you can switch to protected models using $fillable as needed
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- You may use, modify, commercially use, and distribute the code of this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Google Drive backups require configuring the google disk and setting storage.disk yourself; this is an external service integration and requires preparing a Google account and credentials.
- The Telegram logging feature requires applying for and filling in TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID yourself, and depends on the external Telegram service.
- Browser testing requires separately installing Playwright and its browser binaries; it is not included by default.
- You need to provide your own MySQL or other database service; database hosting and operating costs are borne by the user.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
To back up to Google Drive instead of (or alongside) local storage, add a `google` disk to `config/filesystems.php` and set `storage.disk`.
Original README
Add your bot credentials to `.env` (the keys are already present in `.env.example`):
Original README
If you plan to use Pest's browser testing capabilities, install Playwright:
Original README
https://github.com/marekmiklusek/laravel-starter-kit-livewire/blob/main/LICENSEhttps://github.com/marekmiklusek/laravel-starter-kit-livewire/blob/main/README.mdMySQL (or your preferred database)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 83 / 100
- Technologies
- Laravel
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-30
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: d82692f97948e40a6cf0e5afca5bb9af70c6963dff15d554a304dc06f56c0193
2026-10-02T14:41:33.240Z
Source file / repository# 🚀 Laravel Livewire Starter Kit
[Laravel's official Livewire starter kit](https://laravel.com/docs/12.x/starter-kits#livewire) enhanced with development workflow tools, code quality standards, and additional developer experience improvements from [laravel-starter-kit](https://github.com/marekmiklusek/laravel-starter-kit). ✨
## 📦 Bundled Packages
Beyond Laravel's default Livewire stack, this kit ships pre-configured with:
- [marekmiklusek/database-backup](https://github.com/marekmiklusek/database-backup): automated MySQL backups to local storage or Google Drive ([setup](#-database-backups))
- [marekmiklusek/telegram-logger](https://github.com/marekmiklusek/telegram-logger): real-time log and exception delivery to Telegram ([setup](#-telegram-error-logging))
## 📋 Requirements
- PHP: see the `php` constraint in [`composer.json`](composer.json)
- Composer
- Node.js & NPM
- MySQL (or your preferred database)
## 🚀 Quick Start
> [!NOTE]
> - In `config/database.php`, `'engine' => 'InnoDB',` is used as the default for both `mysql` and `mariadb` connections.
> - In `config/essentials.php`, models are unguarded by default via `Unguard::class => true`. This allows mass assignment without explicitly defining `$fillable` properties. You can change this setting if you prefer to use guarded models.
### 📦 Installation
Create a new Laravel Livewire project:
```bash
composer create-project marekmiklusek/laravel-starter-kit-livewire --prefer-dist app-name
```
Run the automated setup script:
```bash
composer setup
```
This command will:
1. Install PHP dependencies via Composer
2. Create `.env` file from `.env.example` (if not exists)
3. Create `.env.production` file from `.env.example` (if not exists)
4. Generate application key
5. Run database migrations
6. Install NPM dependencies
7. Build frontend assets
### ⚙️ Additional Setup
#### 🔧 Environment Configuration
After running `composer setup`, configure your `.env` file with your database credentials:
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
```
#### 🌐 Browser Testing Setup (Optional)
If you plan to use Pest's browser testing capabilities, install Playwright:
```bash
npm install playwright
npx playwright install
```
This installs the necessary browser binaries for running browser tests.
#### 🌍 Localization
The starter kit ships with English (`en`) and Czech (`cs`) translations. Translation files live in the `lang/` directory:
```
lang/
├── en.json # UI strings (English)
├── cs.json # UI strings (Czech)
├── en/
│ ├── auth.php # Authentication messages
│ ├── passwords.php # Password reset messages
│ ├── pagination.php # Pagination labels
│ └── validation.php # Validation messages
└── cs/
├── auth.php
├── passwords.php
├── pagination.php
└── validation.php
```
Switch the active language by setting `APP_LOCALE` in your `.env` file:
```env
APP_LOCALE=cs
APP_FALLBACK_LOCALE=en
```
To add another language, create a new `lang/{locale}.json` for UI strings and a matching `lang/{locale}/` directory for the framework files.
#### 🔐 Enable / Disable Registration
User self-registration is controlled by a single switch via the `FORTIFY_REGISTRATION_ENABLED` env variable:
```env
FORTIFY_REGISTRATION_ENABLED=true # default, registration is open
FORTIFY_REGISTRATION_ENABLED=false # disable registration
```
When set to `false`:
- The `/register` route is not registered and returns **404**
- The "Don't have an account? Sign up" link on the login page is hidden automatically
The flag is also exposed as `config()->boolean('fortify.registration_enabled')` if you need to read it elsewhere in the application.
#### 🔑 Enable / Disable Two-Factor Authentication
Two-factor authentication is controlled by a single switch via the `FORTIFY_2FA_ENABLED` env variable:
```env
FORTIFY_2FA_ENABLED=true # default, 2FA is available
FORTIFY_2FA_ENABLED=false # disable 2FA
```
When set to `false`:
- The `/settings/two-factor` route is not registered and returns **404**
- The "Two-Factor Auth" link in the settings sidebar is hidden automatically
- Fortify's `/two-factor-*` endpoints (challenge, enable, confirm, recovery codes) are not registered
The `TwoFactorAuthenticatable` trait stays on the `User` model. It is inert without the feature registered, and removing it would break factories that fill 2FA columns. Tests always run with 2FA enabled regardless of `.env` (forced via `phpunit.xml`), so the 100% coverage gate is not affected by toggling this flag locally.
#### 💾 Database Backups
The starter kit ships with [marekmiklusek/database-backup](https://github.com/marekmiklusek/database-backup) for automated MySQL backups. The config is already published to `config/database-backup.php`, so no `vendor:publish` is needed.
Backups are stored locally on the `local` disk in `storage/app/private/database-backups`, and old backups are cleaned up automatically after **14 days**.
A daily backup is already scheduled in `routes/console.php`:
```php
Schedule::command('db-backup:run')
->dailyAt('02:00')
->onOneServer()
->runInBackground();
```
Run it manually at any time:
```bash
php artisan db-backup:run # create a backup
php artisan db-backup:cleanup # delete backups older than the retention period
```
Adjust the disk, directory, filename pattern, retention period, and mail notifications in `config/database-backup.php`. To back up to Google Drive instead of (or alongside) local storage, add a `google` disk to `config/filesystems.php` and set `storage.disk`. See the [package README](https://github.com/marekmiklusek/database-backup) for the full Google Drive setup guide.
#### 📢 Telegram Error Logging
The starter kit ships with [marekmiklusek/telegram-logger](https://github.com/marekmiklusek/telegram-logger), which forwards Laravel log messages and exceptions to a Telegram chat in real time. The config is already published to `config/telegram-logger.php`.
Add your bot credentials to `.env` (the keys are already present in `.env.example`):
```env
TELEGRAM_LOGGER_ENABLED=true # default, set to false to disable the logger entirely
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
```
No logging channel setup is required. The package hooks into Laravel's log events automatically, so ordinary `Log::error()` calls and unhandled exceptions are delivered:
```php
use Illuminate\Support\Facades\Log;
Log::error('User not found', ['user_id' => 42]);
```
By default only `error` and above are sent. Change the threshold or enable silent notifications in `config/telegram-logger.php`:
```php
'level' => 'error', // debug | info | warning | error | critical
'silent_notification' => false, // true = no sound/vibration
'is_enabled' => env('TELEGRAM_LOGGER_ENABLED', true),
```
> [!TIP]
> The logger stays idle unless it is enabled **and** both credentials are set, so leaving `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` empty in local development sends nothing. Use `TELEGRAM_LOGGER_ENABLED=false` to switch it off per environment without clearing the credentials.
#### 🚀 Production Environment
The setup script automatically creates a `.env.production` file. Configure it with production-specific settings:
```bash
# Edit .env.production with your production settings
```
Configure production environment variables:
- Set `APP_ENV=production`
- Set `APP_DEBUG=false`
- Configure production database credentials
- Set secure `APP_KEY` (generated during setup)
- Configure mail, cache, queue, and session drivers
- Set proper logging channels
## 💻 Development
### 🖥️ Running the Development Server
Start all development services concurrently:
```bash
composer dev
```
This starts:
- **Laravel development server** (port 8000) - Your Livewire application
- **Queue listener** - Background job processing
- **Log viewer (Pail)** - Real-time log monitoring
- **Vite dev server** - Hot Module Replacement for CSS/JS
Your Livewire application will be available at `http://localhost:8000` 🎉
## 🔍 Code Quality
### 🧹 Linting & Formatting
Fix code style issues:
```bash
composer lint
```
This runs:
- Rector (PHP refactoring)
- Laravel Pint (PHP formatting)
- Prettier (frontend formatting)
### 🧪 Testing
Run the full test suite:
```bash
composer test
```
This includes:
- Type coverage (100% minimum)
- Code coverage (100% required)
- Unit and feature tests (Pest)
- Code style validation
- Static analysis (PHPStan)
### 🌐 Browser Testing
This starter kit includes Pest 4 with browser testing capabilities. Create browser tests in `tests/Browser/`:
```php
it('displays the login page', function () {
$page = visit('/login');
$page->assertSee('Log in')
->assertNoJavascriptErrors();
});
```
### 🧪 Testing Livewire Components
Test your Livewire components with Pest's built-in Livewire testing:
```php
use Livewire\Livewire;
it('can update user profile', function () {
$user = User::factory()->create();
Livewire::actingAs($user)
->test(\App\Livewire\Settings\Profile::class)
->set('name', 'New Name')
->call('save')
->assertHasNoErrors()
->assertDispatched('profile-updated');
expect($user->fresh()->name)->toBe('New Name');
});
```
## 📜 Available Scripts
### 🎼 Composer Scripts
- `composer setup` - Initial project setup
- `composer dev` - Run all development services
- `composer lint` - Fix code style issues
- `composer test` - Run full test suite
- `composer test:unit` - Run Pest tests only
- `composer test:types` - Run PHPStan analysis
- `composer test:type-coverage` - Check type coverage
- `composer test:lint` - Validate code style
- `composer update:requirements` - Update all dependencies
### 📦 NPM Scripts
- `npm run dev` - Start Vite dev server
- `npm run build` - Build for production
- `npm run lint` - Format frontend code
- `npm run test:lint` - Check frontend code style
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Explore similar templates
Compare previews and descriptions within the same stack and category.

sage
Sage is a WordPress starter theme maintained by Roots, using Laravel Blade components and templates, Vite builds, Tailwind CSS, and built-in block editor support.
Laravel · Starter

wave
Wave is an open-source SaaS starter kit built on Laravel and released under the MIT license.
Laravel · SaaS

filament-starter
A Laravel TALL stack starter template maintained by Log1x, with a preconfigured Filament admin panel and plugins including Curator, Gravatar, Exceptions, Jobs Monitor, Breezy, Peek, and Logger.
Laravel · Starter

electrik
Electrik is a Laravel SaaS starter kit installed as a Composer package, with authentication, teams, Stripe subscription billing, and the Slate 3 interface under the Electrik\ namespace rather than copied into App\.
Laravel · SaaS

php-saas
php-saas is a Laravel-based SaaS starter positioned as an everything-included kit. It generates new projects via a global Composer command and includes authentication with two-factor, API tokens, Stripe and Paddle billing, and project, team, and organization management.
Laravel · SaaS

filament-jetstream
A Laravel starter kit that implements Jetstream-like authentication and account features using Filament's native panels and components. It includes login, registration, two-factor authentication, session management, user profiles, and optional teams and API tokens.
Laravel · Starter
