# StarMeet - Celebrity Meet & Greet Booking Agency

A complete Laravel 11 web application for booking celebrity meet & greet sessions, featuring Fan ID cards, manual payment system, and modern UI.

![StarMeet Logo](public/images/logo.png)

## Features

### Core Features
- **Celebrity Profiles** - Browse detailed profiles with photos, bios, pricing, and availability
- **Booking System** - Book meet & greet sessions with date/time selection
- **Fan ID Cards** - Generate personalized Fan ID cards with 8 unique designs
- **Manual Payment** - Agency-configured payment methods with proof upload
- **Admin Dashboard** - Manage celebrities, bookings, payments, and analytics
- **Search & Filter** - Find celebrities by name, category, or price
- **Reviews System** - Rate and review celebrity experiences

### Fan ID Card Features
- 8 customizable card designs (Classic, Sunset, Ocean, Forest, Galaxy, Gold, Neon, Minimal)
- Tier system: Bronze, Silver, Gold, Platinum, Diamond
- Share and print functionality
- Digital card generation

### Payment System
- Multiple payment methods (Bank Transfer, PayPal, Venmo, Cash App, Zelle)
- Payment proof upload with image verification
- Admin verification workflow
- Payment status tracking

## Requirements

- PHP 8.2 or higher
- MySQL 5.7+ or MariaDB 10.3+
- Composer 2.x
- Node.js 18+ (for asset compilation)

## XAMPP Installation

### Prerequisites
- XAMPP with PHP 8.2+ and MySQL
- Composer

### Quick Setup

1. **Extract to htdocs**
   ```
   Extract starmeet-laravel.zip to C:\xampp\htdocs\starmeet
   ```

2. **Start XAMPP Services**
   - Open XAMPP Control Panel
   - Start Apache and MySQL

3. **Create Database**
   - Open http://localhost/phpmyadmin
   - Create database: `starmeet`

4. **Run Setup Script**
   ```
   Double-click: setup-xampp.bat
   ```
   Or manually:
   ```bash
   cd C:\xampp\htdocs\starmeet
   composer install
   copy .env.xampp .env
   php artisan key:generate
   php artisan migrate --seed
   php artisan storage:link
   ```

5. **Access Application**
   ```
   http://localhost/starmeet
   ```

### Default Credentials

| Role | Email | Password |
|------|-------|----------|
| Admin | admin@starmeet.com | password |
| User | user@example.com | password |

## Laravel 11 Upgrade Notes

This application has been upgraded to Laravel 11 with the following key changes:

### Key Changes in Laravel 11
- **PHP 8.2+ Required** - Minimum PHP version increased
- **Slimmed Directory Structure** - Fewer default configuration files
- **New Bootstrap Structure** - Updated `bootstrap/app.php` format
- **Model Casts as Methods** - `casts()` method instead of `$casts` property
- **Updated Middleware** - New middleware registration approach
- **Simplified Configuration** - Config files are now optional

### File Structure Updates
```
starmeet/
├── app/
│   ├── Http/
│   │   └── Controllers/
│   │       ├── AdminController.php
│   │       ├── BookingController.php
│   │       ├── CelebrityController.php
│   │       ├── FanIdController.php
│   │       ├── HomeController.php
│   │       ├── PaymentController.php
│   │       └── Auth/
│   ├── Models/
│   │   ├── Booking.php
│   │   ├── Celebrity.php
│   │   ├── FanId.php
│   │   ├── PaymentSetting.php
│   │   ├── Review.php
│   │   └── User.php
│   └── ...
├── bootstrap/
│   ├── app.php          # New Laravel 11 format
│   └── providers.php    # Service providers list
├── config/              # Minimal config files
├── database/
│   └── migrations/      # Updated migrations
├── resources/
│   └── views/
├── routes/
│   ├── web.php
│   ├── api.php
│   └── console.php
└── public/
```

## Project Structure

