YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
IPA Activity Generator (PT-BR)
Aplicação para gerar atividades em Alfabeto Fonético Internacional (AFI/IPA) voltadas a professores de Educação Especial, com opção futura de captura de áudio dos estudantes para acompanhamento pedagógico.
Não é uma ferramenta diagnóstica. Serve apenas como apoio educacional.
Desenvolvimento local
- Instale as dependências do projeto:
npm install. - Configure as variáveis de ambiente necessárias.
- Execute as migrações do Prisma:
npx prisma migrate dev. - Rode a aplicação em modo dev:
npm run dev. - Após mudanças, valide com
npm run lint,npm run test(Vitest) enpm run build.
Testes
- Unitários:
npm run test(Vitest, inclui validação de esquemas e helpers) - E2E opcional:
npm run test:e2e(Playwright, habilite comE2E_RUN=truee um backend disponível). No CI, esse flag precisa estar setado para que o passo de E2E execute; caso contrário, ele será pulado.
Variáveis de ambiente
As principais chaves para executar o projeto localmente ou em produção estão
detalhadas abaixo. Use .env.local.example como base e ajuste conforme o
ambiente:
| Variável | Descrição | Padrão/observação |
|---|---|---|
NEXT_PUBLIC_APP_URL |
URL base da aplicação, usada para links absolutos. | http://localhost:3000 |
OPENAI_API_KEY / OPENAI_MODEL |
Credenciais para a Responses API. | Vazios por padrão. |
DATABASE_URL |
Conexão do banco (PostgreSQL). | Obrigatória para iniciar o app. |
AUTH_SECRET |
Segredo usado pelo NextAuth para assinar tokens. | Obrigatório. |
AUDIO_CAPTURE_ENABLED |
true/false para habilitar a captura opcional de áudio. |
true |
STORAGE_DRIVER |
s3 (produção) ou local (apenas desenvolvimento). |
s3 |
S3_REGION / S3_BUCKET / S3_ENDPOINT |
Configurações de bucket para o driver S3. | Necessárias quando STORAGE_DRIVER=s3. |
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY |
Credenciais do bucket S3 (ou AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY). |
Necessárias quando STORAGE_DRIVER=s3. |
LOCAL_STORAGE_BASE_URL |
URL de download/upload assinada para o driver local. | http://localhost:3000/storage |
REDIS_URL |
URL do Redis para rate limiting compartilhado. | Opcional; usa memória se ausente. |
E2E_RUN / E2E_BASE_URL |
Flags auxiliares para Playwright E2E. | Comentadas por padrão. |
Fluxo de autenticação
- Login e sessão são gerenciados pelo NextAuth com adaptador Prisma e JWT.
- Autenticação via credenciais (e-mail/senha) com hash usando
bcryptjs. - Novos cadastros usam o endpoint
POST /api/auth/register, que cria a organização e o usuário inicial com papelADMINem uma transação atômica. - As rotas
/dashboarde/capturesão protegidas via middleware e redirecionam usuários não autenticados para/login.
Segurança
- Limites simples em memória para desenvolvimento:
/api/auth/login,/api/auth/registere/api/plans/generateusam a política definida emsrc/lib/rate-limit.ts. - Para produção, configure um limitador com Redis (ex.: Upstash): crie um cliente
Redis usando
REDIS_URLe replique a lógica deapplyRateLimitpara compartilhar contadores entre instâncias antes de responder 429. - Uploads de áudio aceitam apenas
audio/webm,audio/wavouaudio/mpeg, com limite de 10MB validado no cliente e no backend.
Regra "Não quebre o repositório"
- Faça commits pequenos e incrementais.
- Após cada etapa, execute lint e build para garantir integridade.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support