Status: [LIVE] Endpoints found: https://scrzziyuruzzhebpzvdl.supabase.co/functions/v1/moodle-proxy https://scrzziyuruzzhebpzvdl.supabase.co/functions/v1/moodle-proxy` https://scrzziyuruzzhebpzvdl.supabase.co/functions/v1/platform-api` Source: https://github.com/Julioall/moodle-consultas # moodle-consultas Plataforma de Actions para GPTs personalizados. O Moodle é o primeiro conector, mas a base já foi preparada para receber outros serviços no futuro, como Google Drive, planilhas, APIs internas, ERPs e CRMs. ## Arquitetura ``` Frontend React + Vite │ login, cadastro, dashboard, schema YAML e ajuda ▼ API backend no Supabase │ autenticação, chaves de API e proxy dos conectores ▼ Conectores externos │ Moodle hoje, outros serviços depois ▼ Sistemas de origem ``` ## Estrutura ``` supabase/ functions/ moodle-proxy/index.ts # proxy principal — rotas read-only do Moodle platform-api/index.ts # API do dashboard — auth, serviços, API keys e schemas migrations/ 0001_create_api_keys.sql 0002_create_moodle_user_sessions.sql 0003_platform_actions_mvp.sql frontend/ index.html # entrada do app React + Vite src/ # Home, Login, Register, Dashboard, Services, API Key, YAML e Help openapi/ moodle_consultas.yaml # spec OpenAPI canônica do conector Moodle docs/ instrucoes_gpt.md # instruções de sistema para o GPT ``` ## Rotas do frontend | Rota | Descrição | |------|-----------| | `/` | Página inicial pública | | `/login` | Login | | `/register` | Cadastro | | `/dashboard` | Visão geral do painel | | `/dashboard/services` | Serviços disponíveis | | `/dashboard/services/moodle` | Ativação e configuração do Moodle | | `/dashboard/api-key` | Chave de API | | `/dashboard/yaml` | Schema YAML / OpenAPI | | `/dashboard/help` | Ajuda guiada | ## Autenticação do MVP O cadastro e login da plataforma usam Supabase Auth com e-mail e senha. O dashboard chama a Edge Function `platform-api` usando o JWT Supabase da sessão. Por ela o usuário consulta serviços, ativa/desativa Moodle, gera API key e obtém o YAML. A API key das GPT Actions é separada do login da plataforma. Ela usa o formato `gah_live_*`, é salva apenas