Arquitetura do Sistema

O RadarBov é composto por três aplicações principais que compartilham uma única API REST:

┌──────────────────────────┐
│   App Mobile (Flutter)   │
│   iOS + Android          │
└────────────┬─────────────┘
             │
             │  HTTPS/JSON
             │
┌────────────▼─────────────┐    ┌──────────────────────┐
│   Backend (Elixir)       │◄──►│  Banco de Dados       │
│   Phoenix API REST       │    │  PostgreSQL + PostGIS │
└────────────▲─────────────┘    └──────────────────────┘
             │
             │  HTTPS/JSON
             │
┌────────────┴─────────────┐
│   Frontend Web (Vue 3)   │
│   TypeScript + Vite      │
└──────────────────────────┘

Componentes

ComponenteTecnologiaPapel
BackendElixir 1.18 + Phoenix 1.7API REST, lógica de negócio
Frontend WebVue 3.5 + TypeScript + VitePortal de gestão e consulta
App MobileFlutter (Dart)Operações de campo, offline-first
Banco de DadosPostgreSQL 14 + PostGISPersistência e dados geoespaciais

Infraestrutura

O sistema roda em AWS EC2 gerenciado com NixOS e Docker Compose. A infraestrutura é declarativa e versionada no repositório capybara/infra/.

Ambientes

AmbienteFrontendBackend
Devdev.radarbov.appdev.api.radarbov.app
Stagingstaging.radarbov.appstaging.api.radarbov.app
Produçãoradarbov.appapi.radarbov.app

O Caddy atua como reverse proxy com HTTPS automático para todos os ambientes.

Secrets

Segredos (tokens, chaves de API, senhas de banco) são gerenciados com SOPS + Age, criptografados no repositório e descriptografados automaticamente no servidor via SSH key.


Serviços externos

ServiçoFinalidade
SendGridE-mails transacionais (verificação, recuperação de senha)
TwilioSMS (verificação de conta, alertas)
OneSignalPush notifications mobile (ver Notificações Push)
AgrotoolsVerificações de Conformidade Socioambiental
MinIO / S3Armazenamento de arquivos (PDFs de GTA, imagens)

CI/CD

  • Backend e Frontend: GitHub Actions, build de imagem Docker, push para GHCR
  • Mobile Android: GitHub Actions automático no merge para beta
  • Mobile iOS: build manual com flutter build ipa → App Store Connect
  • Obsidian Vault: workflow manual no repositório radarbov-obsidian

Ver também