workspace { model { passportSystem = softwareSystem "Passport Compass Global" { description "A web platform that provides authentic government passport information and eligibility criteria for all countries." # --- Top Layer: Main Application Flow --- frontend = container "React Frontend" "React" "Displays authentic government websites and eligibility criteria, fetched from Supabase via the API endpoint." apiEndpoint = container "API Endpoint" "HTTP API" "Serves data from Supabase Postgres Database to the React frontend." supabaseDb = container "Supabase Postgres Database" "Postgres" "Central database storing authentic websites and eligibility criteria." # --- Middle Layer: Supabase Data Pipeline Components --- edgeFuncWebsites = container "Supabase Edge Function - Authentic Websites" "Supabase Edge Function" "Uses Browser MCP to discover authentic government websites and stores them in Supabase Postgres via Supabase MCP." edgeFuncEligibility = container "Supabase Edge Function - Eligibility Criteria" "Supabase Edge Function" "Reads website URLs from Supabase Postgres via Supabase MCP, uses Browser MCP to extract eligibility criteria, and saves them back via Supabase MCP." supabaseMcp = container "Supabase MCP" "MCP" "Reads and writes data to Supabase Postgres for both Edge Functions." # --- Bottom Layer: External Intelligence Layer --- browserMcp = container "Browser MCP" "MCP" "Browses official government websites to discover URLs and extract eligibility information." } # --- Relationships --- frontend -> apiEndpoint "Requests passport data" apiEndpoint -> supabaseDb "Fetches data from Supabase" browserMcp -> edgeFuncWebsites "Provides authentic government website URLs" edgeFuncWebsites -> supabaseMcp "Sends authentic website data" supabaseMcp -> supabaseDb "Inserts authentic websites" edgeFuncEligibility -> supabaseMcp "Reads authentic URLs from Supabase" edgeFuncEligibility -> browserMcp "Fetches eligibility data from authentic websites" edgeFuncEligibility -> supabaseMcp "Saves eligibility data" supabaseMcp -> supabaseDb "Updates eligibility criteria" } 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 authentic website data" 3: supabaseMcp -> supabaseDb "Save authentic websites" 4: edgeFuncEligibility -> supabaseMcp "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 passport data" 9: frontend -> apiEndpoint "Display passport and eligibility info" } theme default } }