- Node 18+ e npm
- Conta no Supabase (chave da API do Supabase)
- Conta no Google AI Studio (chave da API do Gemini)
-
Acesse o Supabase Studio → New project.
-
Anote:
- Project URL:
https://<slug>.supabase.co - Publishable key (API Keys → “Publishable key”: inicia com
sb_publishable_...) - (Opcional) Project Ref: aparece no canto superior ou nas URLs de API.
- Project URL:
-
Em Authentication → URL configuration, coloque:
- Site URL:
http://localhost:5173
- Site URL:
No SQL Editor do Supabase, rode o script abaixo:
create table if not exists lesson_plans (
id uuid primary key default gen_random_uuid(),
user_id uuid references auth.users(id) on delete set null,
title text not null,
summary text not null,
playful_intro text,
bncc_learning_objective text,
objectives text[] not null,
activities jsonb not null,
assessment_rubric jsonb,
bncc_code text,
resources text,
metadata jsonb not null,
created_at timestamp with time zone default now()
);
alter table lesson_plans enable row level security;
create policy "select own or public" on lesson_plans
for select using (auth.uid() = user_id or user_id is null);
create policy "insert as owner" on lesson_plans
for insert with check (auth.uid() = user_id);
create policy "update own" on lesson_plans
for update using (auth.uid() = user_id);
create policy "delete own" on lesson_plans
for delete using (auth.uid() = user_id);Na pasta do projeto, o arquivo já está em:
supabase/functions/generate-lesson-plan/index.ts
Ele:
- recebe os campos do formulário;
- chama o Gemini forçando JSON;
- prioriza BNCC e Recursos (se vierem);
- retorna o plano completo.
No terminal, na raiz do projeto:
# entre na pasta do projeto
supabase functions deploy generate-lesson-plan
# defina secrets do projeto
supabase secrets set GEMINI_API_KEY="SUA_CHAVE_DO_AI_STUDIO"
# opcional: escolher modelo que existe na sua conta
supabase secrets set GEMINI_MODEL="gemini-2.5-flash"- Base Functions URL:
https://<slug>.functions.supabase.co - Rota:
/generate-lesson-plan→ endpoint final:https://<slug>.functions.supabase.co/generate-lesson-plan
Teste rápido (PowerShell):
$body = @{
subject="Matemática"
topic="Equações do 1º grau"
grade="9º ano"
durationMinutes=50
bnccCode="EF09MA01"
resources="livro didático cap. 3; projetor"
language="pt-BR"
} | ConvertTo-Json
Invoke-RestMethod `
-Method Post `
-Uri "https://<slug>.functions.supabase.co/generate-lesson-plan" `
-Headers @{ "Content-Type"="application/json" } `
-Body $body- Abra Google AI Studio → API Keys → Create API key.
- Copie a chave.
- Já salvamos acima via
supabase secrets set GEMINI_API_KEY="...".
Crie/edite web/.env:
VITE_SUPABASE_URL=https://<slug>.supabase.co
VITE_SUPABASE_ANON_KEY=sb_publishable_XXXXXXXXXXXXXXXXXXXX # Publishable key
VITE_FUNCTIONS_BASE_URL=https://<slug>.functions.supabase.co
VITE_FUNCTION_ROUTE=/generate-lesson-plan
VITE_SITE_URL=http://localhost:5173
cd web
npm i
npm run dev
# abre: http://localhost:5173-
Abra
http://localhost:5173. -
Autenticação: crie conta com e-mail/senha.
-
Preencha o formulário:
- Disciplina, Tópico, Série, Duração;
- (Opcional) BNCC e Recursos — se preencher, a IA alinha e usa esses dados;
-
Clique Gerar plano com IA.
-
Visualize:
- Introdução lúdica
- Objetivo de aprendizagem (BNCC)
- Atividades
-
Clique Exportar PDF para baixar o plano.
npm run build-
Objetivo: Gerar planos de aula personalizados com IA (Gemini) — ✔️
-
Componentes exigidos:
- Introdução lúdica — ✔️ (campo dedicado
playfulIntro) - Objetivo de aprendizagem da BNCC — ✔️ (campo
bnccLearningObjective+ alinhamento aobnccCode) - Passo a passo da atividade — ✔️ (
activities: { step, details }[]) - Rubrica de avaliação — ✔️ (
assessmentRubric)
- Introdução lúdica — ✔️ (campo dedicado
-
Stack obrigatória: Supabase (DB/Auth), Google AI Studio / Gemini, Front livre — ✔️
-
Fluxo funcional: formulário → prompt estruturado → chamada ao Gemini (JSON) → salvar e exibir plano → exportar PDF — ✔️
-
Entrega: código + instruções de setup e scripts SQL ✔️
- Supabase criado; peguei URL e Publishable key
- Migrações rodadas no SQL Editor
-
supabase secrets set GEMINI_API_KEY=... -
supabase functions deploy generate-lesson-plan -
web/.envpreenchido com URL/keys do projeto online -
npm i && npm run dev - Formulário → Gerar → Exportar PDF