Diagram 1: System Architecture — draw.io-friendly layout
Diagram planning note:
TITLE: Builder Showcase System Architecture
LEFT SIDE — Public User Layer:
- Builder / Student / Contributor
- DataInsideData™ Submit Project Page
- Browser Form Validation
- Preview Submission Step
- Confirm & Submit Step
CENTER — API / Security Layer:
- Supabase Edge Function: submit-builder-project
- CORS Handling
- Public Form Key Check
- JSON Payload Validation
- Honeypot Check
- Duplicate Submission Check
- Client IP Hashing
- Submission Insert
- submission_created Event Log
CENTER-RIGHT — Database Layer:
- builder_project_submissions
- builder_submission_events
- builder_projects
RIGHT SIDE — Admin Workflow Layer:
- Python Admin Scripts
- check_submission_readme.py
- update_submission_status.py
- promote_builder_project.py
- export_builder_project.py
- view_submission_events.py
- view_builder_ops_summary.py
FAR RIGHT — Publishing / Dashboard Layer:
- _data/builder_projects.yml
- Generated Builder Showcase Detail Pages
- Jekyll / Minimal Mistakes Site
- Streamlit Builder Ops Dashboard
- pgAdmin Business Queries
SECURITY BOUNDARY:
- Public browser does not write directly to tables
- Browser calls Edge Function
- Edge Function uses server-side secret
- Admin scripts use privileged local environment
- RLS enabled on workflow tables
- service_role has intentional grants
Diagram 2: Submission Lifecycle
TITLE: Builder Showcase Submission Lifecycle
FLOW:
- User opens Submit Builder Project page
- User enters project information
- Frontend validates fields
- User previews submission
- User confirms submission
- Edge Function receives POST request
- Edge Function validates request
- Edge Function checks honeypot and duplicates
- Edge Function inserts builder_project_submissions row
- Edge Function logs submission_created event
- Admin runs README checker
- README checker fetches normalized README URL
- README checker scans for unsafe markers
- README checker updates readme_fetch_status
- README checker logs readme_checked event
- Admin changes status to reviewing
- Status update logs status_changed event
- Admin promotes submission to builder_projects
- Promotion logs promoted_to_builder_project event
- Admin exports project to YAML
- Export logs exported_to_yml event
- Page generator creates/updates static project detail page
- Page generation logs detail_page_generated event
- Dashboard reports lifecycle and review health
Diagram 3: Event Logging Model
TITLE: Builder Showcase Event Logging Model
MAIN ENTITY: builder_submission_events
EVENT TYPES:
- submission_created
- readme_checked
- status_changed
- promoted_to_builder_project
- exported_to_yml
- detail_page_generated
EVENT SOURCES:
- edge_function
- local_admin
EVENT RELATIONSHIPS: builder_project_submissions.id → builder_submission_events.submission_id
builder_projects.id → builder_submission_events.builder_project_id
EVENT PURPOSE:
- audit trail
- lifecycle metrics
- dashboard reporting
- operational debugging
- publishing history
##