{"id":29959074,"url":"https://github.com/andersonjuniorz/mail-classify","last_synced_at":"2026-04-04T22:31:45.633Z","repository":{"id":303349311,"uuid":"1012244981","full_name":"andersonjuniorz/mail-classify","owner":"andersonjuniorz","description":"Aplicação web que utiliza inteligência artificial para classificar e-mails em categorias predefinidas e sugerir respostas automáticas com base na classificação realizada.","archived":false,"fork":false,"pushed_at":"2025-07-08T03:34:24.000Z","size":249,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-03T21:13:55.165Z","etag":null,"topics":["api-restful","aws-cli","bert-models","ci-cd-pipeline","deep-learing","docker-compose","ec2-container-service","flask-api","hugging-face","ia","python","reactjs","transformers-model","typescript-react"],"latest_commit_sha":null,"homepage":"http://ec2-3-148-166-228.us-east-2.compute.amazonaws.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andersonjuniorz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-02T03:41:33.000Z","updated_at":"2025-07-08T03:46:49.000Z","dependencies_parsed_at":"2025-07-07T06:38:50.462Z","dependency_job_id":"2ff831c1-455c-49d2-8dd8-439ec4d638b9","html_url":"https://github.com/andersonjuniorz/mail-classify","commit_stats":null,"previous_names":["andersonjuniorz/mail-classify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andersonjuniorz/mail-classify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonjuniorz%2Fmail-classify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonjuniorz%2Fmail-classify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonjuniorz%2Fmail-classify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonjuniorz%2Fmail-classify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andersonjuniorz","download_url":"https://codeload.github.com/andersonjuniorz/mail-classify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonjuniorz%2Fmail-classify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31416770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-restful","aws-cli","bert-models","ci-cd-pipeline","deep-learing","docker-compose","ec2-container-service","flask-api","hugging-face","ia","python","reactjs","transformers-model","typescript-react"],"created_at":"2025-08-03T21:08:24.958Z","updated_at":"2026-04-04T22:31:45.616Z","avatar_url":"https://github.com/andersonjuniorz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/user-attachments/assets/bf271820-508a-4aad-9ed0-de5a2997fd9e)\n\n![image](https://github.com/user-attachments/assets/e996a51c-19b4-4930-9787-898ce0972fe5)\n\n![image](https://github.com/user-attachments/assets/42fcc4b9-3b5f-43d8-b865-940b6a26de68)\n\n\n\n\n\n# Classificador Inteligente de E-mails com IA\n\n\nEste projeto é uma aplicação web simples, porém robusta, desenvolvida para classificar e-mails em categorias predefinidas (`Produtivo` ou `Improdutivo`) e sugerir respostas automáticas com base na classificação. A solução utiliza Inteligência Artificial (IA) no backend, com um frontend intuitivo para interação do usuário.\n\n## 🚀 Funcionalidades\n\n* **Entrada Flexível de E-mails:**\n    * Upload de arquivos de e-mail nos formatos `.txt` ou `.pdf`.\n    * Inclusão direta de texto de e-mails através de formulário manual (`Enviar Para`, `Assunto`, `Mensagem`).\n\n* **Classificação de E-mails com IA:**\n    * Utiliza um modelo de Processamento de Linguagem Natural (PLN) baseado em Transformers (Hugging Face) para categorizar o conteúdo.\n    * Capacidade de classificar e-mails em **português** e **inglês** (devido ao uso de um modelo multilíngue e treinamento em dataset misto).\n* **Sugestão de Respostas Automáticas:**\n    * Gera uma resposta padrão adequada à categoria identificada.\n* **Interface Intuitiva:**\n    * Frontend moderno e responsivo desenvolvido em React e TypeScript.\n    * Exibição clara dos resultados da classificação e da resposta sugerida.\n* **Containerização com Docker:**\n    * Backend empacotado em um contêiner Docker para garantir consistência e portabilidade do ambiente em diferentes sistemas.\n\n## 🛠️ Tecnologias Utilizadas\n\n**Backend:**\n* **Python 3.12:** Linguagem de programação principal.\n* **Flask:** Microframework web para construção da API REST.\n* **Flask-Cors:** Gerenciamento de políticas CORS.\n* **Hugging Face Transformers:** Biblioteca para modelos de PLN (DistilBERT Multilíngue).\n* **PyTorch:** Framework de deep learning que suporta os modelos Transformers.\n* **Pandas:** Manipulação e pré-processamento de dados.\n* **PyPDF2:** Extração de texto de arquivos PDF.\n* **Gunicorn:** Servidor WSGI para produção do Flask.\n* **python-dotenv:** Carregamento de variáveis de ambiente.\n* **Docker:** Containerização do backend.\n\n**Frontend:**\n* **React:** Biblioteca JavaScript para construção da interface de usuário.\n* **TypeScript:** Superset do JavaScript que adiciona tipagem estática.\n* **Vite:** Ferramenta de build frontend.\n\n---\n\n## ⚙️ Como Configurar o Ambiente Local\n\nSiga os passos abaixo para configurar seu ambiente de desenvolvimento.\n\n### Pré-requisitos\n\n* **Node.js e npm/yarn:** Para o frontend React.\n* **Python 3.12:** Para o backend Flask.\n* **pip:** Gerenciador de pacotes Python.\n* **Docker Engine:** Para executar o backend containerizado.\n* **Git:** Para clonar o repositório.\n* **NVIDIA Container Toolkit (para uso de GPU com Docker)**\n    Se você deseja que o Docker acesse sua GPU NVIDIA para o backend (usando `USE_GPU=True` no `.env`), você precisará instalar o NVIDIA Container Toolkit em seu sistema Ubuntu real. As instruções detalhadas podem ser encontradas em: [NVIDIA Container Toolkit Installation Guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)\n\n### 1. Clonar o Repositório\n\n```bash\ngit clone git@github.com:andersonjuniorz/mail-classify.git\n```\n## ▶️ Como Usar o Aplicativo Localmente\n\nApós configurar seu ambiente conforme a seção anterior, siga estes passos para iniciar e usar a aplicação.\n\n### Iniciar a Aplicação Completa (Frontend e Backend)\n\n1.  Abra seu terminal e navegue para a **raiz do seu repositório** (onde está o `docker-compose.yml`, `Backend/` e `Frontend/`):\n\n2.  Na primeira vez que você rodar (ou após grandes alterações em dependências/código), construa as imagens Docker sem usar o cache para garantir que tudo esteja atualizado:\n\n```bash\ndocker compose build --no-cache backend frontend\n```\n\n**Observação:** A construção da imagem pode demorar alguns minutos (devido à instalação de bibliotecas de IA no backend e Node.js no frontend). Em execuções futuras, você pode omitir `--no-cache` para usar o cache e acelerar o processo.\n\n3.  Após a construção (ou em execuções subsequentes), inicie os serviços Docker Compose (backend e frontend):\n\n```bash\ndocker compose up -d\n```\n**`-d`:** Inicia os contêineres em segundo plano (detached mode), liberando seu terminal.\n\n### Testar a Aplicação\n\nTeste as funcionalidades de upload de arquivos (`.txt` ou `.pdf`) e a inserção de texto manual. A IA deve classificar e gerar respostas automáticas na interface.\n\n### Verificar LOGs do Frontend e Backend (Caso queira)\n\nAguarde alguns segundos para que os serviços iniciem completamente (especialmente o backend, que carrega o modelo de IA). Você pode verificar o status dos contêineres com:\n\n```bash\ndocker-compose ps\n```\nE ver os logs do frontend e backend com:\n\n```bash\ndocker-compose logs backend\ndocker-compose logs frontend\n```  \n\n### Ferramentas de Gerenciamento de Contêineres (Opcional)\n\nPara gerenciar contêineres e orquestração em larga escala, podem ser utilizadas ferramentas adicionais, caso prefira:\n\n* **Portainer:** Uma interface gráfica de usuário (UI) para gerenciamento simplificado de ambientes Docker e Kubernetes.\n* **Podman:** Uma alternativa ao Docker para construir, executar e gerenciar contêineres e imagens, compatível com a CLI do Docker, mas sem daemon.\n* **Docker Swarm:** A ferramenta de orquestração nativa do Docker, mais simples que o Kubernetes para clusters menores.\n* **Kubernetes:** Uma plataforma de orquestração de contêineres de código aberto para automatizar o deploy, escalonamento e gerenciamento de aplicações containerizadas.\n\n\n### Acessar o Aplicativo\n\nCom o backend e frontend Dockerizados rodando, abra seu navegador e acesse a URL:\n\n```bash\nhttp://localhost\n```\n\nA aplicação React (frontend) será exibida. A comunicação com o backend será feita internamente na rede Docker Compose, resolvendo quaisquer problemas de Mixed Content ou CORS em ambiente local.\n\n### Parar a Aplicação\n\nPara parar e remover os contêineres e redes criadas pelo Docker Compose, navegue para a raiz do seu repositório (onde está o `docker-compose.yml`) e execute:\n\n```bash\ndocker-compose down\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonjuniorz%2Fmail-classify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandersonjuniorz%2Fmail-classify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonjuniorz%2Fmail-classify/lists"}