low complexity extracted Bufdir Report Generation Confidence: 100%
7
Components
198
Shared
14
User Stories
Yes
Analyzed

Description

Maintains a persistent history of all previously generated Bufdir reports within the app, including the period covered, generation date, generating user, and a link to re-download the exported artifact. Organization admins can review the full report log and re-export any past report if needed. The history view also surfaces a summary of key figures from each past report (e.g., total activities, total hours, participants reached) to support year-over-year comparisons without requiring a full re-export. This gives leadership a quick pulse on trend direction during internal reviews.

Analysis

Business Value

Supports accountability and auditability requirements inherent in public grant funding. If Bufdir or internal auditors request documentation of past reporting, coordinators can retrieve it instantly rather than hunting through email archives or local file systems. Reduces risk of lost reports.

Implementation Notes

Store report metadata and the generated file reference in a dedicated Supabase table scoped to the organization. Access should be restricted to coordinator and admin roles. File storage via Supabase Storage with organization-scoped access policies. Consider a retention policy aligned with Bufdir's grant audit window (typically 5 years).

Components (205)

User Interface (3)

Service Layer (2)

Data Layer (1)

Infrastructure (1)

Shared Components

These components are reused across multiple features

User Interface (59)

ui Role Switch Widget medium Shared ui Role-Aware Bottom Navigation medium Shared ui Activity Type Selection Screen low Shared ui Speech-to-Text Field Overlay medium Shared ui Receipt Capture Widget medium Shared ui Peer Mentor Single Selector low Shared ui Proxy Audit Badge Widget low Shared ui Export Period Picker low Shared ui Contact Card Widget low Shared ui Contact Search Bar low Shared ui Peer Mentor Card Widget low Shared ui Activity History List low Shared ui Multi-Chapter Affiliation Chip Widget medium Shared ui Certification Status Badge low Shared ui Duplicate Activity Warning Dialog medium Shared ui Mentor Multi-Select Widget medium Shared ui Map Filter Panel medium Shared ui Claim Status Badge low Shared ui Export Date Range Picker low Shared ui Custom Date Range Picker low Shared ui Duplicate Activity Warning Dialog low Shared ui Proxy Activity Form medium Shared ui Proxy Peer Mentor Selector medium Shared ui Expected Return Date Picker low Shared ui Pause Activation Screen low Shared ui Pause Status Indicator low Shared ui Admin KPI Stat Widget low Shared ui Organisation Hierarchy Navigator high Shared ui Bufdir Period Selector Widget low Shared ui Export History List medium Shared ui Activity Type Donut Chart medium Shared ui Monthly Activity Bar Chart medium Shared ui Statistics Period Filter Bar low Shared ui Statistics Summary Cards low Shared ui Notification Badge Widget low Shared ui Certificate Expiry Status Indicator low Shared ui Animated Stat Card Widget medium Shared ui In-App Notification Banner low Shared ui Accessible Modal Sheet Widget high Shared ui Live Region Announcer medium Shared ui Semantics Wrapper Widget medium Shared ui Sensitive Field Warning Dialog high Shared ui Confirm Before Submit Screen medium Shared ui Inline Contextual Help Widget low Shared ui Labelled Navigation Bar low Shared ui Plain Language Error Display low Shared ui Single-Action Screen Layout medium Shared ui Wizard Progress Indicator low Shared ui Accessible Text Style System medium Shared ui Accessible Touch Target Wrapper low Shared ui Contrast-Safe Color Palette Widget medium Shared ui Accessible Bottom Navigation Bar medium Shared ui Modal Close Button low Shared ui Persistent Back Button low Shared ui Vertical Scroll Container low Shared ui Organization Card Widget low Shared ui Terminology-Aware Text Widget low Shared ui FeatureGate Widget low Shared ui Chapter Switcher medium Shared

Service Layer (52)

service Authentication Service medium Shared service Authentication Session Manager medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Biometric Authentication Service medium Shared service Permission Checker Service medium Shared service Role State Manager medium Shared service No-Access Route Guard low Shared service Activity Type Metadata Resolver low Shared service Chapter Scope Resolver medium Shared service Organisation Hierarchy Resolver medium Shared service Coordinator Notification Service medium Shared service Duplicate Activity Detection Service high Shared service Mentor Filter Service low Shared service Receipt Threshold Validator low Shared service Approval Status Notification Service medium Shared service Threshold Evaluation Service medium Shared service Declaration Encryption Service high Shared service Organization Feature Flag Service low Shared service Participant Deduplication Service high Shared service Reporting Period Service medium Shared service Activity Attribution Service low Shared service Proxy Duplicate Detection Service medium Shared service Pause Management Service medium Shared service Pause Notification Service medium Shared service Admin Export Service medium Shared service Admin Row-Level Security Guard high Shared service Organisation Hierarchy Service high Shared service User Management Service high Shared service Role Access Validator low Shared service Peer Mentor Stats Aggregator medium Shared service Push Notification Dispatcher medium Shared service Notification Preference Service low Shared service Scenario Deep-Link Router medium Shared service Scenario Notification Content Builder medium Shared service Badge Criteria Integration medium Shared service Activity Summary Aggregator low Shared service Focus Management Service medium Shared service Screen Reader Detection Service medium Shared service Sensitive Field Privacy Guard high Shared service Plain Language Content Service medium Shared service Wizard State Manager medium Shared service Tab State Manager medium Shared service Organization Route Guard medium Shared service Tenant Context Service high Shared service Label Key Resolver Service low Shared service Organization Labels Notifier medium Shared service FeatureFlagProvider (Riverpod) medium Shared service Access Scope Service high Shared service Hierarchy Aggregation Service high Shared service Hierarchy Service high Shared service Unit Assignment Service medium Shared

