O FlashLearn é uma plataforma web de estudo que utiliza Inteligência Artificial e Retrieval-Augmented Generation (RAG) para gerar, organizar e revisar flashcards de forma contextualizada. Envie seus materiais de estudo, e a IA cria flashcards automaticamente — com modo de estudo interativo, revisão inteligente e explicações baseadas nos seus próprios documentos.
- ✨ Funcionalidades
- 🏗️ Arquitetura
- 🔧 Tecnologias Utilizadas
- ⚙️ Requisitos
- 📦 Instalação
- 🔑 Configuração da API
- ➡️ Instruções de Uso
- 📌 Status do Projeto
- 🤝 Diretrizes para Contribuição
- 👥 Equipe de Desenvolvimento
- Upload de arquivo (PDF, TXT, DOCX) → IA gera flashcards automaticamente via Google Gemini
- Tipos de card: padrão, cloze (lacunas), reverso e múltipla escolha
- Edição inline com auto-save via AJAX
- Download dos flashcards em PDF
- Criação com ou sem sessão de estudo vinculada
- Organize materiais em coleções temáticas (ex: "Cálculo I", "Biologia")
- Faça upload de documentos (PDF, TXT, Markdown) por coleção
- Pipeline de ingestão: chunking → embeddings (Gemini) → ChromaDB
- Visualize chunks, status de processamento e metadados por documento
- Modo Estudo: sessão interativa com flip cards e avaliação de confiança
- Revisão Inteligente: ao errar, a IA busca contexto nos seus documentos e gera explicações detalhadas
- Flashcards Corretivos: a IA propõe novos cards para reforçar pontos fracos
- IA Contextual: gera flashcards diretamente a partir dos documentos de uma coleção
- Chat de estudo: converse com a IA sobre o conteúdo da coleção
- Chat de estudo com agente ReAct (LangGraph) integrado ao Gemini
- Ferramentas do agente: busca nos materiais (
search_docs), busca na internet (search_web), listagem e criação de flashcards, resumo de progresso - Busca na internet via Tavily (recomendado) com fallback automático para DuckDuckGo (gratuito, sem chave)
- Contexto injetado por sessão de forma thread-safe: acompanhe o desempenho por sessão com resumo de acertos/erros
- Listagem de flashcards agrupados por coleção
- Exclusão individual de flashcards
FlashLearn/
├── app/
│ ├── webapp/ # Configurações Django (settings, urls, wsgi)
│ ├── user/ # Autenticação, registro e login
│ ├── home/ # Landing page e página Sobre
│ ├── flashcards/ # Geração, edição, listagem e revisão de flashcards
│ │ ├── models.py # UserFlashcard, ReviewLog, ReviewAssist
│ │ ├── services.py # FlashcardService, PDFService, SpacedRepetitionService
│ │ └── templates/
│ ├── ai/ # Integração direta com Google Gemini API
│ ├── rag/ # Pipeline RAG completo
│ │ ├── models.py # Collection, Document, DocumentChunk
│ │ ├── services/
│ │ │ ├── ingestion.py # Upload → Chunk → Embed → ChromaDB
│ │ │ ├── retriever.py # Busca semântica com filtros
│ │ │ ├── chains.py # Chains LCEL (explicações, corretivos)
│ │ │ └── chat_agent.py # Agente LangGraph (ReAct) + 5 ferramentas
│ │ ├── views.py # Coleções, documentos, estudo, revisão, chat
│ │ └── templates/rag/ # 9 templates com Tailwind CSS
│ ├── theme/ # Configuração Tailwind CSS + dark/light mode
│ └── chroma_db/ # Banco vetorial ChromaDB (local)
├── requirements.txt
├── Dockerfile
└── README.md
| Prefixo | App | Descrição |
|---|---|---|
/ |
home | Landing page e sobre |
/user/ |
user | Login, registro |
/flashcards/ |
flashcards | Criar, listar, revisar flashcards |
/study/ |
rag | Coleções, documentos, modo estudo, chat |
/admin/ |
Django | Painel administrativo |
Documento → Loader (PDF/TXT/MD) → Chunking (800 chars, 200 overlap)
→ Embeddings (Gemini text-embedding-004) → ChromaDB (vetores + metadados)
→ Busca Semântica → Chains LCEL → Resposta Contextualizada
- Tailwind CSS (via django-tailwind): Framework CSS responsivo com dark mode
- Django Crispy Forms: Renderização elegante de formulários
- Django 5.1+: Framework web principal
- SQLite: Banco de dados relacional (desenvolvimento)
- WhiteNoise: Servir arquivos estáticos em produção
- django-browser-reload: Hot reload em desenvolvimento
- Google Gemini API (
google-genai): LLM para geração de flashcards e explicações (gemini-2.5-flash-lite) - LangChain: Orquestração de chains, loaders e text splitters
- LangGraph: Agente ReAct (
create_react_agent) com 5 ferramentas para o chat de estudos - LangChain Google GenAI: Integração LangChain ↔ Gemini (embeddings + chat)
- ChromaDB: Banco de dados vetorial para busca semântica
- Tavily: Motor de busca na internet para o agente (plano gratuito disponível)
- DuckDuckGo: Fallback gratuito de busca web (sem chave de API necessária)
- Unstructured: Parsing de documentos (PDF, Markdown)
- Docker: Containerização da aplicação
- python-dotenv: Gerenciamento de variáveis de ambiente
- Sistema Operacional: Linux, macOS ou Windows
- Python: 3.11 ou superior
- Node.js: 18+ (para Tailwind CSS)
- Chave de API: Google Gemini API Key (obter aqui)
- Chave de API (opcional): Tavily API Key (obter aqui — plano gratuito disponível) para busca web no agente
- Espaço em disco: ~500 MB para dependências + ChromaDB
-
Clone o repositório:
git clone https://github.com/seacello/flashlearn.git cd flashlearn -
Crie e ative um ambiente virtual:
python -m venv venv
- Linux/macOS:
source venv/bin/activate - Windows (PowerShell):
.\venv\Scripts\Activate.ps1 - Windows (CMD):
.\venv\Scripts\activate.bat
- Linux/macOS:
-
Instale as dependências Python:
pip install -r requirements.txt
-
Configure as chaves de API: Crie o arquivo
app/.env:GOOGLE_API_KEY=sua_chave_aqui TAVILY_API_KEY=sua_chave_aqui # opcional — habilita busca web no agente
-
Instale as dependências do Tailwind CSS:
python app/manage.py tailwind install
-
Aplique as migrações:
python app/manage.py migrate
-
Crie um superusuário (opcional):
python app/manage.py createsuperuser
-
Inicie o Tailwind CSS (terminal separado):
python app/manage.py tailwind start
-
Inicie o servidor:
python app/manage.py runserver
-
Acesse:
- Aplicação:
http://127.0.0.1:8000/ - Painel admin:
http://127.0.0.1:8000/admin/
- Aplicação:
docker build -t flashlearn .
docker run -p 8000:8000 --env GOOGLE_API_KEY=sua_chave flashlearn-
Acesse o Google AI Studio e gere uma API Key
-
Crie o arquivo
app/.env:GOOGLE_API_KEY=AIzaSy...sua_chave
-
Configurações em
webapp/settings.py:Variável Padrão Descrição GOOGLE_API_KEY— Obrigatória. Chave da API Google Gemini TAVILY_API_KEY— Opcional. Busca web no agente (fallback: DuckDuckGo) RAG_LLM_MODELgemini-2.5-flash-liteModelo LLM para geração de texto RAG_EMBEDDING_MODELmodels/gemini-embedding-001Modelo de embeddings RAG_CHUNK_SIZE800Tamanho dos chunks de texto RAG_CHUNK_OVERLAP200Overlap entre chunks RAG_CHROMA_COLLECTIONflashlearn_docsNome da coleção ChromaDB
- Faça login ou registre-se
- Na home, clique em Criar Flashcards
- Faça upload de um PDF, TXT ou DOCX
- Opcionalmente, selecione ou crie uma sessão de estudo no dropdown (ou deixe em branco)
- Clique em Gerar Flashcards e edite o resultado
- Na home, clique em Estudar com IA (ou acesse
/study/chat/) - Selecione uma sessão para que a IA use seus materiais como contexto (opcional)
- Faça perguntas livremente — o agente:
- Primeiro busca nos seus documentos (
search_docs) - Se não encontrar, busca na internet (
search_web) - Pode criar flashcards durante a conversa e consultar seu progresso
- Primeiro busca nos seus documentos (
- O agente cita as fontes utilizadas na resposta
- Na sessão de estudo (
/study/collections/<id>/), abra a aba Estudar - Clique em Iniciar Estudo para a sessão de flip cards
- Avalie cada flashcard (acertou/errou + nível de confiança)
- Ao errar, solicite Ajuda ao RAG para:
- Receber explicação contextualizada baseada nos seus materiais
- Ver os trechos fonte relevantes
- Gerar flashcards corretivos automáticos
- Acesse
/study/documents/upload/ou clique em Enviar Material dentro de uma sessão - Faça upload de PDF, TXT ou Markdown
- Aguarde o processamento (pendente → processando → concluído)
- A IA passa a usar esse conteúdo nas respostas e no modo estudo
Versão atual: Em desenvolvimento ativo
Última atualização: 26/02/2026
- Autenticação e registro de usuários
- Geração de flashcards via upload de arquivo com Google Gemini
- Tipos de card: padrão, cloze, reverso e múltipla escolha
- Edição inline com auto-save (AJAX) e download em PDF
- Pipeline RAG completo: ingestão, embeddings, ChromaDB, busca semântica
- Sessões (coleções) para organizar materiais de estudo
- Modo Estudo interativo (flip cards + avaliação de confiança)
- Revisão com RAG: explicações contextualizadas + flashcards corretivos
- Agente LangGraph (ReAct) com 5 ferramentas: busca em documentos, busca na internet, flashcards, progresso
- Busca na internet no agente via Tavily (com fallback DuckDuckGo gratuito)
- Repetição espaçada com resumo de acertos/erros por sessão
- Dark mode / Light mode
- Containerização com Docker
- Algoritmo SM-2 para repetição espaçada avançada
- Suporte a DOCX e PPTX no pipeline RAG
- Dashboard com estatísticas de desempenho
- GitHub Actions para CI/CD
- Deploy em produção com PostgreSQL
- Abra uma issue para sugerir funcionalidades ou reportar bugs
- Crie uma branch para suas mudanças:
git checkout -b feature/minha-contribuicao
- Faça um pull request detalhando as alterações
- Aguarde a revisão da equipe
- Marcello Menezes — Líder Técnico
- Eduardo Santana — Fullstack Developer