Skip to content

felipezb/DocBrain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DocBrain – Sistema de Gestão de Documentos com IA

Descrição

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.


Funcionalidades Principais

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

Estrutura do Projeto

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

Instalação e Execução

Pré-requisitos

  • Python 3.10+
  • pip (gerenciador de pacotes Python)
  • Chave de API do Google Generative AI (Gemini)

1. Clone o repositório

git clone https://github.com/felipezb/docbrain.git
cd docbrain

2. Crie e ative o ambiente virtual

Windows:

python -m venv venv
venv\Scripts\activate

Linux/macOS:

python3 -m venv venv
source venv/bin/activate

3. Instale as dependências

pip install -r requirements.txt

4. Configure as variáveis de ambiente

Crie um arquivo .env na raiz do projeto:

GOOGLE_API_KEY=sua-chave-api-google-gemini
FLASK_ENV=development
SECRET_KEY=sua-chave-secreta-aqui

Ou 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')

5. Inicialize o banco de dados

python init_db.py

Você deve ver:

============================================================
INIT DB: Concluído
============================================================

6. Execute a aplicação

python run.py

Acesse em: http://localhost:5000


Como Usar

1. Cadastro e Login

  • Acesse a página de Cadastro e crie uma conta
  • Faça Login com suas credenciais

2. Criar Novo Documento

  • 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

3. Gerenciar Documentos

  • Clique em "Histórico" para ver todos os seus documentos
  • Exportar documento como PDF
  • Deletar documentos que não precisa mais

4. Dashboard

  • Acesse o Dashboard para visualizar estatísticas e atalhos

Tecnologias Utilizadas

Backend

  • 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

Frontend

  • HTML5 - Estrutura
  • CSS3 - Estilização
  • Bootstrap 5 - Framework CSS responsivo
  • JavaScript - Interatividade

Banco de Dados

  • SQLite - Banco de dados leve e portável

IA e APIs

  • Google Generative AI (Gemini) - Geração de documentos com IA

Exportação

  • xhtml2pdf / pisa - Conversão HTML para PDF

Testes

  • pytest - Framework de testes
  • pytest-flask - Extensões para testes Flask
  • pytest-cov - Relatórios de cobertura de testes

Modelos de Dados

Usuario

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)

Documento

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)

Rotas da API

Autenticação

  • GET /login - Página de login
  • POST /login - Enviar credenciais
  • GET /cadastro - Página de cadastro
  • POST /cadastro - Criar nova conta
  • GET /logout - Desconectar

Documentos

  • GET /documentos/novo - Página de novo documento
  • POST /documentos/novo - Criar/gerar/exportar documento
  • GET /documentos/historico - Listar documentos do usuário
  • POST /documentos/<id>/deletar - Deletar documento
  • GET /documentos/<id>/exportar_pdf - Exportar como PDF

Dashboard

  • GET /dashboard - Página principal (dashboard)

Configurações

  • GET /configuracoes - Página de configurações

Variáveis de Ambiente

# 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

Troubleshooting

Erro: "GOOGLE_API_KEY não configurada"

  • Adicione sua chave de API do Google no arquivo .env
  • Baixe a chave em: Google AI Studio

Erro: "banco de dados não encontrado"

  • Execute: python init_db.py

Erro ao gerar PDF

  • Verifique se xhtml2pdf está instalado: pip install xhtml2pdf

Porta 5000 já em uso

  • Execute em outra porta: python run.py --port 5001

Roadmap Futuro

  • 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ção

Contribuições são bem-vindas! Siga os passos abaixo:

  1. Fork o repositório
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Autor

Felipe Zanella Barbosa


Suporte

Se encontrar problemas ou tiver dúvidas:

  1. Abra uma Issue no GitHub
  2. Envie um email para felipezanella18@gmail.com

Testes

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.txt

Rodar todos os testes

pytest -v

Rodar testes com cobertura

pytest --cov=app --cov-report=html
# relatório em: htmlcov/index.html

Rodar um teste específico

pytest tests/test_documentos.py::TestExportarPDF::test_exportar_pdf_sucesso -q

Cuidados e recomendações

  • A fixture conftest.py cria 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 xhtml2pdf está 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors