Capture Receipt Photo Directly with Device Camera
When on the Receipt Upload Screen, the user can tap a camera action button that opens a bottom sheet action menu via the Camera Capture Widget. Selecting 'Take Photo' launches the device camera. After capturing the image, the widget returns the file to the Receipt Processing Service, which compresses it client-side before uploading to Supabase Storage. This in-app camera integration removes the friction of managing photos externally and ensures receipts are captured at the moment of purchase, which is the most reliable way to prevent missing documentation.
User Story
Acceptance Criteria
- Given the Receipt Upload Screen is open, when the user taps the camera action button, then a bottom sheet appears with 'Take Photo' and 'Choose from Library' options
- Given the action sheet is shown, when the user selects 'Take Photo', then the device native camera is launched
- Given the user captures a photo, when they confirm it, then the image is returned to the app and the upload process begins immediately
- Given the image is being processed, when client-side compression completes, then the compressed image is uploaded to Supabase Storage
- Given the upload succeeds, when the upload completes, then the receipt thumbnail appears in the grid on the Receipt Upload Screen
Business Value
In-app camera capture is the primary and most frictionless method for peer mentors to document expenses in the field. HLF requires receipts for all expense items over 100 kr; enabling capture at point of purchase maximises compliance and eliminates the most common reason for missing receipts — forgetting to photograph them later.
Components
- Receipt Upload Screen ui
- Camera Capture Widget ui
- Receipt Processing Service service
- Receipt Storage Repository data
- Image Storage Backend infrastructure