Skip to content

Fastify (Legado)

O backend original do Neemias foi construído com Fastify + PostgreSQL, rodando em um servidor Debian com deploy via Docker Compose. Essa arquitetura foi removida na versão v0.22.0 e substituída integralmente pela stack atual: Cloudflare Workers + D1 (SQLite).

Histórico da Migração

A decisão de abandonar Fastify/PostgreSQL foi motivada por três fatores principais: custo operacional de manter um servidor dedicado, complexidade de gerenciar migrações de schema PostgreSQL em ambientes com conectividade intermitente, e o desejo de alinhar o backend à arquitetura serverless já adotada no frontend (Cloudflare Pages). A migração completa está documentada em duas decisões arquiteturais:

  • ADR-0008: Estabeleceu o schema PostgreSQL original — students, users, attendance events, event log imutável, audit log e ledger de idempotência. Essa estrutura serviu como baseline para a conversão ao D1.
  • ADR-0009: Definiu o modelo de deploy original — um host Debian com serviços Docker Compose (app, db, auth) em rede bridge privada, acessível via LAN/Tailscale.

Quando a migração para Workers foi concluída, o workspace backend/ foi removido do monorepo. Hoje, a documentação do backend legado permanece apenas como referência histórica no diretório docs/archive/backend/. Toda a lógica de negócio — autenticação PBKDF2, JWT, CRUD de entidades, sincronia offline, idempotência e rate limiting — foi reimplementada no worker.

O que mudou

AspectoFastify (Legado)Workers (Atual)
RuntimeNode.js + FastifyCloudflare Workers (WinterCG)
BancoPostgreSQLD1 (SQLite)
DeployDocker Compose em Debianwrangler deploy serverless
AutenticaçãoJWT + pgcryptoJWT HS256 (jose) + PBKDF2 manual
SchemaMigrações PostgreSQLMigrações D1 (migrations/)
SincroniaREST síncronoOffline-first com fila Dexie + POST /sync/event

A migração preservou a compatibilidade de contrato da API — o prefixo /api/v1, os formatos de request/response e o envelope de erro permanecem idênticos. Clientes que usavam a API Fastify continuam funcionando com o Worker sem alterações.

⚠️ Seção em expansão.


Fonte: ADR-0008 + ADR-0009 + Changelog v0.22.0

Distribuído sob licença MIT.