diff --git a/README.md b/README.md
index 30489b4..b2977ac 100644
--- a/README.md
+++ b/README.md
@@ -1,539 +1,164 @@
+
+
+

+
# NutriScan
-
+**Busca de produtos alimentícios sobre o Open Food Facts — por código de barras
+ou nome, com filtros de Nutri-Score e NOVA, cache em camadas e listas de compras
+por ID.**
-
+
+
+
-**Plataforma completa de informações nutricionais alimentares**
-
-_Descubra o que a comunidade alimentar sabe sobre seus alimentos_
-
-[](https://nextjs.org/)
-[](https://www.typescriptlang.org/)
-[](https://www.prisma.io/)
-[](https://tailwindcss.com/)
-[](https://world.openfoodfacts.org/)
-
-[](https://nutriscan.evandro.dev.br)
-[](https://github.com/evandrodevbr/lista-compras/issues)
-[](https://github.com/evandrodevbr/lista-compras/issues)
+[Demo](https://nutriscan.evandro.dev.br) · [Recursos](#recursos) · [Como funciona](#como-funciona) · [Execução local](#execu%C3%A7%C3%A3o-local) · [Licença](#licen%C3%A7a)
-## 📋 Índice
+> [!NOTE]
+> **Estado do projeto:** redesign completo concluído em 2026-07-16 (`feat: complete
+> NutriScan redesign`), seguido de correções de deploy com Prisma/SQLite e de
+> integração do Rybbit Analytics. A instância pública do autor roda em
+> [nutriscan.evandro.dev.br](https://nutriscan.evandro.dev.br). Não há suíte de
+> testes automatizados no repositório; o único check disponível é `pnpm lint`.
-- [Sobre o Projeto](#-sobre-o-projeto)
-- [Demonstração Visual](#-demonstração-visual)
-- [Funcionalidades](#-funcionalidades)
-- [Stack Tecnológica](#-stack-tecnológica)
-- [Arquitetura](#-arquitetura)
-- [Instalação e Setup](#-instalação-e-setup)
-- [API e Integrações](#-api-e-integrações)
-- [Database Schema](#-database-schema)
-- [Performance e Otimizações](#-performance-e-otimizações)
-- [Deployment](#-deployment)
-- [Scripts Disponíveis](#-scripts-disponíveis)
-- [Contribuindo](#-contribuindo)
-- [Licença](#-licença)
-- [Contato](#-contato)
-- [Agradecimentos](#-agradecimentos)
+> [!IMPORTANT]
+> **Licença de Uso Pessoal:** o código só pode ser usado para fins pessoais e não
+> comerciais, **apenas em localhost**. É proibido fazer deploy público,
+> redistribuir, usar comercialmente ou criar obras derivadas para distribuição
+> (texto completo em [`LICENSE`](LICENSE)). A instância pública acima é a do
+> próprio autor.
-## 🚀 Sobre o Projeto
+## Recursos
-**NutriScan** é uma plataforma web moderna que democratiza o acesso a informações nutricionais transparentes e confiáveis. Desenvolvida com foco na experiência do usuário e performance, a aplicação conecta consumidores conscientes à maior base de dados colaborativa de alimentos do mundo.
+| Recurso | O que faz |
+|---|---|
+| **Busca por código de barras ou nome** | O tipo é detectado sozinho: entrada com 8 a 13 dígitos é tratada como código de barras, o resto como nome/marca |
+| **Filtros** | Nutri-Score A–E, grupos NOVA 1–4, categorias, marcas, alérgenos e aditivos (incluir/excluir, ou "sem aditivos"), faixas por 100 g de energia, gordura, carboidratos, proteínas, açúcares, fibras e sódio, e países |
+| **12 critérios de ordenação** | Relevância, Nutri-Score, nome, marca, energia, gordura, açúcares, completude, com imagem, com dados nutricionais, Eco-Score e grupo NOVA, em ordem crescente ou decrescente |
+| **Cache em camadas** | `localStorage` no navegador (TTL padrão de 1 hora) e um cache JSON no servidor (`data/products-cache.json`, 232 produtos no repositório) que é consultado antes do Open Food Facts |
+| **Modo cache-only** | Em produção, o usuário pode ligar um switch para o servidor responder só com o cache JSON, sem consultar o Open Food Facts |
+| **País por IP** | A rota `/api/location` descobre o país do visitante e a busca prioriza produtos dele; o resultado fica 7 dias no `localStorage`, com Brasil como fallback |
+| **Listas de compras** | Várias listas acessíveis por ID em `/lista/[id]`; cada item tem nome, quantidade, unidade e status de comprado, persistidos com Prisma + SQLite |
+| **Interface** | Tema claro/escuro, componentes shadcn/ui sobre Radix UI, animações com Framer Motion, skeletons, paginação e manifest de PWA |
-### 🎯 Missão
+Páginas: `/` (landing), `/resultados`, `/produto/[barcode]`, `/lista/[id]` e `/sobre`.
-Empoderar usuários com dados nutricionais precisos e abrangentes para tomada de decisões alimentares mais conscientes através de uma plataforma intuitiva, rápida e confiável.
-
-### ⭐ Diferenciais
-
-- **Dados Colaborativos**: Acesso a milhões de produtos da maior base de dados open source do mundo
-- **Filtros Avançados**: Sistema sofisticado de busca e filtros para descoberta precisa de produtos
-- **Classificações de Saúde**: Nutri-Score e NOVA group para avaliação rápida da qualidade
-- **Atualizações em Tempo Real**: Sincronização de dados ao vivo e resultados instantâneos
-- **Arquitetura Moderna**: Desenvolvida com tecnologias de ponta e foco em performance
-
-### 📊 Estatísticas
-
-| Métrica | Valor |
-| ------------------- | ----- |
-| Produtos no banco | 2M+ |
-| Países cobertos | 100+ |
-| Disponibilidade | 24/7 |
-| Dados colaborativos | Sim |
-
-## 📱 Demonstração Visual
-
-> **Nota**: Screenshots serão adicionados em breve mostrando as principais funcionalidades da aplicação.
-
-### Principais Telas
-
-- **Página Inicial**: Interface de busca com hero section e barra de pesquisa
-- **Resultados**: Lista de produtos com filtros avançados e ordenação
-- **Detalhes do Produto**: Informações nutricionais completas e classificações
-- **Lista de Compras**: Gerenciamento de produtos com quantidades e status
-- **Modos de Tema**: Visualização em tema claro e escuro
-
-## ✨ Funcionalidades
-
-### 🔍 Sistema de Busca Inteligente
-
-O NutriScan oferece múltiplas formas de encontrar produtos alimentícios:
-
-- **Busca por Código de Barras**: Reconhecimento automático de códigos de 8-13 dígitos
-- **Busca por Nome/Marca**: Pesquisa textual inteligente com sugestões
-- **Detecção Automática**: Sistema que identifica o tipo de busca automaticamente
-- **Geolocalização**: Priorização de produtos locais baseada na localização do usuário
-- **API Proxy**: Chamadas seguras através de rotas Next.js para evitar problemas de CORS
-
-### 💾 Sistema de Cache Avançado
-
-Sistema multi-camada de cache para performance otimizada:
-
-- **Cache localStorage**: Armazenamento local com TTL configurável
-- **Cache de Buscas**: Armazenamento completo de buscas com filtros aplicados
-- **Cache JSON**: 218 produtos pré-carregados para uso offline
-- **Modo Cache-Only**: Funcionamento completo sem conexão com internet
-- **Sincronização Inteligente**: Atualização automática de dados quando online
-- **Estatísticas de Storage**: Monitoramento de uso de armazenamento
-
-### 🎛️ Filtros e Ordenação
-
-Sistema robusto de filtros para descoberta precisa:
-
-#### Classificações de Saúde
-
-- **Nutri-Score**: Filtro por classificação A-E (muito bom a muito ruim)
-- **NOVA Group**: Filtro por nível de processamento 1-4 (não processado a ultraprocessado)
-
-#### Filtros de Produto
-
-- **Categorias**: Filtro por tipo de alimento (bebidas, laticínios, snacks, etc.)
-- **Marcas**: Filtro por fabricante
-- **Alérgenos**: Identificação e filtro por substâncias alergênicas
-- **Aditivos**: Filtro por aditivos alimentares e conservantes
-
-#### Filtros Nutricionais
-
-- **Ranges Personalizados**: Filtros por valores nutricionais (calorias, gorduras, açúcares, etc.)
-- **12 Opções de Ordenação**: Por relevância, nutrição, nome, marca, valores nutricionais, etc.
-
-### 🛒 Listas de Compras Colaborativas
-
-Sistema completo de gerenciamento de compras:
-
-- **Múltiplas Listas**: Criação e gerenciamento de várias listas de compras
-- **Produtos Detalhados**: Adição com quantidade, unidade e observações
-- **Status de Compra**: Marcação de itens como comprados
-- **Sincronização**: Persistência via Prisma + SQLite
-- **Compartilhamento**: Compartilhamento de listas via ID único
-
-### 🎨 Interface e Experiência do Usuário
-
-Design moderno e acessível:
-
-- **Design Responsivo**: Mobile-first com adaptação para todos os dispositivos
-- **Temas**: Modo claro e escuro com persistência de preferência
-- **Animações**: Transições suaves com Framer Motion
-- **Acessibilidade**: Componentes Radix UI com suporte completo a leitores de tela
-- **Estados de Loading**: Skeletons e indicadores de carregamento
-- **Paginação Otimizada**: Carregamento eficiente de grandes listas
-- **Imagens Otimizadas**: Lazy loading e otimização automática
-
-## 🛠 Stack Tecnológica
-
-### Framework Principal
-
-- **[Next.js 14.2.18](https://nextjs.org/)** - React framework com App Router e Server Actions
-- **[TypeScript 5.7.2](https://www.typescriptlang.org/)** - JavaScript tipado para maior confiabilidade
-- **[React 18.3.1](https://react.dev/)** - Biblioteca de interface moderna com recursos concorrentes
-
-### Banco de Dados e ORM
-
-- **[Prisma 5.22.0](https://www.prisma.io/)** - ORM type-safe para gerenciamento de dados
-- **[SQLite](https://www.sqlite.org/)** - Banco de dados leve e serverless
-
-### Estilização e UI
-
-- **[Tailwind CSS 3.4.15](https://tailwindcss.com/)** - Framework CSS utility-first
-- **[shadcn/ui](https://ui.shadcn.com/)** - Biblioteca de componentes reutilizáveis
-- **[Radix UI](https://www.radix-ui.com/)** - Primitivos acessíveis não estilizados
-- **[Lucide Icons 0.460.0](https://lucide.dev/)** - Ícones bonitos e customizáveis
-- **[Framer Motion 11.12.0](https://www.framer.com/motion/)** - Biblioteca de animações
-
-### APIs Externas
-
-- **[Open Food Facts](https://world.openfoodfacts.org/)** - Base de dados global de produtos alimentícios
-- **Geolocation API** - Recomendações baseadas em localização
-
-### Ferramentas de Desenvolvimento
-
-- **[ESLint 8.57.1](https://eslint.org/)** - Linting e formatação de código
-- **[PostCSS 8.4.49](https://postcss.org/)** - Processamento de CSS
-- **[pnpm](https://pnpm.io/)** - Gerenciador de pacotes eficiente
-
-## 🏗 Arquitetura
-
-### Estrutura do App Router
-
-```
-app/
-├── actions.ts # Server Actions para mutações de dados
-├── api/ # Rotas de API para proxies de serviços externos
-│ ├── cache/sync/ # Sincronização de cache
-│ ├── location/ # Serviços de geolocalização
-│ ├── products/[barcode]/ # Proxy de busca de produto
-│ ├── search/ # Proxy de busca Open Food Facts
-│ └── storage-stats/ # Estatísticas de armazenamento
-├── components/ # Componentes específicos de funcionalidades
-│ ├── landing/ # Seções da página inicial
-│ └── [componentes diversos] # Componentes reutilizáveis
-├── lista/[id]/ # Páginas de lista de compras
-├── produto/[barcode]/ # Páginas de detalhes do produto
-├── resultados/ # Página de resultados de busca
-└── layout.tsx # Layout raiz
-```
-
-### Fluxo de Dados
-
-1. **Requisições de Busca**: Entrada do usuário → Rota de API → API Open Food Facts → Resposta
-2. **Gerenciamento de Listas**: Ações do usuário → Server Actions → Prisma → Banco de dados
-3. **Atualizações em Tempo Real**: Server Actions → Banco de dados → Revalidação → Atualização da UI
-
-### Sistema de Cache
+## Como funciona
```mermaid
-graph TD
- A[Usuário] --> B[Interface]
- B --> C{Cache Local?}
- C -->|Sim| D[Retornar Dados]
- C -->|Não| E[API Route]
- E --> F[Open Food Facts API]
- F --> G[Salvar no Cache]
- G --> D
+flowchart LR
+ U["Navegador
SearchBar · FilterSidebar"] --> L{"localStorage
TTL 1 h"}
+ L -->|hit| R["Resultados"]
+ L -->|miss| A["Rotas Next.js
/api/search · /api/products/[barcode]"]
+ A --> J{"data/products-cache.json
cache JSON no servidor"}
+ J -->|hit| R
+ J -->|"miss (fora do cache-only)"| O["Open Food Facts
world.openfoodfacts.org"]
+ O -->|salva no cache JSON| R
+ P["/lista/[id]"] --> S["Server Actions
app/actions.ts"] --> D["Prisma + SQLite"]
```
-## 🚦 Instalação e Setup
+
+Detalhes técnicos
-### Pré-requisitos
+| Peça | Onde | O que faz |
+|---|---|---|
+| Wrapper da API | `lib/openFoodFactsApi.ts` | Timeout de 8 s por requisição, intervalo de 200 ms entre páginas, páginas de até 1000 produtos, ordenação com score de completude |
+| Cache do navegador | `lib/cacheManager.ts`, `hooks/useSearchCache.ts` | Buscas com filtros em `localStorage`, índice de chaves e estatísticas |
+| Cache do servidor | `lib/jsonCacheManager.ts` | Singleton que lê e grava `data/products-cache.json` com merge dos produtos |
+| Sincronização | `POST /api/cache/sync` | Recebe produtos do cliente e os grava no cache JSON |
+| Estatísticas | `GET /api/storage-stats` | Estatísticas de armazenamento do cache |
+| Localização | `GET /api/location` | IP via `x-forwarded-for`/`x-real-ip` → país via ip-api.com |
+| Listas | `app/actions.ts` | `verificarLista`, `criarItens`, `listarProdutos`, `deletarProduto`, `toggleComprado` |
+| Imagens | `next.config.mjs` | Libera `static.openfoodfacts.org` e `images.openfoodfacts.org`, formatos WebP/AVIF |
-- **Node.js** 18.0 ou superior
-- **pnpm** 8.0 ou superior (gerenciador de pacotes recomendado)
+Modelos Prisma (`prisma/schema.prisma`, SQLite): `Lista` (`id`, timestamps) e
+`Produtos` (`nome`, `qtd`, `tipoUN`, `comprado`, `listaId`).
-### Instalação Passo a Passo
+Estrutura:
-1. **Clone o repositório**
-
- ```bash
- git clone https://github.com/evandrodevbr/lista-compras.git
- cd lista-compras
- ```
-
-2. **Instale as dependências**
-
- ```bash
- pnpm install
- ```
-
-3. **Configure as variáveis de ambiente**
-
- ```bash
- cp .env.example .env.local
- ```
-
- Configure as seguintes variáveis:
-
- ```env
- DATABASE_URL="file:./prisma/db/database.sqlite"
- NEXT_PUBLIC_SITE_URL="http://localhost:3000"
- ```
-
-4. **Inicialize o banco de dados**
-
- ```bash
- pnpm db:generate
- pnpm db:migrate
- ```
-
-5. **Inicie o servidor de desenvolvimento**
-
- ```bash
- pnpm dev
- ```
-
-6. **Abra seu navegador**
- Navegue para [http://localhost:3000](http://localhost:3000)
-
-### Troubleshooting
-
-**Problema**: Erro de conexão com banco de dados
-
-- **Solução**: Verifique se o arquivo `database.sqlite` existe em `prisma/db/`
-
-**Problema**: Erro de build do Prisma
-
-- **Solução**: Execute `pnpm db:generate` antes do build
-
-**Problema**: Dependências não instaladas
-
-- **Solução**: Use `pnpm install --no-frozen-lockfile`
-
-## 🔌 API e Integrações
-
-### Integração Open Food Facts
-
-O NutriScan integra com a API Open Food Facts através de um wrapper customizado (`lib/openFoodFactsApi.ts`) que fornece:
-
-- **Busca de Produtos**: Pesquisa por nome, marca ou categoria
-- **Lookup por Código de Barras**: Busca direta usando códigos de barras
-- **Filtros Avançados**: Filtros por notas nutricionais, alérgenos, aditivos e mais
-- **Cache**: Estratégia de cache inteligente para melhor performance
-- **Tratamento de Erros**: Tratamento abrangente de erros e mecanismos de fallback
-
-### Endpoints Disponíveis
-
-| Endpoint | Descrição | Método |
-| ------------------------- | ----------------------------- | ------ |
-| `/api/search` | Busca de produtos | GET |
-| `/api/products/[barcode]` | Busca de produto específico | GET |
-| `/api/location` | Serviços de geolocalização | GET |
-| `/api/cache/sync` | Sincronização de cache | POST |
-| `/api/storage-stats` | Estatísticas de armazenamento | GET |
-
-### Rate Limits e Cache
-
-- **Resultados de Busca**: Cache de 1 hora para reduzir chamadas à API
-- **Detalhes de Produto**: Cache de 24 horas para produtos frequentemente acessados
-- **Opções de Filtro**: Cache de 1 semana para dados estáticos como categorias e marcas
-
-## 🗄 Database Schema
-
-### Schema Prisma
-
-```prisma
-model Lista {
- id String @id
- createdAt DateTime @default(now())
- updatedAt DateTime @default(now()) @updatedAt
- produtos Produtos[]
-}
-
-model Produtos {
- id Int @id @default(autoincrement())
- nome String
- qtd Float
- tipoUN String
- comprado Boolean @default(false)
- listaId String @default("default")
- createdAt DateTime @default(now())
- updatedAt DateTime @default(now()) @updatedAt
- lista Lista @relation(fields: [listaId], references: [id])
-}
+```text
+app/ App Router: landing, /resultados, /produto, /lista, /sobre
+app/api/ search, products/[barcode], location, cache/sync, storage-stats
+app/actions.ts Server Actions das listas de compras
+lib/ wrapper da API, caches (navegador e JSON), geolocalização, Prisma
+hooks/ busca, filtros, cache-only, geolocalização, monitor de storage
+components/ui/ componentes shadcn/ui
+data/ products-cache.json
+prisma/ schema.prisma
+docs/ notas da API Open Food Facts e material do redesign
```
-### Características Principais
+
-- **Estrutura Simples**: Fácil de entender e manter
-- **Listas Flexíveis**: Suporte para múltiplas listas de compras
-- **Rastreamento de Produtos**: Gerenciamento de quantidade e unidade
-- **Rastreamento de Status**: Status de compra para cada item
-- **Timestamps**: Rastreamento automático de criação e atualização
+## Limitações conhecidas
-## ⚡ Performance e Otimizações
+- O switch de cache-only só existe em produção (`NODE_ENV=production`); em desenvolvimento ele fica desligado.
+- Toda busca nova depende do Open Food Facts: o wrapper aplica timeout de 8 s e intervalo de 200 ms entre páginas, mas não há fila ou fallback além do cache.
+- A localização é por IP (o servidor consulta o ip-api.com), não pela API de geolocalização do navegador.
+- O código de barras é digitado ou colado; não há leitura por câmera.
+- O `sitemap.xml` lista só a página inicial.
-### Estratégia de Cache Multi-Camada
+## Execução local
-1. **Cache de Busca**: Armazenamento local de resultados de busca
-2. **Cache de Produtos**: Cache JSON de produtos populares
-3. **Cache de Imagens**: Lazy loading e otimização automática
-4. **Cache de API**: Cache de respostas da API Open Food Facts
+> [!WARNING]
+> **Não existe `.env.example`** e **`pnpm db:migrate` não funciona num clone novo**:
+> ele roda `prisma migrate deploy`, mas `/prisma/migrations` está no `.gitignore`.
+> Crie o banco com `pnpm db:push`. O `DATABASE_URL` é resolvido a partir da pasta
+> `prisma/`, então `file:./db/database.sqlite` vira `prisma/db/database.sqlite`
+> (pasta também ignorada pelo git).
-### Otimizações de Performance
-
-- **Lazy Loading**: Carregamento sob demanda de imagens e componentes
-- **Code Splitting**: Divisão automática de código por rota
-- **Otimização de Bundle**: Minificação e tree-shaking automáticos
-- **Server Actions**: Atualizações de dados sem recarregamento de página
-- **Image Optimization**: Otimização automática de imagens com Next.js
-
-### Métricas de Performance
-
-- **First Load JS**: ~87.3 kB compartilhado
-- **Build Time**: Otimizado com Prisma e Next.js
-- **Cache Hit Rate**: Monitorado via storage stats API
-
-## 🚀 Deployment
-
-### Configuração Dokploy
-
-O projeto inclui configuração para deployment via Dokploy (`dokploy.yaml`):
-
-```yaml
-build:
- pre_build:
- - npm install -g pnpm@latest
- - export PNPM_HOME="/root/.local/share/pnpm"
- - export PATH="$PNPM_HOME:$PATH"
- steps:
- - name: Verify pnpm
- run: which pnpm && pnpm --version
- - name: Install dependencies
- run: pnpm install --no-frozen-lockfile
- - name: Generate Prisma Client
- run: pnpx prisma generate
- - name: Build application
- run: pnpm run build
-```
-
-### Configuração Nixpacks
-
-Configuração alternativa para deployment (`nixpacks.toml`):
-
-```toml
-[phases.setup]
-nixPkgs = ['nodejs_18', 'openssl']
-cmds = [
- 'npm install -g pnpm@latest',
- 'npm install -g prisma'
-]
-
-[phases.install]
-cmds = [
- 'npx pnpm install --no-frozen-lockfile',
- 'mkdir -p prisma',
- 'touch prisma/dev.db',
- 'chmod -R 777 prisma'
-]
-
-[phases.build]
-cmds = [
- 'mkdir -p node_modules/.prisma',
- 'mkdir -p .next',
- 'chmod -R 777 node_modules/.prisma node_modules/.bin .next prisma',
- 'npx prisma generate',
- 'npx prisma db push --accept-data-loss',
- 'npx pnpm run build'
-]
-
-[start]
-cmd = 'npx pnpm start'
-```
-
-### Checklist de Deployment
-
-- [ ] Configurar variáveis de ambiente
-- [ ] Executar migrações do banco de dados
-- [ ] Gerar Prisma Client
-- [ ] Build da aplicação
-- [ ] Configurar domínio e SSL
-- [ ] Testar funcionalidades principais
-
-## 📜 Scripts Disponíveis
-
-### Desenvolvimento
+Requisitos: Node.js 18+ (o deploy usa `nodejs_18`) e pnpm (o deploy fixa `pnpm@10.34.5`).
```bash
-pnpm dev # Inicia servidor de desenvolvimento (http://localhost:3000)
-pnpm build # Build para produção
-pnpm start # Inicia servidor de produção
-pnpm lint # Executa ESLint
+git clone https://git.evandro.dev.br/evandro/nutriscan.git
+cd nutriscan
+pnpm install # o postinstall já roda `prisma generate`
+
+# .env na raiz (o Prisma lê .env, não .env.local)
+echo 'DATABASE_URL="file:./db/database.sqlite"' > .env
+
+pnpm db:push # cria o banco SQLite a partir do schema
+pnpm dev # http://localhost:3000
```
-### Banco de Dados
+Variáveis opcionais lidas pelo código:
-```bash
-pnpm db:push # Push do schema Prisma para o banco
-pnpm db:generate # Gera Prisma Client
-pnpm db:migrate # Executa migrações do banco
-```
+| Variável | Efeito |
+|---|---|
+| `NEXT_PUBLIC_CACHE_ONLY_MODE=true` | A rota de produto responde só com o cache JSON |
+| `NEXT_PUBLIC_RYBBIT_HOST` | Destino do proxy `/analytics/*` (padrão `https://analytics.evandro.dev.br/api`) |
-### Pós-instalação
+| Script | Comando |
+|---|---|
+| `pnpm dev` | `next dev` |
+| `pnpm build` | `prisma generate && next build` |
+| `pnpm start` | `next start` |
+| `pnpm lint` | `next lint` |
+| `pnpm db:push` | `prisma db push` |
+| `pnpm db:generate` | `prisma generate` |
+| `pnpm db:migrate` | `prisma migrate deploy` (exige migrações locais, veja o aviso acima) |
-```bash
-pnpm postinstall # Gera Prisma Client após instalação
-```
+## Deploy
-## 🤝 Contribuindo
+O repositório traz duas configurações, sem workflow de CI:
-Agradecemos contribuições da comunidade! Aqui está como você pode ajudar:
+- [`dokploy.yaml`](dokploy.yaml): instala o pnpm, roda `pnpm install --no-frozen-lockfile`, `pnpx prisma generate` e `pnpm run build`.
+- [`nixpacks.toml`](nixpacks.toml): `nodejs_18` + `openssl`, `pnpm@10.34.5`, `DATABASE_URL=file:./db/database.sqlite`, `prisma db push --accept-data-loss`, build e `pnpm start`.
-### Para Desenvolvedores
+## Licença
-1. **Fork o repositório**
-2. **Crie uma branch de feature**
- ```bash
- git checkout -b feature/amazing-feature
- ```
-3. **Faça suas alterações**
-4. **Commit suas alterações**
- ```bash
- git commit -m 'Add: amazing feature'
- ```
-5. **Push para a branch**
- ```bash
- git push origin feature/amazing-feature
- ```
-6. **Abra um Pull Request**
+Licença de Uso Pessoal, em [`LICENSE`](LICENSE) (Copyright (c) 2024 Evandro): uso
+pessoal, não comercial e local; sem deploy público, redistribuição ou obras
+derivadas. Dúvidas sobre a licença: evandro@evandro.dev.br.
-### Para Usuários Finais
+Bugs e sugestões: [issues do repositório](https://git.evandro.dev.br/evandro/nutriscan/issues).
+Autor: [evandro.dev.br](https://evandro.dev.br).
-- **Reportar Bugs**: Use [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
-- **Solicitar Features**: Sugira novas funcionalidades via [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
-- **Fornecer Feedback**: Compartilhe sua experiência e sugestões
+## Avisos
-### Guidelines de Desenvolvimento
-
-- Siga o estilo de código existente
-- Escreva mensagens de commit claras
-- Adicione testes para novas funcionalidades
-- Atualize documentação quando necessário
-- Certifique-se de que todos os checks passem antes de submeter PR
-
-## 📄 Licença
-
-Este projeto está licenciado sob uma **Licença de Uso Pessoal**.
-
-### Permissões
-
-- ✅ Uso pessoal em localhost
-- ✅ Inspeção de código e aprendizado
-- ✅ Desenvolvimento e teste local
-
-### Restrições
-
-- ❌ Deploy público na web
-- ❌ Uso comercial
-- ❌ Redistribuição para terceiros
-- ❌ Criação de obras derivadas para distribuição pública
-
-Para os termos completos da licença, consulte o arquivo [LICENSE](LICENSE).
-
-## 📫 Contato
-
-**Autor:** Evandro
-**Website:** [evandro.dev.br](https://evandro.dev.br)
-**GitHub:** [@evandrodevbr](https://github.com/evandrodevbr)
-**Email:** evandro@evandro.dev.br
-
-### Links do Projeto
-
-- **Live Demo:** [nutriscan.evandro.dev.br](https://nutriscan.evandro.dev.br)
-- **Repositório:** [github.com/evandrodevbr/lista-compras](https://github.com/evandrodevbr/lista-compras)
-- **Issues:** [GitHub Issues](https://github.com/evandrodevbr/lista-compras/issues)
-
-## 🙏 Agradecimentos
-
-- **[Open Food Facts](https://world.openfoodfacts.org/)** - Pela base de dados abrangente de alimentos
-- **[shadcn/ui](https://ui.shadcn.com/)** - Pela biblioteca de componentes acessíveis
-- **[Next.js Team](https://nextjs.org/)** - Pelo framework React incrível
-- **[Vercel](https://vercel.com/)** - Por soluções de hosting e deployment
-- **[Prisma](https://www.prisma.io/)** - Pelo excelente ORM
-- **Contribuidores** - Obrigado a todos que ajudam a melhorar este projeto
-
----
-
-
-
Desenvolvido com ❤️ por evandro.dev.br
-
Feito para usuários conscientes com a saúde e desenvolvedores ao redor do mundo
-
+- **Analytics:** o app carrega o Rybbit Analytics (self-hosted, via proxy `/analytics/`) com session replay e rastreamento de erros.
+- **Dados externos:** a localização envia o IP do visitante, pelo servidor, ao [ip-api.com](https://ip-api.com); os dados de produtos vêm do [Open Food Facts](https://world.openfoodfacts.org/).
+- **Doação:** o app exibe um card de doação via [Buy Me a Coffee](https://buymeacoffee.com/evandrotruuta).
+- **Créditos:** [Open Food Facts](https://world.openfoodfacts.org/), [Next.js](https://nextjs.org/), [Prisma](https://www.prisma.io/), [shadcn/ui](https://ui.shadcn.com/) e [Radix UI](https://www.radix-ui.com/).