Program Delivery Dashboard
Loading data…
Welcome back!
📋 My Assigned Tasks
👥 Program Team Feed
📊 My Program Progress
Loading…
Loading…
Loading…
This Week's Submissions 0 submitted
No check-ins submitted yet this week.
🔐 This tab is visible to all logged-in staff. For sensitive manager data, consider using the admin password feature in Setup.

Weekly Manager Digest

⚠️ Programs Behind Schedule
✅ Check-in Submissions This Week
Staff Reports
No submissions yet this week.
🔴 Overdue Tasks
📁 Program Management
Add new programs and tasks directly to Google Sheets. Changes reflect immediately in the dashboard.
➕ Add New Program
Program ID (auto: P6, P7…)
Program Name
Start Date
End Date
Start Quarter
End Quarter
📌 Add Tasks to Program
Program
Project (optional)
Task Name
Due Date
Quarter
Assign To
Status
📂 Add Project to Program
Program
Project Name
Description (optional)
Start Date
End Date
Quarter
Status
Responsible Person
📋 Current Programs & Projects
Live from Google Sheets — reflects all programs including newly added ones.
Role Management
Manage user accounts, assign roles and program access. All credentials are stored securely in Cloudflare.
Admin · Level 2
Full access · User & role management · All programs · Finance approval · Export · Digest
Manager · Level 3
All programs view · KPI & staff performance · Digest · Expense approval · No role management
Staff · Level 3–4
Own tasks only · Assigned programs · Weekly check-in · DCR reports
Finance Manager · Level 3
View all proposals · Submit proposals · Log expenses · Finance dashboard
Finance Staff · Level 3
Own proposals only · Log expenses · Finance dashboard
Level 1 — Governance
No system access · Policy & oversight only
External — Contractor
Assigned programs only · Own tasks · Check-in · DCR · No finance · No team feed · No KPI
User Accounts
+ Add New User
Username
Display Name
Email Address
Role / Level
Diocese (optional — assign now or later)
— select diocese —
A temporary password is generated automatically. The user must change it on first login.
Role & Program Assignment
Changes take effect on next login
Click program pills to toggle access. Save each card individually.
Save Configuration
After adjusting roles below, save the configuration. Staff will see their updated access on next login.
Current config JSON (copy to STAFF_ROLES secret in Cloudflare):
🔒 Security Architecture
How the secure setup works — staff never see the API key or password.
Staff browser → password only → Cloudflare Worker → API key (hidden) → Google Sheets
WhatWhere it livesVisible to staff?
Dashboard passwordCloudflare Worker env variableNo ✓
Google API keyCloudflare Worker env variableNo ✓
Spreadsheet IDCloudflare Worker env variableNo ✓
Worker URLThis HTML fileYes — harmless alone
🗄️ Initialize Google Sheets
Creates required sheets with correct headers, and migrates any existing task sheets from the old column format (J–Q) to the correct format (A–H). Safe to run multiple times.

Required sheets: Main Programs, Weekly Reports, Login Audit
Program task sheets (P1 Task_List, etc.) are created automatically when you add a program.

🚀 One-Time Setup — Cloudflare Worker
Takes about 10 minutes. Free tier is more than enough.
  1. Create a free Cloudflare account
    Go to cloudflare.com → Sign up free. No credit card needed.
  2. Create a new Worker
    Dashboard → Workers & PagesCreateCreate Worker.
    Give it a name like pdp-dashboard. Click Deploy.
  3. Paste the Worker code
    Click Edit code. Delete everything in the editor.
    Open pdp-worker.js (the file provided alongside this dashboard) and paste its entire contents. Click Deploy.
  4. Add your secrets as Environment Variables
    Worker → SettingsVariables and Secrets → Add these three:
    DASHBOARD_PASSWORD = your staff password GOOGLE_API_KEY = your Google Sheets API key SPREADSHEET_ID = your Google Sheet ID
    Set each as type Secret (not plain text) so they're encrypted. Click Save.
  5. Copy your Worker URL
    It looks like: https://pdp-dashboard.YOUR-NAME.workers.dev
    Copy this URL.
  6. Update this HTML file
    Open this file in a text editor. Find the line near the top of the script:
    const WORKER_URL = 'https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev';
    Replace it with your actual Worker URL. Save the file.
  7. Deploy to GitHub Pages
    Upload the updated HTML file to your GitHub repo as index.html.
    Enable GitHub Pages in Settings → Pages → Deploy from branch main.
    Your live URL: https://yourusername.github.io/pdp-dashboard/
  8. Update CORS in the Worker (optional but recommended)
    In the Worker code, find the corsHeaders function and update it to only allow your GitHub Pages domain:
    const allowed = /^https:\/\/yourusername\.github\.io$/;
🔑 Changing the Password
The password lives in Cloudflare — no HTML edits needed to change it.
  1. Go to Cloudflare → Workers → your Worker → Settings → Variables
    Find DASHBOARD_PASSWORD → Edit → type new password → Save.
  2. Done — takes effect immediately
    Staff using the old password will be prompted to log in again next time they refresh.