---
description: Prominent BE/DB deploy alerts when crash reporter or backend changes need server action
alwaysApply: true
---

# BE and database deploy alerts

When your work touches the crash reporter backend, SQLite schema, nginx, or PHP on the BE (`apps.f0xx.org`), **always** end the relevant reply with a clearly separated block in **BIG CAPITAL LETTERS** if any of the following apply:

## Trigger — show the alert when

- **Database**: new/changed tables or columns (`schema.sqlite.sql`, `Database::ensureSchema`, `ALTER TABLE`, `tags_json`, `report_views`, migrations, or data-dir permissions).
- **BE deploy**: PHP/views/JS/CSS/config must be copied or synced to the Alpine tree under `android_cast/examples/crash_reporter/backend/`.
- **Hard reload on server**: nginx config fragment changed → `nginx -t` + reload; PHP-FPM restart after extension/config changes; opcache may need FPM restart.
- **Browser**: static assets (`app.js`, `app.css`) changed → user should hard-refresh after BE files are updated.

## Format (use exactly this style)

```
═══════════════════════════════════════════════════════════════
⚠️  ACTION REQUIRED ON BE / DB
═══════════════════════════════════════════════════════════════

• DATABASE: … (what changed; auto-migrate on first request vs manual sqlite step)
• SYNC FILES: … (paths to copy)
• NGINX: … (reload if api locations changed)
• PHP-FPM: … (restart only if needed)
• BROWSER: HARD REFRESH after deploy

═══════════════════════════════════════════════════════════════
```

Use short bullet lines. If only one category applies, still use the banner and list only that item. If nothing requires BE/DB/nginx/browser action, do **not** show the banner.

Do not bury this in prose — the banner must be impossible to miss.
