- Adicionar validação de entrada de dados no formulário:
- Campo word-input
- Verificar se os dados inseridos são válidos (por exemplo, e-mail no formato correto)
- Tornar todos os campos obrigatórios
- Criar uma página de login:
- Adicionar rotas para a página de login
- Criar um formulário de login
- Implementar a autenticação do usuário:
- Adicionar campo de e-mail no formulário de login
- Exibir um campo para o usuário inserir a senha
- Permitir o login após a validação bem-sucedida
- Adicionar feedback visual quando o login for concluído
- Adicionar feedback visual quando o login for falho
- Adicionar feedback visual quando executar o logout
- Adicionar suporte para registro de novos usuários:
- Criar uma página de registro
- Adicionar rotas para a página de registro
- Adicionar um formulário de registro
- Implementar a criptografia de senhas antes de registrá-las
- Validar a integridade dos dados de registro (e-mail, senha, etc.)
- Adicionar opção de logout
- Dividir a rota
/generate
para separar a geração de definições e sentenças, garantindo que ao clicar no botãoGenerate
faça chamadas ao mesmo tempo na geração de definições e sentenças:- Criar uma função separada para fazer a chamada à rota
/generate/definitions
- Criar uma função separada para fazer a chamada à rota
/generate/sentences
- Chamar as duas funções simultaneamente ao clicar no botão
Generate
- Criar uma função separada para fazer a chamada à rota
- Implementar a soma dos tokens das rotas
/translate
,/generate/sentences
e/generate/definitions
:- Atualizar o state para incluir a soma dos tokens
- Exibir a soma dos tokens no frontend
- Chamar endpoint
/token/sum
ao clicar no botãoTranslate this sentence
- Ao clicar no botão
Translate this sentence
, somar os tokens da tradução atual aos tokens já somados anteriormente, tornando o totalTokenCount dinâmico - Sempre que clicar no botão
Translate this sentence
fazer a soma de tokens junto com tokens somados anteriores, garantindo que a soma seja cumulativa - Remover
translationTokenCount
emApp.tsx
- Reformular o header do frontend:
- Melhorar a aparência e a usabilidade do header
- Criar uma página de configurações, na qual o usuário poderá personalizar:
- Modelo LLM (Language Model) de sua preferência
- Número de sentenças geradas
- Voz TTS preferida para o idioma selecionado
- Corrigir 'translationTokenCount' is assigned a value but never used
- Renomear as constantes
API_URL_DEFINITIONS
eAPI_URL_SENTENCES
paraDEFINITIONS_URL
eSENTENCES_URL
respectivamente - Implementar a integração com
OpenRouter
:- Atualizar a interface do usuário para permitir a seleção do modelo de linguagem do OpenRouter
- Adicionar lógica para chamar a API correta dentro do
expressServer.ts
usandoapiService
- Garantir que a seleção no campo
Select API Service
fique salva
- Implementar a persistência dos campos selecionados pelo usuário usando context e localStorage:
- Salvar a seleção de idioma nativo, idioma de aprendizado, serviço de API, serviço de TTS e voz preferida no localStorage
- Carregar as seleções salvas do localStorage ao iniciar a aplicação
- Atualizar o contexto do aplicativo para refletir as seleções salvas
- Corrigir o campo
Select Voice:
para que a opção selecionada seja persistida corretamente no localStorage
- Otimizar o carregamento de assets:
- Minimizar o tamanho dos assets
- Utilizar lazy loading para imagens e outros assets
- Melhorar a experiência do usuário com animações e transições suaves:
- Adicionar transições suaves para mudanças de estado
- Adicionar animações para feedback visual
- Feedback visual para ações do usuário:
- Exibir feedback visual quando o usuário salva itens, remove itens, e outras ações
- Aprimorar feedback visual durante o carregamento do
handleSubmit
- Aprimorar feedback visual durante o carregamento do
handleGenerateDialogue
- Aprimorar feedback visual durante o carregamento do
handleAnalyzeFrequency
- Aprimorar feedback visual durante o carregamento do
handleTranslation
- Implementar um dark mode:
- Adicionar suporte para dark mode
- Permitir a alternância entre light e dark mode
- Melhorar a acessibilidade da aplicação:
- Garantir que a aplicação seja navegável via teclado
- Adicionar suporte ao prompt
analyzeFrequency
- Criar uma função para tratar a requisição de análise de frequência no
App.tsx
- Adicionar um botão para acionar a análise de frequência na interface do usuário
- Criar uma modal para exibir o resultado da análise de frequência detalhadamente
- Aprimorar o estilo
Modal.css
- Aprimorar o estilo
App.css
para aumentar a separação entre botões
- Criar uma função para tratar a requisição de análise de frequência no
- Adicionar console.log para debugging:
-
handleSubmit
-
handleGenerateDialogue
-
handleAnalyzeFrequency
-
handleTranslation
-
- Adicionar console.log para exibir o resultado:
-
handleSubmit
-
handleGenerateDialogue
-
handleAnalyzeFrequency
-
handleTranslation
-
- Garantir chamada ao endpoint
/generate/dialogue
no botãoGenerate Dialogue
- Exibir conteúdo do
handleGenerateDialogue
no Modal - Corrigir problema na exibição do conteúdo Modal devido a implementação do
handleGenerateDialogue
- Corrigir context para o campo AI Model ser salvo corretamente
- Modularizar as funções de manipulação de eventos no App.tsx:
- Mover
handleSubmit
para um arquivo separadohandleSubmit.ts
- Mover
handleGenerateDialogue
para um arquivo separadohandleGenerateDialogue.ts
- Mover
handleAnalyzeFrequency
para um arquivo separadohandleAnalyzeFrequency.ts
- Mover
handleTranslation
para um arquivo separadohandleTranslation.ts
- Importar as funções modularizadas no
App.tsx
- Corrigir warnings de "is assigned a value but never used" em
App.tsx
- Corrigir warnings de "is defined but never used" em
handleSubmit.ts
- Corrigir warnings de "is defined but never used" em
handleGenerateDialogue.ts
- Corrigir warnings de "is defined but never used" em
handleAnalyzeFrequency.ts
- Corrigir warnings de "is defined but never used" em
handleTranslation.ts
- Mover
- Atualizar
handleTranslation
para receber as informações do usuário peloApp.tsx
:- Modificar a função
handleTranslation
para aceitarnativeLanguage
,targetLanguage
,apiService
ellm
como parâmetros - Passar os valores corretos de
nativeLanguage
,targetLanguage
,apiService
ellm
doApp.tsx
para a funçãohandleTranslation
- Modificar a função
- Considerar o uso de cookies HTTP-only para armazenar tokens de autenticação em vez de localStorage:
- Instalar e configurar
js-cookie
para gerenciar cookies no frontend - Implementar a armazenagem de tokens de autenticação em cookies HTTP-only no
useAuth.ts
- Remover a armazenagem de tokens de autenticação no localStorage
- Atualizar a lógica de autenticação para ler tokens de cookies HTTP-only
- Atualizar a lógica de logout para remover tokens de cookies HTTP-only
- Instalar e configurar
- Implementar configurações de privacidade:
- Adicionar opções para controlar a coleta de dados de uso
- Adicionar opções para excluir dados pessoais
- Proteger endpoints com autenticação e autorização adequadas:
- Implementar autenticação de usuários para todas as rotas
- Garantir que apenas usuários autenticados possam acessar certas rotas
- Implementar tokens de sessão para manter a autenticação
- Adicionar middleware de autenticação para rotas protegidas
- Mover a interface
VoiceOption
dovoiceOptions.ts
paraTypes.ts
- Alterar a forma que o
supportedLanguages
é apresentado:- Atualizar os
value=
emLanguageSelector.tsx
para usar os novos nomes de idioma - Atualizar as comparações de
targetLanguage ===
emApp.tsx
para usar os novos nomes de idioma - Atualizar os
language:
emvoiceOptions.ts
para corresponder aos novos nomes
- Atualizar os
- Renomeei o arquivo
languageSelector.tsx
paraLanguageSelector.tsx
para seguir a convenção PascalCase para componentes React
- Implementar a funcionalidade de salvar itens no banco de dados
- Dividir a rota
/generate
para separar a geração de definições e sentenças, garantindo que ao clicar no botãoGenerate
faça chamadas ao mesmo tempo na geração de definições e sentenças:- Criar uma nova rota
/generate/definitions
para a geração de definições - Criar uma nova rota
/generate/sentences
para a geração de sentenças - Implementar a lógica para gerar definições na rota
/generate/definitions
- Implementar a lógica para gerar sentenças na rota
/generate/sentences
- Criar uma nova rota
- Implementar a soma dos tokens das rotas
/translate
,/generate/sentences
e/generate/definitions
:- Atualizar a lógica de cálculo dos tokens para incluir a soma dos tokens de todas as rotas
- Implementar novo endpoint
/token/sum
- Implementar suporte para modelos LLM personalizados
- Implementar suporte para selecionar a voz TTS preferida no backend
- Implementar suporte para selecionar o número de sentenças geradas
- Implementar a integração com
OpenRouter
:- Inserir as chaves de API e URLs necessárias dentro do .env
- Criar
./openRouter.ts
para realizar interação com API do OpenRouter - Testar a integração com a API do OpenRouter
- Implementar a lógica para gerar definições usando o OpenRouter
- Implementar a lógica para gerar sentenças usando o OpenRouter
- Implementar a lógica para traduzir sentenças usando o OpenRouter
- Atualizar as rotas e endpoints para suportar a integração com o OpenRouter
- Atualizar as chamadas de API para chamar o arquivo correto
./anthropicClaude
ou./openRouter.ts
de acordo com a seleção do usuário
- Adicionar suporte para fallbacks para APIs em caso de falhas:
- Implementar a lógica de fallback para a API de geração de definições
- Implementar a lógica de fallback para a API de geração de sentenças
- Implementar a lógica de fallback para a API de tradução
- Implementar a lógica de fallback para a API de TTS (Text-to-Speech)
- Implementar a recuperação automática de chamadas de APIs em caso de falhas
- Adicionar logs de falhas nas chamadas de APIs
- Adicionar suporte ao prompt
analyzeFrequency
- Implementar a rota
/analyze/frequency
noexpressServer.ts
- Adicionar a lógica para processar a análise de frequência usando o
anthropicClaude
- Adicionar a lógica para processar a análise de frequência usando o
openRouter
- Testar a integração da rota
/analyze/frequency
com as APIs Anthropic Claude e OpenRouter - Adicionar a lógica de cálculo dos tokens na rota
/analyze/frequency
- Implementar a soma dos tokens da rota
/analyze/frequency
com os tokens de outras rotas - Atualizar a lógica de cálculo dos tokens para incluir a soma dos tokens da rota
/analyze/frequency
- Implementar a rota
- Registro de resultados das respostas da API endpoints:
- Resultados em
/generate/definitions
- Resultados em
/generate/sentences
- Resultados em
/translate
- Resultados em
/analyze/frequency
- Resultados em
- Renomear as funções do
anthropicClaude
- Adicionar suporte ao prompt
getDialogue
- Implementar a rota
/generate/dialogue
noexpressServer.ts
- Adicionar a lógica no
anthropicClaude
- Adicionar a lógica no
openRouter
- Adicionar a lógica de cálculo dos tokens na rota
/generate/dialogue
- Implementar a rota
- Implementar novos parâmetros na chamada de API do
openRouter.ts
:- Adicionar o parâmetro
max_tokens
nas funções de definições, sentenças, tradução, diálogo, e análise de frequência - Adicionar o parâmetro
temperature
nas funções de definições, sentenças, tradução, diálogo, e análise de frequência
- Adicionar o parâmetro
- Implementar a gestão de sessões de usuário
- Implementar autenticação do usuário:
- Validar as credenciais fornecidas pelo frontend
- Implementar endpoints na autenticação do usuário:
- Criar endpoint
/user/login
para autenticação de usuários - Criar endpoint
/user/logout
para logout de usuários - Criar endpoint
/user/register
para registro de usuários - Criar endpoint
/check-auth
para verificar se o usuário está autenticado - Implementar a lógica de validação de credenciais no backend
- Criar endpoint
- Implementar o uso de um banco de dados PostgreSQL para armazenar dados de usuários e senhas:
- Configurar o banco de dados PostgreSQL
- Criar tabelas para usuários
- Implementar queries para autenticação e registro de usuários
- Implementar a criptografia de senhas (bcrypt) antes de armazená-las no banco de dados
- Considerar o uso de cookies HTTP-only para armazenar tokens de autenticação em vez de localStorage:
- Instalar e configurar
cookie-parser
para gerenciar cookies no backend - Implementar a armazenagem de tokens de autenticação em cookies HTTP-only no backend
- Atualizar a lógica de autenticação para enviar tokens em cookies HTTP-only
- Atualizar a lógica de logout para remover tokens de cookies HTTP-only
- Instalar e configurar
- Proteger endpoints com autenticação e autorização adequadas:
- Implementar autenticação de usuários para todas as rotas
- Garantir que apenas usuários autenticados possam acessar certas rotas
- Implementar tokens de sessão para manter a autenticação
- Adicionar middleware de autenticação para rotas protegidas
- Garantir que a lógica de validação e manipulação de idiomas no backend esteja alinhada com as mudanças feitas no frontend
- Alterar o array
supportedLanguages
emexpressServer.ts
para:const supportedLanguages = [ 'English (United States)', 'Italian (Italy)', 'German (Germany)', 'French (France)', 'Spanish (Spain)', 'Portuguese (Brazil)', 'Dutch (Netherlands)', 'Polish (Poland)', 'Russian (Russia)', 'Mandarin (China)', 'Japanese (Japan)', 'Korean (Korea)' ];
- Alterar o array
- Melhorias prompts para que outros LLMs sejam capazes de gerar conteúdo desejado para o projeto
- getDefinitions
- getSentences
- translateSentence
- getDialogue
- analyzeFrequency
- Criar script
checkDatabaseConnection.ts
para verificar a conexão com o banco de dados PostgreSQL - Criar script
createUsersTable.ts
para criar a tabela users no banco de dados PostgreSQL, definindo as colunas necessárias para armazenar informações dos usuários
- Implementar a integração com
Google Gemini
- Implementar a integração com
Anthropic Claude
- Implementar a integração com
Google Cloud TTS
- Implementar a integração com
Azure Speech
- Implementar a integração com
OpenRouter
- Implementar a integração com
Alibaba Cloud Qwen
- Implementar fallbacks para APIs em caso de falhas
- Implementar os parâmetros
max_tokens
etemperature
na chamada API OpenRouter - Implementar novos endpoint responsável pela autenticação e registro do usuário
- Adicionar informações sobre o projeto no
README.md
- Adicionar arquivo referente a convenções de código no
CONVENTIONS.md
- Criar arquivo
CHANGELOG.md
para manter um registro de todas as mudanças significativas no projeto - Criar arquivo
SECURITY.md
com informações sobre como relatar vulnerabilidades de segurança - Forneça instruções detalhadas no arquio
CONTRIBUTING.md
sobre como contribuir para o projeto - Renomear
todoList.md
paraTODO.md
- Renomear
projectStructure.md
paraSTRUCTURE.md
- Adicionar arquivo
CODE_OF_CONDUCT.md
com as diretrizes de conduta do projeto - Adicionar documentação MIT no projeto:
- Incluir a licença MIT no arquivo
LICENSE
- Atualizar o
README.md
com informações sobre a licença MIT
- Incluir a licença MIT no arquivo
- Criar guias de instalação e configuração
- Criar guia detalhado para importação de flashcards no Anki
- Otimizar o uso de memória e desempenho das rotas do Express
- Melhorar o carregamento de assets para reduzir o tempo de carregamento da aplicação
- Otimizar a lógica de geração de definições e sentenças
- Implementar a criptografia de dados sensíveis
- Adicionar proteções contra injeção de SQL
- Adicionar proteções contra ataques CSRF (Cross-Site Request Forgery)
- Adicionar proteções contra ataques XSS
- Proteger endpoints com autenticação e autorização adequadas
- Implementar a validação de credenciais no back-end
- Considerar o uso de cookies HTTP-only para armazenar tokens de autenticação em vez de localStorage
- Garantir acesso via HTTPS com Nginx
- Melhorar a experiência do usuário com animações e transições suaves
- Implementar um dark mode para a aplicação
- Adicionar mais feedback visual para ações do usuário
- Implementar a personalização de temas
- Melhorar a acessibilidade da aplicação
- Implementar o monitoramento e o registro de logs em produção
- Configurar o equilíbrio de carga para o backend
- Implementar a gestão de versões para o frontend e o backend