Ir para o conteúdo
Q
QuoteNode

Wiki

Stack tecnologico

Porque o QuoteNode usa Java, Spring Boot, Vue e PostgreSQL, e que trade-offs isso implica para seguranca, operacao e performance.

Stack tecnologico

O QuoteNode escolhe um stack tecnico orientado para seguranca, legibilidade e manutenibilidade a longo prazo.

Porque Java 25 e Spring Boot 4

Seguranca como criterio principal

O QuoteNode lida com dados comerciais sensiveis: clientes, estrategias de pricing, negociacao de propostas e relacoes de negocio. O stack precisa de ser testado em ambientes onde falhas de seguranca teem consequencias reais.

Java e Spring Boot continuam a ser escolhas normais em banca, seguros, saude e administracao publica. Isso importa por varios motivos:

  • modelo de seguranca maduro - Spring Security fornece autenticacao, autorizacao, sessoes, CSRF e headers de seguranca sem reinventar primitives
  • type safety - o sistema de tipos do Java apanha classes inteiras de erros em compile time
  • memory safety - a JVM evita um conjunto importante de vulnerabilidades de corrupcao de memoria
  • maturidade do ecossistema - Flyway, Hibernate, Thymeleaf e Testcontainers teem historico forte em sistemas empresariais

Porque nao Go, Rust ou Node.js?

Estas alternativas podem ser boas noutros produtos, mas para QuoteNode:

  • Go - muito bom para servicos de rede, mas menos ergonomico para regras de negocio densas, modelacao rica e ecossistema enterprise
  • Rust - excelente em performance e seguranca de memoria, mas com custo elevado em velocidade de entrega para uma plataforma business
  • Node.js - rapido para prototipar, mas menos forte para uma plataforma de calculo financeiro e seguranca sensivel

O que isto implica em recursos

Um backend Java consome mais memoria do que alternativas equivalentes em Go ou Rust. Para o QuoteNode isso e um trade-off assumido: em troca, ganhas type system, tooling de seguranca, bibliotecas maduras e maior velocidade de evolucao segura.

PostgreSQL 16

O PostgreSQL fornece:

  • transacoes ACID
  • suporte JSONB
  • extensoes maduras
  • backup tooling fiavel

Tambem suporta:

  • snapshots historicos em JSONB
  • extensoes como pgcrypto e pg_trgm
  • pg_dump consistente para backups online

Cifragem de dados

Campos sensiveis sao cifrados na camada aplicacional com AES-256-GCM.

Sempre cifrados:

  • segredos TOTP
  • credenciais SMTP

Opcionalmente cifrados quando ENCRYPT_PII=true:

  • PII de clientes
  • PII de contactos
  • PII de fornecedores
  • PII de utilizadores
  • dados de order intent

Isto implica uma disciplina operacional forte em torno de DB_ENCRYPTION_KEY.

Frontend com Vue 3, Vite, PrimeVue 4 e Tailwind CSS 4

  • Vue 3 oferece uma UI reativa com bom suporte TypeScript
  • PrimeVue 4 fornece componentes enterprise maduros
  • Tailwind CSS 4 ajuda a manter consistencia visual
  • Vite melhora produtividade de desenvolvimento
  • vue-i18n sustenta a internacionalizacao

O frontend comunica com o backend apenas via API REST tipada e e servido como ativos estaticos.

Porque nao tentamos minimizar o stack a todo o custo

O QuoteNode nao e um microservico descartavel nem uma landing page. E uma plataforma business com:

  • calculo financeiro
  • regras de IVA
  • snapshots historicos
  • auditoria
  • PDF com branding
  • autenticao e autorizacao

Neste contexto, a clareza e previsibilidade pesam mais do que reduzir algumas centenas de megabytes de RAM.

Gotenberg e Caddy

O Gotenberg isola a geracao PDF e o Caddy fornece reverse proxy com HTTPS automatico e operacao simples.

Gotenberg

O Gotenberg fornece rendering HTML para PDF com Chromium, suportando CSS moderno, paginacao e headers/footers sem acoplar o browser ao backend.

