[{"data":1,"prerenderedAt":309},["ShallowReactive",2],{"lastUpdated":3,"projects-pt-list":4,"projects-en-list":308},"2025-05-26",[5,128],{"id":6,"title":7,"body":8,"date":112,"description":113,"extension":114,"featured":115,"github":116,"live":117,"meta":118,"navigation":119,"path":120,"seo":121,"stack":122,"stem":126,"__hash__":127},"projects/projects/gomonitor-cli.md","GoMonitor: CLI de Hardware",{"type":9,"value":10,"toc":107},"minimark",[11,15,24,29,55,59,62,66,100,103],[12,13,7],"h1",{"id":14},"gomonitor-cli-de-hardware",[16,17,18,19,23],"p",{},"O ",[20,21,22],"strong",{},"GoMonitor"," nasceu da necessidade de um utilitário de monitoramento que fosse extremamente leve e pudesse ser executado via SSH sem consumir recursos significativos da máquina.",[25,26,28],"h2",{"id":27},"características-principais","Características principais",[30,31,32,39,49],"ul",{},[33,34,35,38],"li",{},[20,36,37],{},"Performance Bruta:"," Escrito em Go, o binário final é pequeno, rápido e não possui dependências externas.",[33,40,41,44,45,48],{},[20,42,43],{},"UI Terminal:"," Utiliza a biblioteca ",[20,46,47],{},"Bubble Tea"," (The Elm Architecture for Go) para criar uma interface rica e reativa dentro do terminal.",[33,50,51,54],{},[20,52,53],{},"Leituras de Baixo Nível:"," Coleta dados de CPU, Memória, Temperatura e GPU diretamente dos sistemas de arquivos do kernel Linux.",[25,56,58],{"id":57},"por-que-go","Por que Go?",[16,60,61],{},"A escolha da linguagem foi motivada pela facilidade de compilação estática e o gerenciamento eficiente de concorrência (Goroutines) para as atualizações de tela em tempo real sem \"flicker\".",[25,63,65],{"id":64},"exemplo-de-uso","Exemplo de Uso",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-bash shiki shiki-themes github-light github-dark","# Executando o monitor\ngomonitor --interval 500ms\n","bash","",[74,75,76,85],"code",{"__ignoreMap":72},[77,78,81],"span",{"class":79,"line":80},"line",1,[77,82,84],{"class":83},"sJ8bj","# Executando o monitor\n",[77,86,88,92,96],{"class":79,"line":87},2,[77,89,91],{"class":90},"sScJk","gomonitor",[77,93,95],{"class":94},"sj4cs"," --interval",[77,97,99],{"class":98},"sZZnC"," 500ms\n",[16,101,102],{},"Este projeto demonstra minha paixão por ferramentas de baixo nível e a capacidade de entregar utilitários robustos com o mínimo de overhead possível.",[104,105,106],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":72,"searchDepth":87,"depth":87,"links":108},[109,110,111],{"id":27,"depth":87,"text":28},{"id":57,"depth":87,"text":58},{"id":64,"depth":87,"text":65},"2026-02-21","Utilitário minimalista e de alta performance escrito em Go para monitoramento de recursos de hardware em tempo real.","md",false,"https://github.com/rafadpedrosa",null,{"isOnReview":119},true,"/projects/gomonitor-cli",{"title":7,"description":113},[123,47,124,125],"Go","Hardware API","CLI","projects/gomonitor-cli","aou6-m6ZxOvm_BLEd1TrHMDnUj-XEnuhqkueTPfundk",{"id":129,"title":130,"body":131,"date":112,"description":297,"extension":114,"featured":119,"github":117,"live":298,"meta":299,"navigation":119,"path":300,"seo":301,"stack":302,"stem":306,"__hash__":307},"projects/projects/reserva-tamandare.md","Loteamento Reserva Tamandaré",{"type":9,"value":132,"toc":291},[133,138,144,150,154,169,172,226,230,280,284],[25,134,136],{"id":135},"loteamento-reserva-tamandaré",[20,137,130],{},[16,139,140],{},[141,142,143],"em",{},"Pitch: A empresa precisava digitalizar um processo de venda imobiliária tradicionalmente burocrático e manual. Bem como expandir o negócio para todo o Brasil. A solução precisava ser robusta e escalável para futuros lotes",[16,145,146,149],{},[20,147,148],{},"Robusta e escalável?"," Porque? Esse não é o primeiro negócio (loteamento) que esse cliente possui, ou seja, é importante que esse sistema seja multi-tenant mantendo o compromisso de ter vários loteamentos. O cliente tinha um processo de vendas completamente manual, onde os corretores preenchiam planilhas, geravam contratos em word e depois enviavam para assinatura manual via clicksign. Isso resultava em pequenos erros, perda de tempo e uma experiência ruim para os compradores que, em posse de dinheiro, queriam efetuar o pagamento para garantir determinado lote. Além disso, a administração tinha pouca visibilidade sobre o status das vendas e do fluxo de caixa de maneira organizada.",[25,151,153],{"id":152},"a-solução","A Solução",[16,155,156,157,160,161,164,165,168],{},"Foi desenvolvida uma plataforma \"full-stack\" que automatiza todo o ciclo de vida da venda. A arquitetura foi construída com ",[20,158,159],{},"Nuxt 3"," para o frontend, proporcionando uma experiência moderna e responsiva ao usuário, e ",[20,162,163],{},"Fastify"," no backend como uma API para garantir alta performance e escalabilidade caso necessário. O banco de dados escolhido foi o ",[20,166,167],{},"PostgreSQL",", devido à sua robustez e suporte a operações complexas.",[16,170,171],{},"Foi entregue:",[30,173,174,180,186,196,202,208,214,220],{},[33,175,176,179],{},[20,177,178],{},"Dashboard de Vendas:"," Visualização em tempo real da disponibilidade dos lotes via mapa interativo.",[33,181,182,185],{},[20,183,184],{},"Motor de Contratos:"," Geração dinâmica de PDFs baseada nos dados do comprador e do lote.",[33,187,188,191,192,195],{},[20,189,190],{},"Conexão com o PAGAR.ME (API):"," Integração profunda com a API da ",[20,193,194],{},"PAGAR.me"," para processamento de pagamentos.",[33,197,198,201],{},[20,199,200],{},"Click Sign (API):"," Integração para assinatura digital de contratos, eliminando a necessidade de processos manuais e garantindo a segurança jurídica.",[33,203,204,207],{},[20,205,206],{},"Gestão de lotes"," com controle de concorrência para evitar vendas duplas do mesmo lote.",[33,209,210,213],{},[20,211,212],{},"Relatórios Financeiros:"," Ferramentas analíticas para acompanhamento do fluxo de caixa e performance de vendas.",[33,215,216,219],{},[20,217,218],{},"Site institucional"," parte públic onde o cliente final efetua o pagamento",[33,221,222,225],{},[20,223,224],{},"GCP + Cloudflare"," Configuração e deployment da aplicação",[25,227,229],{"id":228},"desafios-técnicos","Desafios Técnicos",[30,231,232,238,244,250,256,262,268,274],{},[33,233,234,237],{},[20,235,236],{},"Sincronismo de Dados:"," Garantir que duas vendas não ocorram simultaneamente para o mesmo lote (controle de concorrência - Atomicidade Transacional).",[33,239,240,243],{},[20,241,242],{},"Segurança(auth):"," Implementação de camadas de segurança para proteger dados sensíveis e garantir a integridade das transações.",[33,245,246,249],{},[20,247,248],{},"Integração de APIs:"," Lidar com as nuances e limitações das APIs de terceiros (PAGAR.me e Clicksign) para garantir uma experiência de usuário sem falhas.",[33,251,252,255],{},[20,253,254],{},"RBAC (Controle de Acesso Baseado em Funções):"," Implementação de permissões granulares para diferentes tipos de usuários.",[33,257,258,261],{},[20,259,260],{},"Gerenciamento de Estado:"," Manter o estado da aplicação consistente entre o frontend e backend, especialmente durante o processo de compra e assinatura de contratos.",[33,263,264,267],{},[20,265,266],{},"Automação:"," Implementação de processos automatizados para reduzir erros humanos e aumentar a eficiência operacional (sync + webhooks).",[33,269,270,273],{},[20,271,272],{},"Escalabilidade:"," Arquitetura preparada para suportar múltiplos loteamentos e um grande volume de usuários sem degradação de performance. Com o uso de Fastify e PostgreSQL, conseguimos otimizar as consultas e garantir uma resposta rápida mesmo sob carga. (obs: multi-tenant + GCP).",[33,275,276,279],{},[20,277,278],{},"Performance:"," Otimização de queries pesadas de relatórios financeiros usando cache do Fastify.",[25,281,283],{"id":282},"resultados","Resultados",[16,285,286,287,290],{},"Vendas pelo site começaram, foi identificado vendas fora do estado de Pernambuco. Foi possivel ter visão clara sobre as vendas bem como a sincronização dos dados funcionando. O cliente ficou satisfeito com a solução, que não apenas atendeu às suas necessidades imediatas, mas também proporcionou uma base sólida para futuras expansões do negócio. Este projeto solidificou o uso do ",[20,288,289],{},"Nuxt 3 e Fastify"," como uma stack robusta para aplicações críticas dos meus próximos negócios.",{"title":72,"searchDepth":87,"depth":87,"links":292},[293,294,295,296],{"id":135,"depth":87,"text":130},{"id":152,"depth":87,"text":153},{"id":228,"depth":87,"text":229},{"id":282,"depth":87,"text":283},"Plataforma imobiliária (loteamento) completa com gestão de lotes e integração com Clicksign + Pagar.me","https://loteamentoreservatamandare.com",{},"/projects/reserva-tamandare",{"title":130,"description":297},[303,163,304,305],"Nuxt","Clicksign","Pagar.me","projects/reserva-tamandare","npdP6Mc1hAQ5l3_JUa4qo5522HLnPUCMRlWYc_Tj-7A",[],1779800308470]