# Spatie & SEO Packages Setup

> **Date:** March 20, 2026  
> **Laravel:** 12.x | **PHP:** 8.3.29

## 📦 Instalirani Paketi

| Package | Version | Purpose |
|---------|---------|---------|
| `spatie/laravel-medialibrary` | 11.21.0 | Media file management |
| `spatie/laravel-honeypot` | 4.7.1 | Spam protection |
| `spatie/laravel-sitemap` | 8.0.0 | Dynamic sitemap |
| `spatie/schema-org` | 4.0.0 | Structured data |
| `ralphjsmit/laravel-seo` | 1.8.0 | SEO meta tags |
| `spatie/array-to-xml` | 3.4.4 | XML export |

## ⚙️ Konfiguracija

**Config files:**
- `config/media-library.php` ✅
- `config/honeypot.php` ✅
- `config/sitemap.php` ✅
- `config/seo.php` ✅

**Migration:**
- `create_media_table` ✅ (executed)

**Models s MediaLibrary:**
- `MenuItem` - implements HasMedia
- `MenuCategory` - implements HasMedia

## 🔍 SEO Setup

**Layout:** `resources/views/layouts/bistro.blade.php`

```blade
<head>
    {!! seo() !!}
    
    <!-- Google Analytics 4 -->
    @if(env('GOOGLE_ANALYTICS_ID'))
    <script async src="https://www.googletagmanager.com/gtag/js?id={{ env('GOOGLE_ANALYTICS_ID') }}"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', '{{ env('GOOGLE_ANALYTICS_ID') }}');
    </script>
    @endif
</head>
```

**Google Analytics Setup:**
1. Kreiraj GA4 property na [Google Analytics](https://analytics.google.com)
2. Kopiraj Measurement ID (format: `G-XXXXXXXXXX`)
3. Dodaj u `.env`: `GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX`

**Usage in controller:**
```php
use RalphJSmit\Laravel\SEO\Support\SEOData;

$seoData = new SEOData(
    title: 'Krcma Petrić - Autentična hrvatska kuhinja',
    description: 'Dobrodošli u Krcmu Petrić...',
    image: asset('images/og-image.jpg'),
);

return view('pages.home')->with('seoData', $seoData);
```

## 🗺️ Sitemap

**Route:** `GET /sitemap`  
**Controller:** `SitemapController`

**Pristup:** `https://krcma-petric.com/sitemap`

Uključuje:
- Static pages (home, menu, contact...)
- Menu categories
- Menu items

## 🌐 XML Export

**Routes:**
- `GET /api/xml/export` - Menu items
- `GET /api/xml/export/categories` - Categories  
- `GET /api/xml/export/daily-menus` - Daily menus

**Controller:** `Api\XmlExportController`

## 🍯 Honeypot

**Usage u formama:**
```blade
<form wire:submit="submit">
    <x-honeypot />
    <!-- form fields -->
</form>
```

## 📸 MediaLibrary

**Usage:**
```php
// Add image
$menuItem->addMedia($request->file('image'))
    ->toMediaCollection('images');

// Get image URL
$url = $menuItem->getFirstMediaUrl('images');
```

## 🤖 Artisan Command

```bash
php artisan app:setup-packages
```

Idempotentno - sigurno za ponovno pokretanje.

## 🔗 Routes

| Route | Description |
|-------|-------------|
| `/sitemap` | Sitemap za Google |
| `/api/xml/export` | XML export menija |
| `/api/xml/export/categories` | XML kategorije |
| `/api/xml/export/daily-menus` | XML dnevni meni |

## 📊 Google Analytics

**Tracking:** Google Analytics 4 (GA4)  
**Lokacija:** `resources/views/layouts/bistro.blade.php`

**Setup:**
1. Kreiraj property na https://analytics.google.com  
2. Kopiraj Measurement ID (`G-XXXXXXXXXX`)  
3. Dodaj u `.env`: `GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX`  
4. Refresh stranice - tracking automatski aktivan

**Provjera:**
- Otvori stranicu  
- Google Analytics → Real-time → Users  
- Trebaš vidjeti aktivnog korisnika

---

**Setup completed:** March 20, 2026  
**Files:** `routes/web.php`, `app/Http/Controllers/{SitemapController, Api/XmlExportController}`
