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
| Aspecto | Fastify (Legado) | Workers (Atual) |
|---|---|---|
| Runtime | Node.js + Fastify | Cloudflare Workers (WinterCG) |
| Banco | PostgreSQL | D1 (SQLite) |
| Deploy | Docker Compose em Debian | wrangler deploy serverless |
| Autenticação | JWT + pgcrypto | JWT HS256 (jose) + PBKDF2 manual |
| Schema | Migrações PostgreSQL | Migrações D1 (migrations/) |
| Sincronia | REST síncrono | Offline-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