EducaIA é um aplicativo web que ajuda nos estudos a partir de flashcards gerados e gerenciados com repetição espaçada. O usuário envia conhecimento e anotações em texto, o agente de IA transforma esse material em flashcards, e o aplicativo controla o ciclo de revisões de forma dinâmica a partir do feedback dado em cada sessão.
Algumas telas para visualizar o fluxo do app:
- Criação e gerenciamento de baralhos de flashcards para diferentes tópicos de estudo.
- Conversão automática de textos e anotações em flashcards por meio de um agente de IA (LLM via API da OpenAI).
- Revisão espaçada com base no feedback do usuário para ajustar a próxima aparição de cada cartão.
- Interface web baseada em templates EJS com Bootstrap e HTMX, retornando sempre HTML ou trechos de HTML (API hypermedia-first).
- Padrão MVC com separação entre models, controllers e views.
- Backend em Node.js com TypeScript.
- Banco de dados PostgreSQL.
- Frontend com EJS + Bootstrap + HTMX.
- Integração com LLM (OpenAI API) para geração de flashcards.
- TDD aplicado com Jest nos módulos mais críticos e nos wrappers de serviços e bibliotecas externas.
- Diagrama geral em
docs/diagrams/app_architecture.png. - Arquitetura com fila RabbitMQ para processar pedidos de geração de flashcards de forma assíncrona.
- Deploy com duas réplicas do app em Docker para melhorar throughput do consumo da fila e manter a API responsiva.
- Senhas armazenadas com hash (bcrypt) para proteger credenciais.
- Sessão autenticada via JWT enviado em cookie seguro, mantendo o estado de forma compatível com execução serverless e reautenticando automaticamente no navegador.
- Copie o arquivo
.env.examplepara.enve preencha as variáveis necessárias. - Suba o ambiente com Docker:
- Ambiente de desenvolvimento:
make up-devpara iniciar emake down-devpara parar. - Ambiente de produção:
make uppara iniciar emake downpara parar.
- Ambiente de desenvolvimento:
- O projeto é baseado em Node.js + TypeScript; use os scripts do
package.jsonconforme necessário (instalação de dependências, lint, testes, etc.). - Testes críticos são escritos com Jest. Execute-os conforme a necessidade do desenvolvimento.
- O usuário cria ou importa um conjunto de notas em texto.
- O agente de IA converte o material em flashcards e os associa a um baralho.
- Durante as sessões de estudo, o usuário fornece feedback sobre cada cartão.
- O aplicativo agenda a próxima aparição de cada flashcard seguindo a lógica de repetição espaçada.
- Arquitetura:
docs/diagrams/app_architecture.png. - Subir ambiente:
make up-dev. - Parar ambiente:
make down-dev.