```
starmeet/
├── app/
│   ├── Http/
│   │   └── Controllers/
│   │       ├── AdminController.php
│   │       ├── BookingController.php
│   │       ├── CelebrityController.php
│   │       ├── FanIdController.php
│   │       ├── HomeController.php
│   │       ├── PaymentController.php
│   │       └── Auth/
│   ├── Models/
│   │   ├── Booking.php
│   │   ├── Celebrity.php
│   │   ├── Category.php
│   │   ├── FanId.php
│   │   ├── PaymentSetting.php
│   │   ├── Review.php
│   │   └── User.php
│   └── ...
├── database/
│   └── migrations/
│       ├── 0001_01_01_000000_create_users_table.php
│       ├── 0001_01_01_000001_create_cache_table.php
│       ├── 0001_01_01_000002_create_jobs_table.php
│       ├── 2024_01_15_000003_create_categories_table.php
│       ├── 2024_01_15_000004_create_celebrities_table.php
│       ├── 2024_01_15_000005_create_bookings_table.php
│       ├── 2024_01_15_000006_create_reviews_table.php
│       ├── 2024_01_15_000007_create_fan_ids_table.php
│       └── 2024_01_15_000008_create_payment_settings_table.php
├── resources/
│   └── views/
│       ├── admin/
│       ├── auth/
│       ├── bookings/
│       ├── celebrities/
│       ├── fanid/
│       ├── home/
│       ├── layouts/
│       └── payments/
├── routes/
│   ├── web.php
│   ├── api.php
│   └── console.php
└── public/
    └── images/
```

## Configuration

### Payment Settings
Configure payment methods in Admin Dashboard > Payment Settings:
- Bank Transfer Details
- PayPal Email
- Venmo Handle
- Cash App Tag
- Zelle Information

### Email Configuration
Edit `.env` file for email notifications:
```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@starmeet.com
```

## Screenshots

### Home Page
![Home](screenshots/home.png)

### Celebrity Profile
![Celebrity](screenshots/celebrity.png)

### Fan ID Card
![Fan ID](screenshots/fanid.png)

### Admin Dashboard
![Admin](screenshots/admin.png)

## API Endpoints

### Public Routes
- `GET /` - Home page
- `GET /celebrities` - Browse celebrities
- `GET /celebrities/{id}` - Celebrity profile
- `GET /categories/{id}` - Filter by category

### Authenticated Routes
- `GET /bookings/create/{celebrity}` - Create booking
- `POST /bookings` - Store booking
- `GET /fanid` - Fan ID dashboard
- `GET /fanid/card` - View Fan ID card
- `GET /payments/instructions/{booking}` - Payment instructions
- `POST /payments/upload/{booking}` - Upload payment proof

### Admin Routes
- `GET /admin/dashboard` - Admin dashboard
- `GET /admin/celebrities` - Manage celebrities
- `GET /admin/bookings` - Manage bookings
- `GET /admin/payments` - Verify payments
- `GET /admin/payment-settings` - Configure payments

## Development

### Run Development Server
```bash
php artisan serve
```

### Compile Assets
```bash
npm install
npm run dev
```

### Run Tests
```bash
php artisan test
```

## Troubleshooting

### Common Issues

**1. "Failed to open stream: Permission denied"**
```bash
# Windows (Run as Administrator)
icacls storage /grant Everyone:F /T
icacls bootstrap/cache /grant Everyone:F /T
```

**2. "SQLSTATE[HY000] [1049] Unknown database"**
- Create database manually in phpMyAdmin
- Run migrations again: `php artisan migrate --seed`

**3. "The requested URL was not found"**
- Enable mod_rewrite in Apache
- Check .htaccess file exists in public folder

**4. "Class not found" errors**
```bash
composer dump-autoload
```

**5. PHP 8.2 Required Error**
- Ensure XAMPP is using PHP 8.2+
- Check PHP version: `php -v`

## Laravel 11 Migration Guide

If upgrading from Laravel 10:

1. Update `composer.json` dependencies
2. Update `bootstrap/app.php` to new format
3. Create `bootstrap/providers.php`
4. Update models to use `casts()` method
5. Update middleware to use new return types
6. Update routes structure
7. Run `composer update`

## License

This project is open-source and available under the MIT License.

## Support

For support, email support@starmeet.com or open an issue on GitHub.

---

Built with Laravel 11 and XAMPP Support
