PAYMENT_WEBHOOK_SECRET must not be empty. PaymentWebhookController reads it at boot, and several Artisan commands fail if it is missing. The minimal value local-secret used below is sufficient for local work.Prerequisites
- PHP 8.2+
- Composer 2
- Node.js 20 and npm 10+
Setup
Run migrations and seed demo data
- A super admin account (
[email protected]/password) - A tenant owner account (
[email protected]/password) - 5 PRO tenants and 5 free tenants with products
- 2 pending tenants awaiting approval
- Categories, cities, departments, and municipalities
What’s running
Aftercomposer run dev starts, you have:
| URL | Surface |
|---|---|
http://localhost:8000 | Public site and all app routes |
http://localhost:8000/admin | Filament super admin panel |
http://localhost:8000/app | Filament tenant panel |
http://localhost:5173 | Vite HMR dev server (proxied automatically) |
pail) streams application logs.
Demo credentials
| Role | Password | |
|---|---|---|
| Super admin | [email protected] | password |
| Tenant owner (Sushi Master) | [email protected] | password |
Next steps
Full installation
Set up MySQL, Redis, Reverb, S3, and production queues.
Architecture overview
Understand the modular monolith and DDD layer structure.
Multi-tenancy
Learn how tenant isolation, routing, and panels work.
API reference
Explore the REST API v1 and authentication flows.