Ir para o conteúdo
Q
QuoteNode

Wiki

Arquitetura do QuoteNode

Visao tecnica da arquitetura do sistema QuoteNode: backend, frontend, base de dados e modelo de deployment.

Arquitetura do QuoteNode

O QuoteNode e uma aplicacao single-tenant concebida para deployment self-hosted. Cada instancia e isolada e contem a sua propria base de dados, armazenamento de ficheiros e processos aplicacionais.

Visao geral do sistema

Browser cliente


Caddy (reverse proxy, HTTPS)

     ├── /api/*    → Backend Spring Boot (Java 25)
     ├── /offer/*  → Backend Spring Boot (paginas publicas de propostas)
     └── /*        → Frontend Vue 3 (Vite, SPA)


                   PostgreSQL 16

Backend

O backend e uma aplicacao Java 25 construida com Spring Boot 4. Trata de:

  • API REST versionada
  • autenticacao por sessao com cookies cifrados e 2FA TOTP
  • autorizacao por perfil
  • acesso a dados com Spring Data JPA e Flyway
  • geracao de PDF
  • integracao SMTP assincrona
  • paginas publicas de propostas
  • logging de auditoria append-only
  • jobs agendados para expiracao, anonimizacao de IP e digests

Decisoes de arquitetura

  • Sem multi-tenancy - cada instancia serve exatamente uma organizacao
  • Migracoes Flyway - alteracoes de schema sao aditivas; colunas nao sao removidas e podem ser descontinuadas por prefixo
  • Snapshots imutaveis - os dados da proposta sao capturados em JSON no momento do envio
  • Pricing deterministico - todos os calculos seguem uma ordem definida e guardam resultados para auditoria

Frontend

O frontend e uma SPA Vue 3 construída com:

  • PrimeVue 4
  • Tailwind CSS 4
  • Pinia 3
  • Vue Router 5
  • vue-i18n
  • cliente HTTP tipado

O frontend e servido como conjunto de ativos estaticos e comunica com o backend apenas atraves da API REST.

Base de dados

O PostgreSQL 16 e a unica base de dados suportada. Entre as entidades principais estao:

  • clientes
  • contactos
  • propostas
  • linhas de proposta
  • produtos
  • regras de preco
  • utilizadores
  • logs de auditoria
  • notificacoes

O schema e gerido por Flyway e aplicado no arranque do backend. Totais de propostas tambem podem ser guardados em estruturas denormalizadas para pesquisa e reporting mais rapido.

Geracao de PDF

A geracao de PDF funciona em duas etapas:

  1. o Thymeleaf renderiza o snapshot da proposta em HTML
  2. o Gotenberg converte esse HTML em PDF

Existem dois modos suportados:

  • Sincrono - para propostas pequenas, com resposta inline
  • Assincrono - para propostas maiores, processadas por job com notificacao posterior

Deployment

O deployment tipico usa Docker Compose com:

  • backend Java 25
  • frontend Vue 3 estatico
  • PostgreSQL 16
  • Caddy 2 com HTTPS automatico
  • Gotenberg
  • Mailpit em desenvolvimento

Toda a stack pode correr como um unico projeto Docker Compose, sem dependencias externas obrigatorias. Isto torna o produto adequado a ambientes self-hosted e ate a cenarios isolados.

Licenciamento

As licencas sao ficheiros assinados com Ed25519 e validados offline. O sistema verifica:

  • edicao
  • numero maximo de utilizadores
  • data de expiracao
  • feature flags

Nao existe dependencia de um servidor externo para validar cada operacao. Mesmo com expiracao, o comportamento esperado e o produto manter-se funcional com sinais de renovacao e branding associados ao plano.

Last reviewed: Recently