Skip to content

Latest commit

 

History

History
278 lines (270 loc) · 17.8 KB

TODO.md

File metadata and controls

278 lines (270 loc) · 17.8 KB

Todo List for Anki Assistant Languages

Frontend

  • 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ão Generate 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
  • 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ão Translate 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 em App.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 e API_URL_SENTENCES para DEFINITIONS_URL e SENTENCES_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 usando apiService
    • 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
  • 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ão Generate 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 separado handleSubmit.ts
    • Mover handleGenerateDialogue para um arquivo separado handleGenerateDialogue.ts
    • Mover handleAnalyzeFrequency para um arquivo separado handleAnalyzeFrequency.ts
    • Mover handleTranslation para um arquivo separado handleTranslation.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
  • Atualizar handleTranslation para receber as informações do usuário pelo App.tsx:
    • Modificar a função handleTranslation para aceitar nativeLanguage, targetLanguage, apiService e llm como parâmetros
    • Passar os valores corretos de nativeLanguage, targetLanguage, apiService e llm do App.tsx para a função handleTranslation
  • 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
  • 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 do voiceOptions.ts para Types.ts
  • Alterar a forma que o supportedLanguages é apresentado:
    • Atualizar os value= em LanguageSelector.tsx para usar os novos nomes de idioma
    • Atualizar as comparações de targetLanguage === em App.tsx para usar os novos nomes de idioma
    • Atualizar os language: em voiceOptions.ts para corresponder aos novos nomes
  • Renomeei o arquivo languageSelector.tsx para LanguageSelector.tsx para seguir a convenção PascalCase para componentes React

Backend

  • 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ão Generate 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
  • 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 no expressServer.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
  • Registro de resultados das respostas da API endpoints:
    • Resultados em /generate/definitions
    • Resultados em /generate/sentences
    • Resultados em /translate
    • Resultados em /analyze/frequency
  • Renomear as funções do anthropicClaude
  • Adicionar suporte ao prompt getDialogue
    • Implementar a rota /generate/dialogue no expressServer.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 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
  • 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
  • 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
  • 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 em expressServer.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)'
      ];
  • 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

Integração de APIs

  • 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 e temperature na chamada API OpenRouter
  • Implementar novos endpoint responsável pela autenticação e registro do usuário

Documentação

  • 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 para TODO.md
  • Renomear projectStructure.md para STRUCTURE.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
  • Criar guias de instalação e configuração
  • Criar guia detalhado para importação de flashcards no Anki

Performance e Otimização

  • 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

Segurança

  • 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

UX e Design

  • 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

Deploy

  • 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