{"id":22125900,"url":"https://github.com/neemiasborges/advpl_totvs_clientmanager","last_synced_at":"2026-02-03T09:41:21.668Z","repository":{"id":260690730,"uuid":"870386555","full_name":"NeemiasBorges/ADVPL_Totvs_ClientManager","owner":"NeemiasBorges","description":"Cliente360 - Sistema de gerenciamento de clientes desenvolvido para integrar TOTVS Protheus com tecnologias web modernas. Este projeto full-stack, com frontend em Angular e backend integrado ao Protheus, oferece recursos avançados como notificações automatizadas por email e uma API RESTful, desenvolvida em Node.js,","archived":false,"fork":false,"pushed_at":"2024-11-14T04:14:50.000Z","size":1411,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-12T08:31:42.107Z","etag":null,"topics":["advpl","angular","protheus","tlpp","totvs","totvs-protheus"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NeemiasBorges.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-10-10T00:19:52.000Z","updated_at":"2024-11-28T18:07:25.000Z","dependencies_parsed_at":"2024-11-01T21:27:03.579Z","dependency_job_id":"e525dc71-be2b-4a5f-923d-fec200f4756e","html_url":"https://github.com/NeemiasBorges/ADVPL_Totvs_ClientManager","commit_stats":null,"previous_names":["neemiasborges/ftcitp_proteus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NeemiasBorges/ADVPL_Totvs_ClientManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FADVPL_Totvs_ClientManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FADVPL_Totvs_ClientManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FADVPL_Totvs_ClientManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FADVPL_Totvs_ClientManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NeemiasBorges","download_url":"https://codeload.github.com/NeemiasBorges/ADVPL_Totvs_ClientManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeemiasBorges%2FADVPL_Totvs_ClientManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29039818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T09:33:44.148Z","status":"ssl_error","status_checked_at":"2026-02-03T09:33:43.343Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["advpl","angular","protheus","tlpp","totvs","totvs-protheus"],"created_at":"2024-12-01T16:40:27.572Z","updated_at":"2026-02-03T09:41:21.653Z","avatar_url":"https://github.com/NeemiasBorges.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cliente360 - Sistema de Gerenciamento de Clientes\n\nSistema full-stack para gerenciamento de clientes integrando Angular Material no frontend com API TOTVS Protheus, incluindo notificações por email automatizadas.\n\n---\n## 🚀 Tecnologias Utilizadas\n\n### Frontend\n- Angular 16+\n- Angular Material\n- RxJS\n- TypeScript\n- SCSS\n\n### Backend\n- TOTVS Protheus REST API\n- Node.js (Serviço de Email)\n- Express\n- Nodemailer\n\n## 📋 Pré-requisitos\n\n- Node.js 18+\n- Angular CLI 16+\n- TOTVS Protheus configurado e rodando localmente\n- NPM ou Yarn\n- Banco de dados configurado no Protheus\n\n## 🔧 Instalação e Configuração\n\n### Frontend (Angular)\n\n1. Clone o repositório e entre no diretório do frontend.\n2. Instale as dependências.\n3. Inicie o servidor de desenvolvimento.\n\n### Serviço de Email (Node.js)\n\n1. Entre no diretório do serviço de email e instale as dependências.\n2. Configure as variáveis de ambiente.\n3. Inicie o serviço.\n\n### Configuração do arquivo .env para o serviço de email\n\nConfigure os valores de `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, e `TOTVS_API_URL` conforme necessário.\n\n## 📐 Estrutura do Projeto\n\n```\ncliente360/\n├── frontend/\n│   ├── src/\n│   │   ├── app/\n│   │   │   ├── components/\n│   │   │   ├── services/\n│   │   │   ├── models/\n│   │   │   └── shared/\n│   │   ├── assets/\n│   │   └── environments/\n├── email-service/\n│   ├── src/\n│   │   ├── controllers/\n│   │   ├── services/\n│   │   └── utils/\n└── README.md\n```\n---\n## 🔌 Endpoints da API TOTVS\n\n### Clientes\n\n- `GET /v1/clientes/listar` - Lista todos os clientes\n- `GET /v1/clientes/:codigo` - Obtém detalhes de um cliente específico\n- `POST /v1/clientes/incluir` - Cadastra novo cliente\n- `PUT /v1/clientes/atualizar/:codigo/:loja` - Atualiza dados do cliente\n- `DELETE /v1/clientes/deletar/:codigo/:loja` - Remove cliente\n- `GET /v1/clientes/ultimoCodigo` - Obtém último código cadastrado\n- `GET /v1/clientes/municipiosporestado/:estado` - Lista municípios por estado\n- `GET /v1/clientes/codigomunicipio/:estado/:municipio` - Obtém código do município\n\n## 📨 Serviço de Email\n\nO serviço de email é um microsserviço Node.js que:\n1. Monitora alterações na API TOTVS através de polling\n2. Envia emails automáticos quando detecta alterações em clientes\n3. Mantém um log de notificações enviadas\n\n## 🔒 Segurança\n\n- Implementação de JWT para autenticação\n- Sanitização de inputs\n- Validação de dados no frontend e backend\n- Proteção contra CSRF\n- Rate limiting na API\n\n## 📦 Build e Deploy\n\n### Frontend\n\n1. Gerar build de produção.\n\n### Serviço de Email\n\n1. Gerar build de produção.\n\n## 🛠️ Desenvolvimento\n\n### Adicionando Novos Componentes\n\nPara novos componentes, utilize `ng generate component` e `ng generate service` para novos serviços.\n\n---\n### Padrões de Código\n\n- Utilize TypeScript strict mode\n- Siga o style guide do Angular\n- Mantenha componentes pequenos e reutilizáveis\n- Implemente lazy loading para módulos\n- Use interceptors para tratamento de erros\n\n---\n# 📝 Autores\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cdiv align=\"center\"\u003e\n          \u003ca href=\"https://github.com/Mandy-Marino\" target=\"_blank\"\u003e\n            \u003cimg loading=\"lazy\" src=\"https://avatars.githubusercontent.com/u/177773601?v=4\" width=\"115\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n          \u003ca href=\"https://github.com/Mandy-Marino\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Amanda%20França-F6C953?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=%23FD4F00\"\u003e\n          \u003c/a\u003e\n          \u003ca href=\"https://www.linkedin.com/in/amanda-marino-28b34a324/\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Amanda%20Marino-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cdiv align=\"center\"\u003e\n          \u003ca href=\"https://github.com/GabRodrigues23\" target=\"_blank\"\u003e\n            \u003cimg loading=\"lazy\" src=\"https://avatars.githubusercontent.com/u/144338173?v=4\" width=\"115\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n          \u003ca href=\"https://github.com/GabRodrigues23\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Gabriel%20Rodrigues-F6C953?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=%23FD4F00\"\u003e\n          \u003c/a\u003e\n          \u003ca href=\"https://www.linkedin.com/in/gabriel-rodrigues-de-oliveira-33104b251/\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Gabriel%20Rodrigues-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cdiv align=\"center\"\u003e\n          \u003ca href=\"https://github.com/Kravszenko\" target=\"_blank\"\u003e\n            \u003cimg loading=\"lazy\" src=\"https://avatars.githubusercontent.com/u/107780423?v=4\" width=\"115\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n          \u003ca href=\"https://github.com/Kravszenko\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Gustavo%20Kravszenko-F6C953?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=%23FD4F00\"\u003e\n          \u003c/a\u003e\n          \u003ca href=\"https://www.linkedin.com/in/gustavo-cesar-kravszenko-913b8117a/\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Gustavo%20Kravszenko-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cdiv align=\"center\"\u003e\n          \u003ca href=\"https://github.com/gusmeira88\" target=\"_blank\"\u003e\n            \u003cimg loading=\"lazy\" src=\"https://avatars.githubusercontent.com/u/147567781?v=4\" width=\"115\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n          \u003ca href=\"https://github.com/gusmeira88\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Gustavo%20Meira-F6C953?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=%23FD4F00\"\u003e\n          \u003c/a\u003e\n          \u003ca href=\"#\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Gustavo%20Meira-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cdiv align=\"center\"\u003e\n          \u003ca href=\"https://github.com/NeemiasBorges\" target=\"_blank\"\u003e\n            \u003cimg loading=\"lazy\" src=\"https://avatars.githubusercontent.com/u/51499704?v=4\" width=\"115\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n          \u003ca href=\"https://github.com/NeemiasBorges\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Neemias%20Borges-F6C953?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=%23FD4F00\"\u003e\n          \u003c/a\u003e\n          \u003ca href=\"https://www.linkedin.com/in/neemias-borges/\" target=\"_blank\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/LinkedIn-Neemias%20Borges-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\"\u003e\n          \u003c/a\u003e\u003cbr\u003e\n        \u003c/div\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n---\n\n## 📄 Licença\n\nEste projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneemiasborges%2Fadvpl_totvs_clientmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneemiasborges%2Fadvpl_totvs_clientmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneemiasborges%2Fadvpl_totvs_clientmanager/lists"}