From eb5f39100f2de18cb4d7d17b198b43bd081d53bc Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Fri, 10 Oct 2025 13:09:18 -0300 Subject: [PATCH] docs: adiciona docs/DEV.md e referencia no README (Prisma DEV, Auth seed, Tabs desktop, build Tauri) --- README.md | 4 +++ docs/DEV.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 docs/DEV.md diff --git a/README.md b/README.md index e01ea69..cd37367 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ Aplicação Next.js 15 com Convex e Better Auth para gestão de tickets da Rever - App Desktop: `apps/desktop/.env.example` — copie para `apps/desktop/.env` e ajuste `VITE_APP_URL`. - Nunca faça commit de arquivos `.env` com valores reais (já ignorados em `.gitignore`). +### Guia de DEV (Prisma, Auth e Desktop/Tauri) + +Para fluxos detalhados de desenvolvimento — banco de dados local (SQLite/Prisma), seed do Better Auth, ajustes do Prisma CLI no DEV e build do Desktop (Tauri) — consulte `docs/DEV.md`. + ## Scripts úteis - `pnpm lint` — ESLint com as regras do projeto. diff --git a/docs/DEV.md b/docs/DEV.md new file mode 100644 index 0000000..7e87410 --- /dev/null +++ b/docs/DEV.md @@ -0,0 +1,98 @@ +# Guia de DEV — Banco (Prisma), Auth e Desktop (Tauri) + +Este guia descreve o que foi corrigido, por quê e como seguir no DEV, incluindo como gerar o executável do Desktop (Tauri) localmente. + +## O que foi feito e por quê + +- Ajuste do Prisma no DEV (P2021) + - Problema: o Prisma CLI lia o `.env` da raiz (produção) e o banco local não tinha as tabelas do Better Auth (ex.: `AuthUser`, `AuthSession`). + - Decisão: evitar conflito entre `.env` (raiz) e `prisma/.env` — usamos `DATABASE_URL=...` inline nos comandos do Prisma, apontando para `./prisma/db.dev.sqlite` apenas no DEV. + - Resultado: banco `prisma/prisma/db.dev.sqlite` criado/sincronizado e seed de usuários executado. + +- Migração das abas do Desktop para shadcn/Radix + - O Tauri não roda Next.js. Para manter o visual consistente com o web, migramos as abas para um wrapper shadcn-like usando Radix Tabs e Tailwind (`apps/desktop/src/components/ui/tabs.tsx`). + - Incluímos badge de status equivalente ao web e o botão “Enviar inventário agora” (POST `/api/machines/inventory`). + +- CI (GitHub Actions) e lockfile + - Erro resolvido: `ERR_PNPM_OUTDATED_LOCKFILE` em `apps/desktop`. Atualizamos o `pnpm-lock.yaml` para refletir as novas dependências do Desktop. + - O workflow do desktop usa `--frozen-lockfile`; manter o lockfile em sincronia evita falhas. + +## Fluxo de banco (DEV) + +- Banco de DEV: `file:./prisma/db.dev.sqlite` (arquivo: `prisma/prisma/db.dev.sqlite`). +- Comandos (forçar alvo de DEV no terminal atual): + +``` +DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm exec prisma db push +DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm prisma:generate +DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm auth:seed +``` + +- Rodar app local (Next): + +``` +pnpm dev +``` + +- Login de teste (DEV): `admin@sistema.dev / admin123` + +- Prisma Studio (DEV): + +``` +DATABASE_URL="file:./prisma/db.dev.sqlite" pnpm exec prisma studio +``` + +Observação: evitar `prisma/.env` nesse setup, pois causa conflito com o `.env` da raiz (o Prisma acusa conflitos e falha o comando). Manter o override inline é a forma mais segura de isolar DEV sem tocar produção. + +## Desktop (Tauri) + +- Onde foram feitas as mudanças principais: + - `apps/desktop/src/components/ui/tabs.tsx` (Tabs Radix + estilos shadcn-like) + - `apps/desktop/src/main.tsx` (layout com abas: Resumo/Inventário/Diagnóstico/Configurações; status badge; botão “Enviar inventário agora”). + +- Variáveis de ambiente do Desktop (em tempo de build): + - `VITE_APP_URL` e `VITE_API_BASE_URL` — por padrão, use a URL da aplicação web. + +### Build do executável localmente + +Você pode gerar o executável local sem precisar da VPS. O que muda é apenas o sistema operacional alvo (Linux/Windows/macOS). O Tauri recomenda compilar em cada SO para obter o bundle nativo desse SO. Em produção, o GitHub Actions já faz isso em matriz. + +1) Pré-requisitos gerais + - Node 20 + pnpm 9 (via Corepack) + - Rust (stable) — `rustup` instalado + - Dependências do sistema (Linux): + - `libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev libssl-dev build-essential curl wget file` + +2) Instalar deps do desktop e buildar + +``` +corepack enable && corepack prepare pnpm@9 --activate +pnpm -C apps/desktop install +VITE_APP_URL=http://localhost:3000 \ +VITE_API_BASE_URL=http://localhost:3000 \ +pnpm -C apps/desktop tauri build +``` + +3) Saída do build + - Os artefatos ficam em: `apps/desktop/src-tauri/target/release/bundle/` + - No Linux: `.AppImage`/`.deb`/`.rpm` (conforme target) + - No Windows/macOS: executável/instalador específicos do SO (para assinatura, usar chaves/AC, se desejado) + +### Build na VPS x Local + +- Não há diferença funcional além do SO alvo e de possíveis chaves de assinatura. Use a VPS apenas se quiser gerar pacotes Linux em ambiente isolado. Para Windows/macOS, é preferível buildar nesses SOs ou usar a matriz do GitHub Actions (já configurada). + +## CI/CD — Observações + +- `desktop-release.yml` (Tauri): instala dependências, faz build por SO e publica artefatos. Mantendo o `pnpm-lock.yaml` atualizado, o passo `--frozen-lockfile` passa. +- `ci-cd-web-desktop.yml`: já usa `pnpm install --no-frozen-lockfile` no web, evitando falhas em pipelines de integração. + +## Troubleshooting + +- Sign-in 500 após `db push`/seed: + - Verifique o terminal do app e confirme a existência da tabela `AuthUser` no Prisma Studio (alvo DEV). + +- `ERR_PNPM_OUTDATED_LOCKFILE` no Desktop: + - Atualize `pnpm-lock.yaml` no root após alterar dependências de `apps/desktop/package.json`. + - Alternativa: usar `--no-frozen-lockfile` (não recomendado para releases reproduzíveis). +