DocBrain é uma aplicação web que utiliza inteligência artificial (Google Gemini) para gerar, gerenciar e exportar documentos comerciais de forma eficiente. Desenvolvido com Flask no backend e HTML/CSS/Bootstrap no frontend, o projeto visa facilitar a criação de documentos profissionais em ambientes corporativos.
Autenticação de Usuários
- Cadastro e login seguro
- Alteração de senha via modal
- Gerenciamento de sessão com Flask-Login
Geração de Documentos com IA
- Integração com Google Gemini (API Generative AI)
- Geração automática de documentos comerciais formatados em HTML
- Pré-visualização em tempo real
- Suporte a múltiplos tipos de documentos
Gerenciamento de Documentos
- Criar, visualizar e deletar documentos
- Histórico completo de documentos por usuário
- Armazenamento em banco de dados SQLite
Exportação
- Exportação de documentos para PDF
- Layout profissional e compacto
- Download direto do navegador
Dashboard
- Visualização de estatísticas
- Acesso rápido às principais funcionalidades
docbrain/
├── app/
│ ├── static/
│ │ └── img/
│ │ └── logo.png
│ ├── templates/
│ │ ├── index.html
│ │ ├── login.html
│ │ ├── cadastro.html
│ │ ├── dashboard.html
│ │ ├── editar_documento.html
│ │ ├── esqueci_senha.html
│ │ ├── precos.html
│ │ ├── novo_documento.html
│ │ ├── historico.html
│ │ └── configuracoes.html
│ ├── routes/
│ │ ├── dashboard.py
│ │ ├── index.py
│ │ ├── auth.py
│ │ ├── documentos.py
│ │ ├── precos.py
│ │ └── configuracoes.py
│ ├── models.py
│ ├── forms.py
│ ├── utils/
│ │ └── ia.py
│ └── __init__.py
├── instance/
│ └── docbrain.db
├── init_db.py
├── migrations/
│ └── env.py
├── tests/
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_auth.py
│ ├── test_documentos.py
│ └── test_models.py
├── requirements.txt
├── config.py
├── run.py
├── init_db.py
└── README.md
- Python 3.10+
- pip (gerenciador de pacotes Python)
- Chave de API do Google Generative AI (Gemini)
git clone https://github.com/felipezb/docbrain.git
cd docbrainWindows:
python -m venv venv
venv\Scripts\activateLinux/macOS:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCrie um arquivo .env na raiz do projeto:
GOOGLE_API_KEY=sua-chave-api-google-gemini
FLASK_ENV=development
SECRET_KEY=sua-chave-secreta-aquiOu edite instance/config.py:
import os
SECRET_KEY = os.getenv('SECRET_KEY', 'dev-key-change-in-production')
SQLALCHEMY_DATABASE_URI = 'sqlite:///docbrain.db'
GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')python init_db.pyVocê deve ver:
============================================================
INIT DB: Concluído
============================================================
python run.pyAcesse em: http://localhost:5000
- Acesse a página de Cadastro e crie uma conta
- Faça Login com suas credenciais
- Clique em "Novo documento" no menu
- Preencha os campos:
- Tipo de documento (Proposta, Contrato, Termo, etc.)
- Nome do cliente
- Empresa
- Valor
- Prazo
- Personalização (instruções adicionais)
- Clique em "Gerar com IA" para gerar o documento
- Visualize a pré-visualização
- Clique em "Salvar" para armazenar ou "Exportar para PDF" para baixar
- Clique em "Histórico" para ver todos os seus documentos
- Exportar documento como PDF
- Deletar documentos que não precisa mais
- Acesse o Dashboard para visualizar estatísticas e atalhos
- Python 3.11+ - Linguagem principal
- Flask - Framework web
- Flask-Login - Gerenciamento de sessão
- Flask-WTF - Validação de formulários
- SQLAlchemy - ORM para banco de dados
- Werkzeug - Utilitários de segurança (hash de senhas)
- python-dotenv - Carregamento de variáveis de ambiente a partir de arquivos .env
- HTML5 - Estrutura
- CSS3 - Estilização
- Bootstrap 5 - Framework CSS responsivo
- JavaScript - Interatividade
- SQLite - Banco de dados leve e portável
- Google Generative AI (Gemini) - Geração de documentos com IA
- xhtml2pdf / pisa - Conversão HTML para PDF
- pytest - Framework de testes
- pytest-flask - Extensões para testes Flask
- pytest-cov - Relatórios de cobertura de testes
class Usuario(db.Model):
id = db.Column(db.Integer, primary_key=True)
nome = db.Column(db.String(120), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
senha = db.Column(db.String(255), nullable=False)
data_criacao = db.Column(db.DateTime, default=datetime.utcnow)class Documento(db.Model):
id = db.Column(db.Integer, primary_key=True)
usuario_id = db.Column(db.Integer, db.ForeignKey('usuarios.id'), nullable=False)
tipo = db.Column(db.String(80))
cliente = db.Column(db.String(200))
empresa = db.Column(db.String(200))
valor = db.Column(db.String(100))
prazo = db.Column(db.String(100))
observacoes = db.Column(db.Text)
conteudo = db.Column(db.Text) # HTML formatado
data_criacao = db.Column(db.DateTime, default=datetime.now(timezone.utc))
data_atualizacao = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)GET /login- Página de loginPOST /login- Enviar credenciaisGET /cadastro- Página de cadastroPOST /cadastro- Criar nova contaGET /logout- Desconectar
GET /documentos/novo- Página de novo documentoPOST /documentos/novo- Criar/gerar/exportar documentoGET /documentos/historico- Listar documentos do usuárioPOST /documentos/<id>/deletar- Deletar documentoGET /documentos/<id>/exportar_pdf- Exportar como PDF
GET /dashboard- Página principal (dashboard)
GET /configuracoes- Página de configurações
# Chave de API do Google Generative AI
GOOGLE_API_KEY=sua-chave-aqui
# Chave secreta do Flask (altere em produção!)
SECRET_KEY=sua-chave-secreta
# Ambiente
FLASK_ENV=development- Adicione sua chave de API do Google no arquivo
.env - Baixe a chave em: Google AI Studio
- Execute:
python init_db.py
- Verifique se
xhtml2pdfestá instalado:pip install xhtml2pdf
- Execute em outra porta:
python run.py --port 5001
- Autenticação com OAuth (Google, GitHub)
- Upload de arquivos
- Busca avançada de documentos
- Compartilhamento de documentos entre usuários
- Editor de documentos online
- Assinatura digital de documentos
- Suporte a múltiplos idiomas
- Integração com Google Drive / OneDrive
Contribuições são bem-vindas! Siga os passos abaixo:
- Fork o repositório
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Felipe Zanella Barbosa
- 📧 Email: felipezanella18@gmail.com
- 🐙 GitHub: @felipezb
- 💼 LinkedIn: Felipe Zanella Barbosa
Se encontrar problemas ou tiver dúvidas:
- Abra uma Issue no GitHub
- Envie um email para felipezanella18@gmail.com
Esta aplicação inclui uma suíte de testes com pytest cobrindo modelos, rotas e geração/exportação de documentos.
Estrutura de testes (exemplo)
- tests/
- init.py
- conftest.py # fixtures: app, client, usuario_teste, documento_teste
- test_auth.py
- test_documentos.py
- test_models.py
- fixtures/init.py
Instalar dependências de teste
venv\Scripts\activate
pip install -r requirements.txtRodar todos os testes
pytest -vRodar testes com cobertura
pytest --cov=app --cov-report=html
# relatório em: htmlcov/index.htmlRodar um teste específico
pytest tests/test_documentos.py::TestExportarPDF::test_exportar_pdf_sucesso -qCuidados e recomendações
- A fixture
conftest.pycria uma app de teste com SQLite in-memory e desativa CSRF. - Mockeie chamadas externas (API Google Generative AI) nas funções de geração; use monkeypatch ou patch do pytest para retornar HTML fixo durante os testes.
- Para testar exportação de PDF certifique-se que
xhtml2pdfestá instalado; os testes verificam apenas o content-type e a existência do header %PDF. - Rodar os testes em CI: configure variáveis de ambiente mínimas (ex.: SECRET_KEY); para segurança não inclua chaves reais no CI — mockeie integrações externas.