Skip to content

raz-iacob/wire-up

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

141 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wire-Up Logo

Wire-Up is an opinionated, strict and fully tested Livewire Laravel Starter Kit.


Key Features

  • 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

Built With

Requirements

  • PHP 8.5+
  • Node.js 22+ (see .nvmrc)
  • Composer 2.0+
  • MySQL/PostgreSQL/SQLite
  • PHP gd extension (image resizing/cropping)
  • Optional: PHP imagick extension built with libheif — 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.

Getting Started

Installation

  1. Clone the repository

    git clone https://github.com/your-username/wire-up.git
    cd wire-up
  2. Install PHP & Node.js dependencies and Environment setup

    composer setup

Testing

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:types

Code Style

The 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

Deployment

Production Build

# Build assets for production
npm run build

# Optimize application
php artisan config:cache
php artisan route:cache
php artisan view:cache

Environment Configuration

Ensure 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=redis

Pexels 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.

SEO & AI discoverability

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, hreflang alternates (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 with lastmod and hreflang alternates.
  • /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 noindex robots tag, robots.txt returns Disallow: /, images send an X-Robots-Tag header, and /sitemap.xml + /llms.txt are emptied.
  • Each page's SEO Settings has its own Discourage search engines from indexing this page toggle, which adds noindex to that page only and drops it from the sitemap.

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow Laravel conventions and best practices
  • Write tests for new features
  • Use meaningful commit messages
  • Ensure code passes all tests and style checks

Documentation

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • 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

About

A modern Laravel + Livewire framework for building dynamic content-driven websites.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors