Accounts
Signups Over Time
Login Frequency Distribution
How many logins accounts have made in total — most apps see a long tail of light users and a small core of frequent ones.
Retention by Signup Cohort
Of accounts created in a given month, the % still active in the last 30 days.
Inactivity Risk
Accounts with no login in 30+ days, oldest first — a simple churn-risk list.
Filter Accounts
Accounts (0)
Age Range
Sex
Country (Top 10)
Sector / Career
Platform-wide aggregates only — never an individual user's transactions or balances.
Transaction Volume by Type (Monthly)
Average Transaction Size
Average Savings Rate
Budget Envelope Adherence
% of active budget envelopes currently on-track vs. over, platform-wide.
Average Net Worth Trend
Average Debt Payoff Progress
Recent Activity
Connect This Dashboard to Supabase
Every panel above currently reads from generated sample data (see SAMPLE_ACCOUNTS, SAMPLE_ACTIVITY, and the financial series near the top of the script). Replace each loader function below with a real Supabase query against the schema and views from Faithful_Steward_MultiUser_Admin_Scaffold.md, then delete the sample-data generator.
| Panel | Replace this function | With a query against |
|---|---|---|
| Overview stats | loadAccounts() | admin_usage_summary view |
| Signups / login frequency / retention | loadAccounts() | profiles + activity_log |
| Accounts table + actions | loadAccounts(), setAccountStatus() | profiles (RLS-scoped by is_staff_or_owner() / is_owner()) |
| Demographics | loadAccounts() | admin_demographics view |
| Financial indicators | loadFinancialSeries() | admin_aggregate_indicators view |
| Activity log | loadActivity() | activity_log table |
These queries are already written. All you need to do is paste your project URL and anon key only (never the service role key) into SUPABASE_URL and SUPABASE_ANON_KEY near the top of this file's script. The moment both are filled in, the sample-data banner disappears, an admin login appears, and every panel switches to live queries. Access is gated to accounts whose profiles.role is owner or staff.
This dashboard should be deployed and accessed separately from the user-facing app (e.g. its own private URL or kept local on your machine), with its own login — never bundled into index.html.