Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AprendendoComIA

Aplicação de tutor de inglês com IA: conversação, correção de escrita, prática de pronúncia e vocabulário com SRS (repetição espaçada).

Recursos

  • 🤖 Tutor de Conversa (IA): chat com correções e explicações em tempo real
  • 📝 Correção de Escrita: análise gramatical com feedback detalhado
  • 🎤 Pronúncia: gravação e análise da fala
  • 🎯 Vocabulário (SRS): revisão espaçada para memorização eficiente
  • 📊 Progresso: metas diárias, streak e trilhas personalizadas
  • 🎓 Níveis CEFR (A1–C1): conteúdo adaptado ao nível do aluno

Arquitetura e Implementação Atual

  • Next.js 14 App Router com app/ (servidor por padrão) e componentes client quando necessário
  • Roteamento inicial (home): verificação em servidor do cookie auth_token
    • Autenticado → redireciona para /dashboard
    • Não autenticado → redireciona para /landing
  • Páginas principais:
    • app/landing/page.tsx: landing (marketing + modal de login/registro)
    • app/auth/page.tsx: tela dedicada para login/registro
    • app/dashboard/page.tsx: dashboard autenticado (placeholder inicial)
  • APIs (TypeScript): em app/api/* com validação via Zod, rate limiting in-memory e autenticação por cookie HTTP-only (auth_token com JWT)
  • Banco: lib/db.ts com fallback de conexão (env → mongodb://mongo:27017/ailinguo → mongodb://localhost:27017/ailinguo) e índices idempotentes
  • Segurança: cabeçalhos seguros, CORS dinâmico por CORS_ORIGINS, CSP ajustada em desenvolvimento, cookies HTTP-only, remoção de mock-token, senhas com bcrypt
  • Middleware: middleware.ts para CORS (OPTIONS) e origem dinâmica
  • Estilos: Tailwind CSS com app/globals.css; tailwind.config.js escaneando *.ts,*.tsx
  • UI: componentes shadcn/Radix convertidos para TSX; alguns tipados, sidebar.tsx segue com // @ts-nocheck temporariamente
  • TypeScript: tsconfig.json com strict: true, jsx: preserve, isolatedModules; tipos de domínio em lib/types.ts; env validado em lib/env.ts
  • Infra (opcional): Nginx como reverse proxy (gzip, headers, WebSocket, rate limit), integrado ao docker-compose.yml

Pré-requisitos

  • Docker e Docker Compose (para subir tudo facilmente)
  • Node.js 18+ (para desenvolvimento local)

Subir com Docker

  1. Preparar ambiente

    cp .env.example .env
    docker-compose up --build
  2. Acessar

    http://localhost:3000
    

Desenvolvimento local

  1. Instalar dependências

    yarn install
  2. Configurar .env

    cp .env.example .env
    # ajuste as variáveis conforme necessário
  3. Subir MongoDB (se não usar Docker)

    docker run -d -p 27017:27017 --name mongo mongo:7
    # ou via Homebrew (macOS)
    brew install mongodb/brew/mongodb-community
    brew services start mongodb-community
  4. Rodar o servidor

    # porta padrão 3000; para escolher outra porta:
    PORT=3001 yarn dev

Scripts

  • yarn dev – servidor de desenvolvimento (respeita PORT)
  • yarn build – build de produção
  • yarn start – servidor de produção
  • yarn lint – ESLint
  • yarn seed – popula o banco com dados exemplo
  • yarn test:e2e – testes E2E (Playwright)
  • yarn docker:build / yarn docker:up – Docker Compose
  • yarn docker:dev – build + up
  • yarn typecheck – checagem de tipos (TS)

Variáveis de ambiente

Crie o .env a partir de .env.example:

# Projeto
PROJECT_NAME=AprendendoComIA
NODE_ENV=development

# Banco
MONGODB_URI=mongodb://mongo:27017/ailinguo
DB_NAME=ailinguo

# IA
OPENAI_API_KEY=sua_chave
OPENAI_MODEL=gpt-4o-mini
OPENAI_MODEL_FALLBACK=gpt-4o
AI_TUTOR_MOCK=1

# App
NEXT_PUBLIC_BASE_URL=http://localhost:3000

# CORS
CORS_ORIGINS=*

Notas:

  • Em dev, a CSP permite unsafe-eval apenas quando necessário para tooling.
  • CORS é dinâmico via CORS_ORIGINS e aplicado também no Nginx (quando usado).

Endpoints principais

Autenticação

  • POST /api/auth/register – registro
  • POST /api/auth/login – login
  • GET /api/auth/me – dados do usuário autenticado
  • POST /api/auth/logout – sair (limpa cookie)

Tutor (IA)

  • POST /api/tutor – conversa/correção, validação com Zod, opcionalmente persiste turnos

Vocabulário

  • GET /api/vocabulary/due – cartões devidos do usuário
  • POST /api/vocabulary/review – registrar resposta (SRS)

Chat

  • POST /api/chat/sessions – cria sessão do chat
  • GET /api/chat/history – histórico (quando habilitado)

Estrutura do projeto

app/
  api/                 # rotas de API (TS)
  auth/page.tsx        # tela de login/registro
  dashboard/page.tsx   # dashboard autenticado
  landing/page.tsx     # landing (pública)
  layout.tsx           # layout raiz + globals.css
  page.tsx             # redireciona / → /landing ou /dashboard
components/
  ui/*                 # componentes shadcn/Radix (TSX)
lib/
  db.ts, env.ts, types.ts, utils.ts
middleware.ts          # CORS (OPTIONS) e origem dinâmica
docker-compose.yml, Dockerfile, nginx/* (quando habilitado)

Estilização (Tailwind)

  • app/globals.css contém diretivas @tailwind e design tokens (CSS vars)
  • tailwind.config.js inclui *.ts e *.tsx em content (necessário após migração TS)

Testes (Playwright)

npx playwright install
yarn test:e2e

Solução de problemas

Porta 3000 em uso

lsof -ti:3000 | xargs kill -9
PORT=3001 yarn dev

Falha ao conectar no MongoDB

docker ps | grep mongo
docker-compose restart mongo

Variáveis não carregadas

cp .env.example .env

Licença

Projeto sob licença MIT – veja LICENSE.

Tecnologias

  • Frontend: Next.js 14, React 18/19 types, Tailwind, shadcn/ui, Framer Motion
  • Backend/API: Next.js App Router (rotas de API)
  • Banco: MongoDB
  • IA: OpenAI
  • Auth: JWT em cookie HTTP-only
  • Testes: Playwright
  • Deploy: Docker, Docker Compose, Nginx (opcional)

About

teste

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages