# Faith & Future Summit — Laravel + Filament Starter

Ye package aap ek **fresh Laravel 11 project ke upar copy** karenge. Is me shamil hai:

- **Migrations** — `events`, `speakers`, `event_speaker` (pivot/relationship)
- **Models** — Event ↔ Speaker many-to-many relationship ke sath
- **Filament Admin Resources** — Events aur Speakers ka pura editable back office
- **Frontend (Blade)** — Home, Event inner page, Speakers listing, Speaker inner page
  (design tokens final HTML design se liye gaye hain: dark #131313, blue #2563ff, Sora/Hanken Grotesk fonts, Tailwind CDN — **koi Node/npm build nahi chahiye**)
- **Seeder** — Sep 2026 event + Feb 2026 past event + 2 speakers demo data

---

## STEP 1 — Local Setup (apne PC pe)

Requirements: PHP 8.2+, Composer, MySQL (XAMPP/Laragon chalega — **Laragon recommend hai**, sab kuch built-in hai).

```bash
# 1. Fresh Laravel project
composer create-project laravel/laravel ffs
cd ffs

# 2. Filament admin panel
composer require filament/filament:"^3.2"
php artisan filament:install --panels

# 3. Is package ki files project me copy karein
#    (app/, database/, resources/, routes/ ke folders merge kar dein —
#     routes/web.php replace ho jayegi, baqi files add hongi)

# 4. .env me database set karein
DB_DATABASE=ffs
DB_USERNAME=root
DB_PASSWORD=

# 5. Migrate + seed + storage link
php artisan migrate
php artisan db:seed --class=SummitSeeder
php artisan storage:link

# 6. Admin user banayein
php artisan make:filament-user

# 7. Run
php artisan serve
```

- Frontend: `http://localhost:8000`
- Admin panel: `http://localhost:8000/admin`

## STEP 2 — Admin Panel Kaise Use Hoga (client ke liye)

1. **Speakers** section me speaker add karein — name, photo (800×800), country, role, bio
2. **Events** section me event add karein — date, venue, banner, description, schedule
3. Event ke form me **"Speakers" dropdown** se speakers select karein — bas! Frontend pe event page pe wohi speakers show honge, aur speaker ke page pe uske events show honge. (Yehi client wali "IDs se call" requirement hai — pivot table `event_speaker` handle karti hai.)
4. **Past events** ke liye `Past Event?` toggle ON karein. Agar past event purane WordPress/Elementor page pe hai to `External URL` me uska link daal dein — homepage card us page pe le jayega.

## STEP 3 — cPanel Pe Deploy (PHP 8.2 / ea-php82)

**Pehle check karein:** cPanel → MultiPHP Manager → domain pe **ea-php82** select ho.

### Upload
1. Local pe `composer install --no-dev --optimize-autoloader` chala lein
2. Pura project (vendor folder samet) **zip** karein
3. cPanel File Manager se zip upload kar ke extract karein — recommended location: `/home/USERNAME/ffs` (public_html ke **bahar**, security ke liye)

### Document Root
**Option A (best):** Agar cPanel me addon/subdomain ka document root change ho sakta hai to use `/home/USERNAME/ffs/public` pe point kar dein. Done.

**Option B:** `ffs/public` ke andar ki sari files `public_html` me copy karein, phir `public_html/index.php` me ye do lines fix karein:
```php
require __DIR__.'/../ffs/vendor/autoload.php';
$app = require_once __DIR__.'/../ffs/bootstrap/app.php';
```

### Database
1. cPanel → MySQL Databases → DB + user banayein, user ko DB pe ALL PRIVILEGES dein
2. `.env` me credentials update karein (`DB_DATABASE=username_ffs` format hota hai)
3. Local DB ko phpMyAdmin se **export** kar ke cPanel phpMyAdmin me **import** kar dein
   (ya agar cPanel me **Terminal** hai to: `php artisan migrate --seed`)

### Storage Link (uploads ke liye zaroori)
Cpanel Terminal me:
```bash
cd ~/ffs && php artisan storage:link
```
Terminal nahi hai to ek dafa ye route bana ke browser se hit kar lein (kaam ho jane ke baad delete kar dein):
```php
Route::get('/make-link', fn() => Artisan::call('storage:link'));
```

### .env Production Settings
```
APP_ENV=production
APP_DEBUG=false
APP_URL=https://faithandfuturesummit.com
```

Phir cache:
```bash
php artisan config:cache && php artisan route:cache && php artisan view:cache
```

## Common cPanel Issues

| Masla | Hal |
|---|---|
| 500 error | `storage/` aur `bootstrap/cache/` folders ka permission 755/775 karein |
| Images nahi dikh rahi | `storage:link` nahi chala — upar wala step karein |
| "Class not found" | Local pe `composer dump-autoload` chala ke dobara upload |
| Old PHP version | MultiPHP Manager me ea-php82 select karein |
| CSS nahi aa rahi | Tailwind CDN hai — internet/firewall check karein; production me chahein to compiled CSS bhi laga sakte hain |

## File Map

```
app/Models/Event.php                    → Event model + speakers() relationship
app/Models/Speaker.php                  → Speaker model + events() relationship
app/Filament/Resources/EventResource.php   → Admin: Events CRUD + speaker attach
app/Filament/Resources/SpeakerResource.php → Admin: Speakers CRUD
app/Http/Controllers/SiteController.php    → Frontend pages
routes/web.php                          → /  /events/{slug}  /speakers  /speakers/{slug}
resources/views/layouts/site.blade.php  → Master layout (nav, footer, design tokens)
resources/views/home.blade.php          → Homepage
resources/views/events/show.blade.php   → Event inner page
resources/views/speakers/index.blade.php→ Speakers listing
resources/views/speakers/show.blade.php → Speaker inner page
database/migrations/*                   → Tables
database/seeders/SummitSeeder.php       → Demo data
```
