Changes:
- Landing page (/) now redirects to /login
- Added 'Enable User Registration' setting (off by default)
- Created CheckRegistrationEnabled middleware
- Registration routes blocked when setting is disabled
- Admin can toggle registration in Settings > System
Implemented view composer in AppServiceProvider to share site settings across all views:
- Loads site name, logo, colors (primary/secondary/accent), and description from Setting model
- Falls back to config/defaults if database unavailable (prevents errors during migrations)
- Made siteSettings available to all Blade templates
Updated layouts and components to use dynamic settings:
- app.blade.php and guest.blade.php now use siteSettings for
Two issues fixed:
1. Changed create() to firstOrCreate() - makes seeder idempotent
(can run multiple times without 'already exists' errors)
2. Seeder now CREATES admin user instead of just assigning role
to existing user. Previous code assumed user existed.
Admin credentials:
- Email: admin@example.com
- Password: password
Two critical fixes:
1. DB_PORT was being appended to Laravel .env file
- Setup script was writing DB_PORT=3307 (external port)
- Laravel needs internal Docker port (3306)
- Now ports are commented out in .env (reference only)
- Docker-compose uses env vars, Laravel uses fixed internal ports
2. DatabaseSeeder.php had UTF-8 BOM (Byte Order Mark)
- Caused 'Namespace declaration must be first statement' error
- Removed invisible BOM bytes from file
These fixes ensure:
- MySQL connections work from within Docker network
- Database seeding completes successfully
- Fresh setup works end-to-end
CRITICAL FIXES:
- DatabaseSeeder now calls RolePermissionSeeder to create roles, permissions, and admin user
- setup.sh and setup.bat now run db:seed automatically during setup
- Created PRODUCTION_DEPLOYMENT.md with complete production deployment guide
- Removed duplicate admin user creation from setup scripts
This ensures:
- Admin user (admin@example.com / password) is created automatically
- Roles (admin, editor, viewer) are created during setup
- Permissions are seeded properly
- Production deployments have clear step-by-step instructions
- PHP Redis extension installation documented
- All common deployment issues addressed
The 2-minute setup now truly works out of the box.
- 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