Data Layer (33)

Infrastructure (54)

infrastructure Keyboard-Aware Layout Utility low Shared infrastructure Supabase Auth Client low Shared infrastructure Deep Link / OAuth Redirect Handler medium Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase Session Manager medium Shared infrastructure URL Launcher Utility low Shared infrastructure Local Storage Adapter low Shared infrastructure Supabase Activity Client low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client low Shared infrastructure Organisation Field Config Loader medium Shared infrastructure Speech-to-Text Adapter medium Shared infrastructure File Download Handler low Shared infrastructure Duplicate Reviewed Flag Middleware low Shared infrastructure Contact RLS Query Builder low Shared infrastructure Contact Form Validator low Shared infrastructure Design Token Theme low Shared infrastructure Organization Labels Provider low Shared infrastructure Supabase Client Provider low Shared infrastructure Search Debounce Utility low Shared infrastructure Expense Type Analytics Tracker low Shared infrastructure Receipt Image Picker Integration low Shared infrastructure CSV / JSON File Generator medium Shared infrastructure Coordinator Role Guard low Shared infrastructure Nightly Job Scheduler medium Shared infrastructure Supabase RLS Policy Configuration high Shared infrastructure Export File Storage Adapter low Shared infrastructure Supabase Storage Adapter low Shared infrastructure Peer Mentor Pause Management Service medium Shared infrastructure Push Notification Service medium Shared infrastructure fl_chart Adapter medium Shared infrastructure Push Notification Service low Shared infrastructure FCM Push Notification Sender medium Shared infrastructure FCM Notification Dispatcher medium Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Supabase Realtime Subscription Service medium Shared infrastructure Organisation Data Isolation Guard low Shared infrastructure Push Notification Dispatcher medium Shared infrastructure Deep Link Handler medium Shared infrastructure QR Code Generator low Shared infrastructure Share Sheet Bridge low Shared infrastructure Semantics Service Facade medium Shared infrastructure Accessibility Design Token Enforcer medium Shared infrastructure Accessible Theme Builder medium Shared infrastructure Navigation Route Configuration medium Shared infrastructure Accessibility Live Region Announcer low Shared infrastructure Feature Flag Provider low Shared infrastructure Secure Storage Adapter low Shared infrastructure Supabase RLS Tenant Scope Configurator medium Shared infrastructure Label Key Registry low Shared infrastructure Terminology Riverpod Providers low Shared infrastructure WCAG Semantics Label Resolver low Shared infrastructure Feature Flag Key Constants low Shared infrastructure RLS Policy Manager high Shared

User Stories (14)

Filter and Search Report History by Period and Status
medium 3 pts

As a As a Coordinator

I want to filter the Bufdir report history by year, reporting period, and submission status, and to search by period label

So that I can quickly locate a specific report without scrolling through years of history, especially when preparing for an audit or responding to a Bufdir query

Acceptance Criteria
  • Given the coordinator selects '2024' from the year filter, when the filter is applied, then only reports with a submission date or reporting period in 2024 are shown
  • Given the coordinator selects 'Failed' from the status filter, when the filter is applied, then only reports with a failed or error status are listed
  • Given the coordinator types '2024 Q2' in the search field, when results update, then only report entries matching that period label are displayed
  • +3 more
View Full Story →
Re-export a Previously Submitted Bufdir Report
medium 8 pts

As a As a Coordinator

I want to re-download or re-export any previously submitted Bufdir report in its original file format (Excel, CSV, or PDF)

So that I can provide a copy to Bufdir on request, share it with internal stakeholders, or archive it locally without needing to regenerate the report from scratch

Acceptance Criteria
  • Given the coordinator taps 're-export' on a historical report, when the action completes, then the original file is retrieved from storage and offered as a download or share-sheet option on the device
  • Given the original file has been purged from storage, when the coordinator requests a re-export, then the system clearly informs the coordinator that the file will be regenerated from historical data and asks for confirmation before proceeding
  • Given the coordinator confirms a re-export, when the file is generated, then an audit log entry is created recording the coordinator's user ID, timestamp, and report period
  • +2 more
