T2: Database Schema + All Migrations - 10 migrations: users extension, services, songs, song_groups, song_slides, song_arrangements, song_arrangement_groups, service_songs, slides, cts_sync_log - 9 Eloquent models with relationships and casts - 9 factory classes for testing - Tests: DatabaseSchemaTest (2 tests, 26 assertions) ✅ T3: ChurchTools OAuth Provider - Custom Socialite provider for ChurchTools OAuth2 - AuthController with redirect/callback/logout - Replaced Breeze login with OAuth-only (German UI) - Removed all Breeze register/password-reset pages - Tests: OAuthTest (9 tests, 54 assertions) ✅ T4: CTS API Service + Sync Command - ChurchToolsService wrapping 5pm-HDH/churchtools-api - SyncChurchToolsCommand (php artisan cts:sync) - SyncController for refresh button - CCLI-based song matching - Tests: ChurchToolsSyncTest (2 tests) ✅ T5: File Conversion Service - FileConversionService with letterbox/pillarbox to 1920×1080 - ConvertPowerPointJob (queued) with LibreOffice + spatie/pdf-to-image - ZIP extraction and recursive processing - Thumbnail generation (320×180) - Tests: FileConversionTest (2 tests, 21 assertions) ✅ T6: Shared Vue Components - AuthenticatedLayout with nav, user info, refresh button - useAutoSave composable (500ms debounce) - FlashMessage, ConfirmDialog, LoadingSpinner components - HandleInertiaRequests middleware with shared props - Tests: SharedPropsTest (7 tests) ✅ T7: Email Configuration - MissingSongRequest mailable (German) - Email template with song info and service link - SONG_REQUEST_EMAIL config - Tests: MissingSongMailTest (2 tests, 10 assertions) ✅ All tests passing: 30/30 (233 assertions) All UI text in German with 'Du' form Wave 1 complete: 7/7 tasks ✅
83 lines
1.7 KiB
Plaintext
83 lines
1.7 KiB
Plaintext
APP_NAME="CTS Presenter"
|
|
APP_ENV=local
|
|
APP_KEY=
|
|
APP_DEBUG=true
|
|
APP_URL=http://localhost:8000
|
|
|
|
# Application Locale (German)
|
|
APP_LOCALE=de
|
|
APP_FALLBACK_LOCALE=de
|
|
APP_FAKER_LOCALE=de_DE
|
|
|
|
APP_MAINTENANCE_DRIVER=file
|
|
|
|
BCRYPT_ROUNDS=12
|
|
|
|
LOG_CHANNEL=stack
|
|
LOG_STACK=single
|
|
LOG_DEPRECATIONS_CHANNEL=null
|
|
LOG_LEVEL=debug
|
|
|
|
# Database Configuration (SQLite by default, can switch to MySQL)
|
|
DB_CONNECTION=sqlite
|
|
# DB_HOST=127.0.0.1
|
|
# DB_PORT=3306
|
|
# DB_DATABASE=cts_presenter
|
|
# DB_USERNAME=root
|
|
# DB_PASSWORD=
|
|
|
|
SESSION_DRIVER=database
|
|
SESSION_LIFETIME=120
|
|
SESSION_ENCRYPT=false
|
|
SESSION_PATH=/
|
|
SESSION_DOMAIN=null
|
|
|
|
BROADCAST_CONNECTION=log
|
|
FILESYSTEM_DISK=local
|
|
QUEUE_CONNECTION=database
|
|
|
|
CACHE_STORE=database
|
|
|
|
MEMCACHED_HOST=127.0.0.1
|
|
|
|
REDIS_CLIENT=phpredis
|
|
REDIS_HOST=127.0.0.1
|
|
REDIS_PASSWORD=null
|
|
REDIS_PORT=6379
|
|
|
|
# Mail Configuration
|
|
MAIL_MAILER=smtp
|
|
MAIL_SCHEME=tls
|
|
MAIL_HOST=smtp.example.com
|
|
MAIL_PORT=587
|
|
MAIL_USERNAME=null
|
|
MAIL_PASSWORD=null
|
|
MAIL_FROM_ADDRESS="noreply@example.com"
|
|
MAIL_FROM_NAME="${APP_NAME}"
|
|
SONG_REQUEST_EMAIL="songs@example.com"
|
|
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
AWS_DEFAULT_REGION=us-east-1
|
|
AWS_BUCKET=
|
|
AWS_USE_PATH_STYLE_ENDPOINT=false
|
|
|
|
VITE_APP_NAME="${APP_NAME}"
|
|
|
|
# ChurchTools API Configuration
|
|
# Get these values from your ChurchTools instance
|
|
CTS_API_URL=https://CHANGEME.church.tools
|
|
CTS_API_TOKEN=CHANGEME
|
|
|
|
# ChurchTools OAuth Configuration
|
|
# Required for user authentication via ChurchTools
|
|
CHURCHTOOLS_URL=https://CHANGEME.church.tools
|
|
CHURCHTOOLS_CLIENT_ID=CHANGEME
|
|
CHURCHTOOLS_CLIENT_SECRET=CHANGEME
|
|
CHURCHTOOLS_REDIRECT_URI=http://localhost:8000/auth/churchtools/callback
|
|
|
|
# File Upload Configuration
|
|
# Maximum file size in bytes (default: 100MB)
|
|
UPLOAD_MAX_FILE_SIZE=104857600
|
|
UPLOAD_TEMP_DIR=/tmp
|