Monitoring, Logging & Analytics

API logging

  • Structured logging via pkg/logging, level LOGGING_LEVEL (default debug), written to LOGGING_FILE (./logs/logfile.log) — see bme-konza-api/logs/.
  • ⚠️ A file inside the container is ephemeral — lost on redeploy. [TODO: are logs shipped anywhere / viewable in Coolify? Set up retention if not.]
  • Planned: VictoriaLogs for log aggregation/search (named in stack.md; not yet wired up — not in go.mod). Tracked in roadmap.md.

Background jobs (River)

Background work runs on the River queue (Postgres-backed) — see api-backend.md. River stores job/queue state in Postgres, so failed/retried jobs are inspectable via its tables. [TODO: is there a River dashboard/UI in use, and where are job failures surfaced?]

Crash reporting (mobile)

  • Firebase Crashlytics in the app. ProGuard mapping.txt is uploaded on every prod build so stack traces de-obfuscate. View crashes in the Firebase console (<PROD_FIREBASE_PROJECT>).

Analytics

  • Firebase Analytics in the app.
  • Google Analytics on the web app via nuxt-gtag (GOOGLE_MEASUREMENT_ID).
  • In-app analytics tables in Postgres (*_stats, user_activity_logs, search_state_log) feed the analytics API + monthly/user-interaction report workers.

Reports

The API emails reports via SMTP (SMTP_REPORTS_EMAIL) — the MonthlyReportWorker and UserInteractionReportWorker River jobs (scheduled as River periodic jobs, see api-backend.md). [TODO: who receives them and the exact cadence of each periodic job.]

Uptime & alerting — [TODO] 🔑

  • [ ] Is there any uptime monitor / health-check on the API and sites? (The API likely has a health route — [TODO: path].)
  • [ ] Where do alerts go (email/Slack/none)?
  • [ ] Does Coolify send deploy/health notifications anywhere?
  • [ ] Links to all dashboards (Firebase, GA, Play vitals, Coolify, server metrics).