# Configuration Reference ## Environment Variables ### Application Settings | Variable | Default | Description | |----------|---------|-------------| | `APP_NAME` | `SIDES` | Application name | | `APP_ENV` | `local` | Environment (local/production) | | `APP_KEY` | (generated) | Encryption key | | `APP_DEBUG` | `true` | Show debug errors | | `APP_URL` | `https://sides.tck.com.my` | Application URL | | `APP_LOCALE` | `en` | Default language | | `APP_TIMEZONE` | `Asia/Kuala_Lumpur` | Timezone (set in config/app.php) | ### Database | Variable | Value | Description | |----------|-------|-------------| | `DB_CONNECTION` | `pgsql` | Database driver | | `DB_HOST` | `192.168.0.211` | Database host (external IP) | | `DB_PORT` | `5432` | PostgreSQL port | | `DB_DATABASE` | `sides_db` | Database name (via `POSTGRES_DB`) | | `DB_USERNAME` | `tck` | Database user (via `POSTGRES_USER`) | | `DB_PASSWORD` | `projectdev##1` | Database password (via `POSTGRES_PASSWORD`) | ### Docker-level Database | Variable | Value | Description | |----------|-------|-------------| | `POSTGRES_DB` | `tckdev` | Docker postgres database name | | `POSTGRES_USER` | `tck` | Docker postgres user | | `POSTGRES_PASSWORD` | `projectdev##1` | Docker postgres password | **Note**: There is a discrepancy — Docker `.env` creates database `tckdev` while Laravel `.env` connects to `sides_db` on an external host. ### Firebase / FCM | Variable | Description | |----------|-------------| | `FIREBASE_PROJECT_ID` | `sides-b4abb` | | `FIREBASE_CREDENTIALS` | `storage/app/firebase/sides-b4abb-3604a7cf7584.json` | | `FCM_TOPIC_RAINFALL_WARNING` | `rainfall_warning` | | `FCM_TOPIC_RAINFALL_DANGER` | `rainfall_danger` | | `FCM_TOPIC_WATERLEVEL_ALERT` | `waterlevel_alert` | | `FCM_TOPIC_WATERLEVEL_DANGER` | `waterlevel_danger` | ### Mail (SMTP) | Variable | Value | Description | |----------|-------|-------------| | `MAIL_MAILER` | `smtp` | Mail driver | | `MAIL_HOST` | `smtp.gmail.com` | Gmail SMTP | | `MAIL_PORT` | `587` | SMTP port (TLS) | | `MAIL_USERNAME` | `sideskupang@gmail.com` | Gmail account | | `MAIL_PASSWORD` | `ipmu zifw bpmf fsyp` | Gmail App Password | | `MAIL_FROM_ADDRESS` | `sideskupang@gmail.com` | From address | | `MAIL_FROM_NAME` | `${APP_NAME}` | From name | ### Session & Cache | Variable | Value | Description | |----------|-------|-------------| | `SESSION_DRIVER` | `database` | Session storage | | `SESSION_LIFETIME` | `120` | Session timeout (minutes) | | `CACHE_STORE` | `database` | Cache storage | | `QUEUE_CONNECTION` | `database` | Queue driver | ## Docker Compose Configuration ### Networks - `tckdev_net` — Custom bridge network for all containers ### Volumes | Volume | Container | Purpose | |--------|-----------|---------| | `./src:/var/www/html` | app, web | Laravel application code | | `./docker/postgres/data:/var/lib/postgres/data` | postgres | PostgreSQL data | | `./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf` | web | Nginx config | | `./backup:/var/lib/pgadmin/storage/...` | pgadmin | pgAdmin backup storage | ### Ports | Host Port | Container Port | Service | |-----------|---------------|---------| | 80 | 80 | Nginx (web) | | 5432 | 5432 | PostgreSQL | | 5050 | 80 | pgAdmin | | 6060 | 8080 | Adminer | ## Nginx Configuration Located at `docker/nginx/default.conf`: - Root: `/var/www/html/public` - PHP processing via FastCGI to `app:9000` - Security headers: X-Frame-Options, X-XSS-Protection, X-Content-Type-Options - Laravel URL rewriting: `try_files $uri $uri/ /index.php?$query_string` - Hidden file access denied (except `.well-known`) ## Laravel Configuration ### Middleware Registration Registered in `bootstrap/app.php`: - `admin` → `AdminMiddleware::class` (alias) - `LocalizationMiddleware` appended to web middleware group ### HTTPS Forcing `AppServiceProvider::boot()` calls `URL::forceScheme('https')` globally, making all generated URLs use HTTPS. ### Timezone Set to `Asia/Kuala_Lumpur` in `config/app.php` (UTC+8, Malaysia Time).