Moderation workflow
Keep prayer public, reverent, and safe.
- 1New rows enter the Submissions sheet with moderationStatus set to pending-review.
- 2A moderator removes personal details, checks emergency language, and chooses a visibility level.
- 3Only rows marked approved and public or anonymous-public are exported to the public wall.
- 4Prayer team only and hidden summary rows remain private and should not be included in static public builds.
- 5Reported rows move back to needs-attention until a moderator resolves or archives them.
Moderation states
Review before publication.
Pending review
New submission waiting for human moderation.
Approved
Public-safe content allowed for display.
Needs attention
Requires pastoral, privacy, or safety review.
Hidden
Not displayed publicly, but retained for moderation context.
Archived
Closed or outdated and removed from active review.
Reported
Flagged by a user and returned to moderation.
Supabase-ready schema
Prayer intention fields
These fields can be used for a future Supabase table or a Google Sheets export. Public pages should query only approved rows marked public or anonymous public.
| Column | Type | Notes |
|---|---|---|
| id | uuid primary key | Generated by Supabase or import script. |
| title | text not null | Public-safe title after moderation. |
| slug | text unique not null | Public detail route for approved intentions. |
| description | text not null | Public-safe moderated summary. |
| intention_type | text not null | Healing, family, thanksgiving, urgent, and similar categories. |
| intention_visibility | text not null | public, anonymous-public, prayer-team-only, or hidden-summary. |
| moderation_status | text not null | pending-review, approved, needs-attention, hidden, archived, or reported. |
| requester_display_name | text | May be Anonymous after moderation. |
| requester_contact_encrypted | text | Optional admin-only contact, never exposed publicly. |
| excerpt | text | Short public summary. |
| prayer_prompt | text | Original short prayer prompt. |
| prayed_count | integer default 0 | Server count when a backend is added. |
| report_count | integer default 0 | Moderator signal only. |
| is_urgent | boolean default false | Urgent intentions still require moderation. |
| is_thanksgiving | boolean default false | Used for thanksgiving view. |
| submitted_at | timestamptz not null | Original submission time. |
| approved_at | timestamptz | Set by moderator. |
| created_at | timestamptz default now() | Database creation time. |
| updated_at | timestamptz default now() | Updated by moderation workflow. |