# Visione Database Schema The schema is stored in `migrations/001_initial_schema.sql`. Important tables: - `users`: identity, personal data, password hash, points and moderation flags. - `roles`, `permissions`, `role_permissions`, `user_roles`: authorization. - `otp_challenges`: local OTP login flow. - `api_tokens`: bearer tokens for the local API. - `report_categories`: report classification. - `areas`: named city areas with GeoJSON polygon boundaries. - `team_categories`, `teams`: municipal intervention teams. - `reports`: citizen reports with coordinates, address, status, area and assigned operator. - `report_status_history`: immutable status transition log. - `assignments`: report-to-team assignment history. - `report_photos`: uploaded photo URL, original filename, content type and size. - `messages`: citizen/operator report conversation. - `feedback`: citizen rating and comment after resolution. - `reward_events`: indirect gamification points ledger. GeoJSON is intentionally used instead of MySQL Spatial in milestone 1 to keep the local setup simple and portable.