Caddy

O Caddy simplifica TLS automatico, proxy reverso e configuracao declarativa. Em modelos como Coolify, o proxy da plataforma pode assumir esse papel.

Requisitos totais de recursos

ComponenteRAM tipicaDiscoCPU
Backend512 MB - 1.5 GBminima1 core
PostgreSQL 16256 MB - 512 MB1-10 GBpartilhado
Frontend~20 MB~50 MBresidual
Gotenberg200-400 MB~500 MBburst
Caddy~20 MBminimaresidual
Total~1.5 - 2.5 GB~2-12 GB2 cores

Trade-offs

O stack nao privilegia o footprint minimo absoluto. Privilegia previsibilidade, maturidade tecnica, auditabilidade e capacidade de manutencao num produto que lida com dados comerciais sensiveis.

Adequacao operacional

Para pequenas e medias equipas, o custo de infraestrutura continua razoavel e o beneficio em controlo, branding e propriedade dos dados tende a compensar o modelo self-hosted.

O produto foi pensado para organizacoes entre 1 e 50 utilizadores, onde uma stack self-hosted com 4 GB de RAM e 2 cores continua a ser barata face ao custo mensal acumulado de SaaS comercial.

Perfil de organizacoes para quem este stack faz sentido

Este stack e particularmente adequado para:

  • freelancers e consultores que querem propostas profissionais sem depender de CRM enterprise
  • pequenas agencias que precisam de visibilidade de equipa e controlo sobre dados
  • empresas medias com operacao comercial estruturada, auditoria e analytics de pipeline

Para estes cenarios, o custo extra de um backend Java continua operacionalmente irrelevante face aos ganhos em seguranca, governanca e previsibilidade.

Racional de manutencao a longo prazo

Outro motivo importante para este stack e a manutencao ao longo de varios anos. O QuoteNode nao foi desenhado como um prototipo descartavel. Foi desenhado como um produto que precisa de atravessar:

  • mudancas de pricing
  • alteracoes legais e fiscais
  • evolucao de templates de documentos
  • novas politicas de seguranca
  • novas integracoes de email, backup e analytics

Numa base assim, tooling maduro e convencoes previsiveis contam muito. Uma equipa que entra no projeto mais tarde deve conseguir compreender rapidamente:

  • onde estao as regras de negocio
  • como os dados sao persistidos
  • como os snapshots preservam historico
  • como o PDF e gerado
  • como o frontend comunica com a API

Esse custo de manutencao futura e mais importante do que ganhar alguma leveza imediata de runtime.

Impacto no modelo de hosting

O stack escolhido encaixa bem em modelos comuns de self-hosting:

  • VPS classico com Docker Compose
  • servidor on-premise pequeno
  • ambiente virtualizado em cloud privada
  • plataformas self-hosted como Coolify

Isto significa que o produto nao depende de uma topologia exotica nem de servicos geridos muito especificos. A portabilidade operacional e um objetivo explicito.

Ao mesmo tempo, a stack continua a permitir boas praticas de producao:

  • reverse proxy com HTTPS
  • backups remotos
  • observabilidade via logs
  • isolamento de servicos em contentores
  • atualizacoes relativamente simples por imagem Docker

Efeito na previsibilidade funcional

Este stack ajuda tambem na previsibilidade do comportamento funcional. Isso e importante porque o QuoteNode trabalha com:

  • totais monetarios
  • IVA por linha
  • historico de propostas
  • controlo de estados
  • output documental orientado ao cliente

Nestes cenarios, bugs subtis podem ter impacto comercial real. Uma base tecnologica fortemente tipada e com bibliotecas maduras reduz a probabilidade de erros silenciosos em fluxos centrais.

Tambem melhora a auditabilidade. Quando um administrador ou programador precisa de explicar:

  • porque determinado total foi calculado
  • porque uma proposta ficou num certo estado
  • porque um PDF foi gerado com uma versao especifica de snapshot
  • porque um campo sensivel ficou cifrado

e preferivel ter uma stack com fronteiras claras e convencoes estaveis.

Last reviewed: Recently