workspace { model { passportSystem = softwareSystem "Passport Compass Global" { description "A web platform providing authentic government passport information and eligibility criteria for all countries." frontend = container "React Frontend" "React" "Displays passport information and eligibility criteria retrieved via API from Supabase." apiEndpoint = container "API Endpoint" "HTTP API" "Serves data from Supabase Postgres to the React frontend." supabaseDb = container "Supabase Postgres Database" "Postgres" "Stores authentic government website URLs and eligibility criteria data." supabaseMcp = container "Supabase MCP" "MCP" "Used by edge functions to insert and update data in Supabase Postgres." browserMcp = container "Browser MCP" "MCP" "Used by edge functions to browse official government sites and extract data." edgeFuncWebsites = container "Supabase Edge Function - Fetch Authentic Websites" "Supabase Edge Function" "Uses Browser MCP to find authentic government website URLs for each country 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 to Supabase Postgres via Supabase MCP." } browserMcp -> edgeFuncWebsites "Provides discovered government website URLs" edgeFuncWebsites -> supabaseMcp "Saves authentic websites" supabaseMcp -> supabaseDb "Inserts authentic website data" edgeFuncEligibility -> supabaseDb "Reads authentic URLs" edgeFuncEligibility -> browserMcp "Fetches eligibility criteria" edgeFuncEligibility -> supabaseMcp "Saves eligibility data" supabaseMcp -> supabaseDb "Inserts eligibility criteria data" apiEndpoint -> supabaseDb "Retrieves passport data" frontend -> apiEndpoint "Requests and displays data" } views { systemContext passportSystem { include * autolayout lr title "System Context - Passport Compass Global" } container passportSystem { include * autolayout lr title "Container View - Passport Compass Global" } 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 on the website" } theme default } }