workspace { model { passportSystem = softwareSystem "Passport Compass Global" { description "A web platform providing authentic government passport information and eligibility criteria for all countries." # --- Main Top Layer --- frontend = container "React Frontend" "React" "Displays authentic government websites and passport eligibility data retrieved from Supabase via the API." apiEndpoint = container "API Endpoint" "HTTP API" "Provides data from Supabase to the React frontend." supabaseDb = container "Supabase Postgres Database" "Postgres" "Stores authentic government websites and eligibility criteria for each country." # --- Supporting Components (Bottom Layer) --- edgeFuncWebsites = container "Supabase Edge Function - Fetch Authentic Websites" "Supabase Edge Function" "Uses Browser MCP to discover authentic government websites for all countries and saves them to Supabase Postgres via Supabase MCP." edgeFuncEligibility = container "Supabase Edge Function - Fetch Eligibility Criteria" "Supabase Edge Function" "Reads authentic URLs from Supabase Postgres, uses Browser MCP to extract eligibility criteria, and saves them back via Supabase MCP." browserMcp = container "Browser MCP" "MCP" "Browses official government sites to extract website URLs and eligibility criteria." supabaseMcp = container "Supabase MCP" "MCP" "Handles data insertion and updates into Supabase Postgres from Edge Functions." } # --- Relationships --- frontend -> apiEndpoint "Requests and displays passport data" apiEndpoint -> supabaseDb "Fetches passport data from Supabase" browserMcp -> edgeFuncWebsites "Provides discovered government website URLs" edgeFuncWebsites -> supabaseMcp "Saves authentic website data" supabaseMcp -> supabaseDb "Inserts authentic website data" edgeFuncEligibility -> supabaseDb "Reads authentic URLs" edgeFuncEligibility -> browserMcp "Extracts eligibility criteria" edgeFuncEligibility -> supabaseMcp "Saves eligibility criteria" supabaseMcp -> supabaseDb "Inserts eligibility data" } views { systemContext passportSystem { include * autolayout lr title "System Context - Passport Compass Global" } container passportSystem { include * autolayout lr title "Container View - Passport Compass Global (Visually Layered)" } dynamic passportSystem { title "Dynamic View - Data Flow in Passport Compass Global" 1: browserMcp -> edgeFuncWebsites "Discover authentic government websites" 2: edgeFuncWebsites -> supabaseMcp "Send website data" 3: supabaseMcp -> supabaseDb "Save authentic website URLs" 4: edgeFuncEligibility -> supabaseDb "Read authentic URLs" 5: edgeFuncEligibility -> browserMcp "Extract eligibility criteria" 6: edgeFuncEligibility -> supabaseMcp "Send eligibility data" 7: supabaseMcp -> supabaseDb "Save eligibility criteria" 8: apiEndpoint -> supabaseDb "Query combined data" 9: frontend -> apiEndpoint "Fetch and display data" } theme default } }