View Full Story →
Compare Current Period Data Against Previous Submission
medium 8 pts

As a As a Coordinator

I want to see a side-by-side comparison of the current period's Bufdir data against the most recently submitted report for the same or adjacent period

So that I can spot unusual changes in activity volumes or participant counts before submitting, reducing the risk of submitting erroneous data to Bufdir

Acceptance Criteria
  • Given the coordinator opens the period diff view, when it loads, then the current period's metrics are shown alongside the previous period's submitted metrics in a two-column layout
  • Given a metric has changed by more than 20% compared to the prior period, when the diff view is displayed, then that metric row is highlighted with an amber warning indicator and the percentage change is shown
  • Given the coordinator is viewing the diff, when they tap on a highlighted metric, then a contextual explanation is shown suggesting possible causes (e.g., 'Participant count dropped 35% — check if all activity registrations for the period have been saved')
  • +2 more
View Full Story →
Filter and Search Report History by Period and Status
medium 3 pts

As a As a Organization Administrator

I want to filter the Bufdir report history by year, reporting period, and submission status, and to search by period label

So that I can quickly locate a specific report without scrolling through years of history, especially when preparing for an audit or responding to a Bufdir query

Acceptance Criteria
  • Given the coordinator selects '2024' from the year filter, when the filter is applied, then only reports with a submission date or reporting period in 2024 are shown
  • Given the coordinator selects 'Failed' from the status filter, when the filter is applied, then only reports with a failed or error status are listed
  • Given the coordinator types '2024 Q2' in the search field, when results update, then only report entries matching that period label are displayed
  • +3 more
View Full Story →
Re-export a Previously Submitted Bufdir Report
medium 8 pts

As a As a Organization Administrator

I want to re-download or re-export any previously submitted Bufdir report in its original file format (Excel, CSV, or PDF)

So that I can provide a copy to Bufdir on request, share it with internal stakeholders, or archive it locally without needing to regenerate the report from scratch

Acceptance Criteria
  • Given the coordinator taps 're-export' on a historical report, when the action completes, then the original file is retrieved from storage and offered as a download or share-sheet option on the device
  • Given the original file has been purged from storage, when the coordinator requests a re-export, then the system clearly informs the coordinator that the file will be regenerated from historical data and asks for confirmation before proceeding
  • Given the coordinator confirms a re-export, when the file is generated, then an audit log entry is created recording the coordinator's user ID, timestamp, and report period
  • +2 more
View Full Story →
Compare Current Period Data Against Previous Submission
medium 8 pts

As a As a Organization Administrator

I want to see a side-by-side comparison of the current period's Bufdir data against the most recently submitted report for the same or adjacent period

So that I can spot unusual changes in activity volumes or participant counts before submitting, reducing the risk of submitting erroneous data to Bufdir

Acceptance Criteria
  • Given the coordinator opens the period diff view, when it loads, then the current period's metrics are shown alongside the previous period's submitted metrics in a two-column layout
  • Given a metric has changed by more than 20% compared to the prior period, when the diff view is displayed, then that metric row is highlighted with an amber warning indicator and the percentage change is shown
  • Given the coordinator is viewing the diff, when they tap on a highlighted metric, then a contextual explanation is shown suggesting possible causes (e.g., 'Participant count dropped 35% — check if all activity registrations for the period have been saved')
  • +2 more
View Full Story →
View Complete Bufdir Report Submission History
high 5 pts

As a As a Coordinator

I want to view a chronological list of all Bufdir reports that have been submitted from my organization

So that I can track compliance, verify that required reporting periods have been covered, and quickly identify any gaps in submission history

Acceptance Criteria
  • Given the coordinator navigates to the Bufdir report history screen, when the screen loads, then all past submissions are displayed in reverse chronological order with period, date submitted, status, and submitter name visible on each list item
  • Given there are no past submissions, when the coordinator opens the history screen, then a clear empty-state message is shown explaining that no reports have been submitted yet
  • Given the coordinator selects a year filter, when the filter is applied, then only reports from that calendar year are displayed in the list
  • +2 more
View Full Story →
View Summary Metrics for Each Historical Report
high 5 pts

As a As a Coordinator

I want to see aggregated metrics for any previously submitted Bufdir report — including total activities, unique participants, hours delivered, and geographic distribution

So that I can verify the numbers that were reported to Bufdir match my expectations and detect discrepancies before they become compliance issues

