# Basketloot

Basketloot is a Laravel 8 rewards platform for offerwalls, surveys, campaigns, cashouts, callback logs, support tickets, and admin management.

Production domain: `basketloot.com`

## Requirements

- PHP 8.0 or newer
- MySQL 5.7+/MariaDB 10.3+
- Composer 2
- Node.js only when rebuilding frontend assets
- HTTPS enabled on the domain

## Local Setup

```bash
composer install
npm install
npm run prod
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed --class=SiteSettingsSeeder
php artisan storage:link
php artisan serve
```

For optional local sample content, set `APP_ENV=local` and
`SEED_DEMO_DATA=true`, then run `php artisan db:seed`. Never enable that flag in
production.

## Production Notes

- Use `APP_ENV=production`.
- Use `APP_DEBUG=false`.
- Use `APP_URL=https://basketloot.com`.
- Point the domain document root to the `public` directory whenever cPanel allows it.
- Keep `.env`, `storage`, `vendor`, `database`, `app`, `config`, `routes`, and `resources` outside public web access.
- Run `php artisan optimize` after deployment.
- Run `php artisan app:production-check` on the target server and resolve every failure before opening traffic.
- Do not run `DemoExperienceSeeder` on a live database.

See [CPANEL_DEPLOYMENT.md](CPANEL_DEPLOYMENT.md) for Namecheap Stellar/cPanel deployment steps.

For architecture, runtime flows, security boundaries, and scheduled operations,
see [SYSTEM_OVERVIEW.md](SYSTEM_OVERVIEW.md).

For custom offers, provider feed testing/syncing, and signed postbacks, see
[docs/API.md](docs/API.md).
