- useStorageMonitor: o efeito com setInterval de 10 s chamava
/api/storage-stats em toda aba aberta só para escrever no console
(nenhum estado é atualizado); o servidor faz fs.stat e conta as
chaves do cache a cada chamada. A busca inicial de estatísticas
continua.
- JsonCacheManager.searchProducts: convertToAPIProduct rodava duas vezes
por produto (filtro e map) e a relevância era recalculada, com
toLowerCase, a cada comparação do sort; agora é uma vez por produto.
- componentes sem nenhuma importação (card, items, DeleteButton, IdInput,
NutriScoreBadge, NutritionBar, NutritionChart, PageTitle, PersuasiveCTA,
landing/SearchBar), imports e variável não usados (avisos do lint)
- sw.js na raiz: não é referenciado e carrega script de terceiros
(fenoofaussut.net)
- bun.lock (o deploy e o README usam pnpm), graphify-out/ e os bancos
SQLite versionados em prisma/prisma (pnpm db:push recria o banco)
- devDependency depcheck sem uso
- .gitignore: *.sqlite, *.sqlite-journal, graphify-out/
- script typecheck e workflow do GitHub Actions (lint, typecheck, test, build)
GET /api/search passa de CC 41 para <= 10. Testes de caracterização
(sem rede: fetch e cache JSON temporário) cobrem validação, filtros,
ordenação, paginação, modo cache-only e erros.
Também: parameter property de NutriScanError virou campo explícito e
imports só de tipo usam import type, para o type stripping nativo do
Node; o script de teste não usa mais --experimental-transform-types
(removida no Node 26).
- Add NODE_ENV=production to .env for environment configuration
- Enhance product API route with JSON cache manager for local storage and retrieval
- Introduce cache-only mode and detailed logging for better performance and offline support
- Update UI to display cache status and storage statistics