Acceptance Criteria
  • Given the coordinator taps on a historical report entry, when the detail view opens, then a metrics widget shows total sessions, unique participants, total hours, activity category breakdown, and geographic distribution for that specific reporting period
  • Given the coordinator views a report submitted 6 months ago, when activity records have since been edited, then the history metrics still show the values as they were at time of submission
  • Given the metrics widget is displayed, when the coordinator reviews it, then each metric is labeled in plain language matching Bufdir's official terminology
  • +1 more
View Full Story →
Access Secure Download Links for Stored Report Files
high 5 pts

As a As a Coordinator

I want to download report files from the history screen using secure, time-limited links that do not expose raw storage paths

So that sensitive grant reporting data is protected from unauthorized access even if a link is accidentally shared

Acceptance Criteria
  • Given the coordinator requests a file download, when the system generates the download link, then the link is a signed URL with a 15-minute expiry and is not a direct public storage path
  • Given a signed URL has expired, when someone attempts to use it, then the server returns an authorization error and the file is not served
  • Given a coordinator from organization A has a signed URL for their report, when a coordinator from organization B attempts to use that URL, then access is denied by the RLS-enforced storage policy
  • +2 more
View Full Story →
View Full Audit Trail for Each Report Submission
high 8 pts

As a As a Coordinator

I want to see a detailed audit log for each Bufdir report showing every action taken — including who initiated the export, any validation warnings that were overridden, and all re-export events

So that I can demonstrate to Bufdir or internal auditors that our reporting process is transparent, controlled, and traceable

Acceptance Criteria
  • Given the coordinator opens the audit trail panel for a report, when the panel loads, then all events are shown in chronological order with timestamp, event type, and acting user name
  • Given a validation warning was present at submission time, when the coordinator views the audit trail, then the warning is recorded as an event with the warning message and the coordinator who accepted it
  • Given a re-export was performed by a different coordinator, when the original coordinator views the audit trail, then the re-export event shows the other coordinator's name
  • +2 more
View Full Story →
View Complete Bufdir Report Submission History
high 5 pts

As a As a Organization Administrator

I want to view a chronological list of all Bufdir reports that have been submitted from my organization

So that I can track compliance, verify that required reporting periods have been covered, and quickly identify any gaps in submission history

Acceptance Criteria
  • Given the coordinator navigates to the Bufdir report history screen, when the screen loads, then all past submissions are displayed in reverse chronological order with period, date submitted, status, and submitter name visible on each list item
  • Given there are no past submissions, when the coordinator opens the history screen, then a clear empty-state message is shown explaining that no reports have been submitted yet
  • Given the coordinator selects a year filter, when the filter is applied, then only reports from that calendar year are displayed in the list
  • +2 more
View Full Story →
View Summary Metrics for Each Historical Report
high 5 pts

As a As a Organization Administrator

I want to see aggregated metrics for any previously submitted Bufdir report — including total activities, unique participants, hours delivered, and geographic distribution

So that I can verify the numbers that were reported to Bufdir match my expectations and detect discrepancies before they become compliance issues

Acceptance Criteria
  • Given the coordinator taps on a historical report entry, when the detail view opens, then a metrics widget shows total sessions, unique participants, total hours, activity category breakdown, and geographic distribution for that specific reporting period
  • Given the coordinator views a report submitted 6 months ago, when activity records have since been edited, then the history metrics still show the values as they were at time of submission
  • Given the metrics widget is displayed, when the coordinator reviews it, then each metric is labeled in plain language matching Bufdir's official terminology
  • +1 more
View Full Story →
Access Secure Download Links for Stored Report Files
high 5 pts

As a As a Organization Administrator

I want to download report files from the history screen using secure, time-limited links that do not expose raw storage paths

So that sensitive grant reporting data is protected from unauthorized access even if a link is accidentally shared

Acceptance Criteria
  • Given the coordinator requests a file download, when the system generates the download link, then the link is a signed URL with a 15-minute expiry and is not a direct public storage path
  • Given a signed URL has expired, when someone attempts to use it, then the server returns an authorization error and the file is not served
  • Given a coordinator from organization A has a signed URL for their report, when a coordinator from organization B attempts to use that URL, then access is denied by the RLS-enforced storage policy
  • +2 more
View Full Story →
View Full Audit Trail for Each Report Submission
high 8 pts

As a As a Organization Administrator

I want to see a detailed audit log for each Bufdir report showing every action taken — including who initiated the export, any validation warnings that were overridden, and all re-export events

So that I can demonstrate to Bufdir or internal auditors that our reporting process is transparent, controlled, and traceable

Acceptance Criteria
  • Given the coordinator opens the audit trail panel for a report, when the panel loads, then all events are shown in chronological order with timestamp, event type, and acting user name
  • Given a validation warning was present at submission time, when the coordinator views the audit trail, then the warning is recorded as an event with the warning message and the coordinator who accepted it
  • Given a re-export was performed by a different coordinator, when the original coordinator views the audit trail, then the re-export event shows the other coordinator's name
  • +2 more
View Full Story →