This solves the Windows/WSL2 performance issue that caused composer install
to timeout after 300 seconds.
Changes:
1. docker-compose.yml:
- Added vendor_data named volume for app, queue, scheduler services
- vendor/ now uses fast Docker volume instead of slow bind mount
2. Dockerfile:
- Pre-install composer dependencies during image build
- Copy composer.json/lock first, run install, then copy rest of src
- Runs as devuser to match runtime permissions
- Dependencies baked into image = truly 'pre-installed'
3. setup.bat & setup.sh:
- Removed composer install step (now in Dockerfile)
- Added -T flag to all docker-compose exec commands (fixes Windows TTY hang)
- Added 3-second wait for container readiness
Benefits:
- ✅ Setup completes in 2-3 minutes (not 10+ minutes)
- ✅ No composer timeout issues
- ✅ Works on Windows/Mac/Linux
- ✅ vendor/ persists in Docker volume (fast)
- ✅ True 'everything pre-installed' experience
Trade-offs:
- vendor/ not visible in Windows filesystem (in Docker volume)
- Need to rebuild image when adding composer packages
- Slightly larger Docker image (~200MB more)
This is the correct approach for a Docker-based development template.
- Install spatie/laravel-permission v6.24 with 3 roles (admin, editor, viewer) and 5 base permissions
- Install owen-it/laravel-auditing v14.0 for tracking model changes
- Install laravel/sanctum v4.3 for API token authentication
- Install spatie/laravel-ignition v2.11 and spatie/flare-client-php v1.10 for enhanced error tracking
- Add Module System with make:module artisan command for scaffolding features
- Create Site Settings page in Filament admin for logo, colors, and configuration
- Add comprehensive debugging documentation (DEBUGGING.md, AI_CONTEXT.md updates)
- Create FEATURES.md with complete feature reference
- Update User model with HasRoles and HasApiTokens traits
- Configure Redis cache and OPcache for performance
- Add RolePermissionSeeder with pre-configured roles and permissions
- Update documentation with debugging-first workflow
- All features pre-installed and production-ready