Wire-Up is an opinionated, strict and fully tested Livewire Laravel Starter Kit.
- Multi-language Support - Easily build applications with localization and translations
- Real-time Interactivity - Dynamic content updates without page refreshes
- Server-side Rendering - Fast initial page loads with SEO-friendly content
- Modern UI Components - Built with Flux UI Pro for beautiful, accessible interfaces
- Developer Experience - Hot reloading, type-safe code, and comprehensive testing
- Responsive Design - Mobile-first approach with Tailwind CSS
- Security First - Laravel's built-in security features and best practices
- Laravel 13 - The PHP framework for web artisans
- Livewire 4 - Full-stack framework for Laravel
- Flux UI Pro - Beautiful UI components for Livewire
- Tailwind CSS v4 - Utility-first CSS framework
- Pest 4 - Delightful PHP testing framework
- PHPStan + PestStan - Static analysis for application and Pest tests
- Rector - Automated refactoring and code quality checks
- Laravel Pint - Code style fixer
- Vite - Fast build tool and dev server
- PHP 8.5+
- Node.js 22+ (see
.nvmrc) - Composer 2.0+
- MySQL/PostgreSQL/SQLite
- PHP
gdextension (image resizing/cropping) - Optional: PHP
imagickextension built withlibheif— enables HEIC/HEIF uploads (converted to JPEG on upload). Without it, HEIC uploads are rejected with a friendly message; all other image formats are unaffected.
-
Clone the repository
git clone https://github.com/your-username/wire-up.git cd wire-up -
Install PHP & Node.js dependencies and Environment setup
composer setup
Wire-Up uses Pest v4 for testing, including browser testing capabilities:
# Run the full quality pipeline (type coverage, tests, lint, static analysis)
composer test
# Run just the Pest test suite
composer test:unit
# Run static analysis only
composer test:typesThe project uses Laravel Pint + Prettier for formatting:
# Fix code style issues
vendor/bin/pint
npm run lint
# Check for style issues without fixing
composer test:lint# Build assets for production
npm run build
# Optimize application
php artisan config:cache
php artisan route:cache
php artisan view:cacheEnsure these environment variables are set in production:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
# Database configuration
DB_CONNECTION=mysql
DB_HOST=your-db-host
DB_DATABASE=your-database
DB_USERNAME=your-username
DB_PASSWORD=your-password
# Queue configuration (recommended)
QUEUE_CONNECTION=redisPexels media library integration: Add a free Pexels API key (from pexels.com/api) under Settings → Integrations in the admin to enable the integration. Editors can then search Pexels photos and videos directly from the media picker and import them into the library. When no key is set, the Pexels option is hidden. Per the Pexels API Guidelines, photographer attribution and a link back to Pexels are shown in the picker, and the photographer/source details are stored with each imported asset (in
media.metadata) so credit can be surfaced wherever the media is used.
Every public page renders a full discovery layer from the head component, and the site exposes machine-readable resources for crawlers and AI agents:
- Social & search meta - canonical URL, Open Graph, Twitter cards,
hreflangalternates (for multi-locale sites),theme-color, and JSON-LD structured data (Organization,WebSite,WebPage,BreadcrumbList). Descriptions fall back to a clean excerpt derived from a page's content blocks when no description is set. - Block-level structured data - Location, Team, Pricing, Video, Audio, and Gallery blocks emit
matching Schema.org types (
LocalBusiness,Person,Offer,VideoObject,AudioObject,ImageObject) into the page's JSON-LD. - Share images - each page's Open Graph image is used when set; otherwise the Default share image from Settings → Identity is used.
/sitemap.xml- dynamically lists published pages across their published locales withlastmodandhreflangalternates./llms.txt- a Markdown index of published pages (title, URL, description) for AI crawlers./llms-full.txt- the full plain-text content of every published page./robots.txt- dynamic; references the sitemap and reflects the indexing settings below.
Controlling indexing:
- Settings → Identity has a Discourage search engines toggle. When on, every page gets a
noindexrobots tag,robots.txtreturnsDisallow: /, images send anX-Robots-Tagheader, and/sitemap.xml+/llms.txtare emptied. - Each page's SEO Settings has its own Discourage search engines from indexing this page
toggle, which adds
noindexto that page only and drops it from the sitemap.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Laravel conventions and best practices
- Write tests for new features
- Use meaningful commit messages
- Ensure code passes all tests and style checks
This project is licensed under the MIT License - see the LICENSE file for details.
- Laravel team for the amazing framework
- Livewire team for making full-stack development delightful
- Flux UI for beautiful components
- Tailwind CSS for excellent utility classes
Built with ❤️ using Laravel + Livewire