How It Works

1User taps "Reports and Suggestions" in Settings
2Dialog appears with issue type and message field
3User selects category, enters details (max 500 chars)
4Report sent to server via app_logs endpoint

Location: General Settings Tab • lib/screens/general_tab.dart • Not automated — requires manual user action.

Issue Categories

Audio Player Issue
Billing Problems
Suggestions
Course Download Problems
AI Voice Issues
Other

Data Payload

FieldValue
user_idFrom user profile
log_type"user_reports"
message"{IssueType}: {UserMessage}"
origin"app"
created_atUTC timestamp

Endpoint: POST .../functions/v1/app_logs • Authenticated with Supabase anon key

Logging Behavior

Critical log type: user_reports bypasses the user's "Logs" setting. Reports are sent even if the user disabled logs, using the forceLog: true parameter.

Storage: Supabase app_logs table with log_type = 'user_reports'

Error Handling

CheckBehavior
User not logged inReport blocked — requires active session
No user_id in profileReport blocked — validates user_id exists
Send successShows success snackbar to user
Send failureShows failure snackbar to user
Network timeout5-second timeout to prevent blocking UI
Report Submission → Logging & Error Handling →