docs(agents): add local dev guide, env examples, CI/deploy notes
This commit is contained in:
parent
e11d19a128
commit
7569986ffc
1 changed files with 64 additions and 0 deletions
64
agents.md
64
agents.md
|
|
@ -23,6 +23,70 @@
|
|||
5. `pnpm convex:dev`
|
||||
6. Em outro terminal: `pnpm dev`
|
||||
|
||||
## Desenvolvimento local — boas práticas (atualizado)
|
||||
- Ambientes separados: mantenha seu `.env.local` só para DEV e o `.env` da VPS só para PROD. Nunca commitar arquivos `.env`.
|
||||
- Convex em DEV: rode `pnpm convex:dev` e aponte o front para `http://127.0.0.1:3210` via `NEXT_PUBLIC_CONVEX_URL`.
|
||||
- Banco local: por padrão `DATABASE_URL=file:./prisma/db.sqlite`. Se quiser isolar por projeto, use `db.dev.sqlite`.
|
||||
- Seeds em DEV: use `pnpm auth:seed` (usuários Better Auth) e acesse `/dev/seed` uma vez para dados de demonstração do Convex.
|
||||
- Seeds em PROD: só quando realmente necessário; não fazem parte do deploy automático.
|
||||
|
||||
### Exemplo de `.env.local` (DEV)
|
||||
```
|
||||
# Base do app
|
||||
NODE_ENV=development
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
||||
BETTER_AUTH_URL=http://localhost:3000
|
||||
BETTER_AUTH_SECRET=dev-only-long-random-string
|
||||
|
||||
# Convex (DEV)
|
||||
NEXT_PUBLIC_CONVEX_URL=http://127.0.0.1:3210
|
||||
|
||||
# Banco local (Prisma)
|
||||
DATABASE_URL=file:./prisma/db.sqlite
|
||||
|
||||
# SMTP de desenvolvimento (ex.: Mailpit)
|
||||
SMTP_ADDRESS=localhost
|
||||
SMTP_PORT=1025
|
||||
SMTP_TLS=false
|
||||
SMTP_USERNAME=
|
||||
SMTP_PASSWORD=
|
||||
MAILER_SENDER_EMAIL="Dev <no-reply@localhost>"
|
||||
|
||||
# (Opcional) OAuth DEV – não usado por padrão neste projeto
|
||||
GITHUB_CLIENT_ID=
|
||||
GITHUB_CLIENT_SECRET=
|
||||
GOOGLE_CLIENT_ID=
|
||||
GOOGLE_CLIENT_SECRET=
|
||||
```
|
||||
|
||||
Observações:
|
||||
- `COOKIE_DOMAIN` não é necessário em DEV neste projeto.
|
||||
- Variáveis de provisionamento de máquinas (`MACHINE_PROVISIONING_SECRET`, etc.) só se você for testar as rotas de máquinas/inventário.
|
||||
|
||||
### Passo a passo local
|
||||
1) `pnpm install`
|
||||
2) `pnpm prisma:generate`
|
||||
3) `pnpm convex:dev` (terminal A)
|
||||
4) `pnpm dev` (terminal B)
|
||||
5) (Opcional) `pnpm auth:seed` e visitar `http://localhost:3000/dev/seed`
|
||||
|
||||
## Deploy via GitHub Actions (produção)
|
||||
- Fluxo: `git push main` ⇒ runner self‑hosted na VPS sincroniza código e aplica o stack (Traefik/Swarm) sem derrubar o serviço (start-first).
|
||||
- Disparo do deploy web: apenas quando há mudanças em arquivos do app (src/, public/, prisma/, next.config.ts, package.json, pnpm-lock.yaml, tsconfig.json, middleware.ts, stack.yml).
|
||||
- Disparo do deploy Convex: apenas quando há mudanças em `convex/**`.
|
||||
- O `.env` da VPS é preservado; caches do servidor (`node_modules`, `.pnpm-store`) não são tocados.
|
||||
- Banco Prisma (SQLite) persiste em volume nomeado (`sistema_db`); não é recriado a cada deploy.
|
||||
|
||||
## Bancos e seeds — DEV x PROD
|
||||
- DEV: use os seeds à vontade (usuários com `pnpm auth:seed`, dados demo do Convex em `/dev/seed`).
|
||||
- PROD: evite seeds automáticos; para criar um admin use `SEED_USER_*` e `pnpm auth:seed` em um container Node efêmero.
|
||||
- Alterações de schema: sempre via migrações (`prisma migrate`). O CI aplica `migrate deploy` no start do container web.
|
||||
|
||||
## Dicas rápidas
|
||||
- Imagens em `public/`: trocou o arquivo → push. Para bust de cache, versionar o nome (ex.: `logo.v2.png`) ou usar query (`?v=sha`).
|
||||
- Problemas de permissão de build: garanta que `.next` pertence ao usuário do runner (se necessário, remover `.next` no host e rebuildar).
|
||||
- Se precisar inspecionar/backup do SQLite em PROD, prefira um bind dedicado (`/srv/apps/sistema-data:/app/data`) ou use `docker run -v sistema_db:/data` para copiar o arquivo.
|
||||
|
||||
## Checklist para novo computador
|
||||
1. Instale Node.js 20+ e habilite o Corepack (`corepack enable`) para usar o `pnpm`.
|
||||
2. Garanta o `pnpm` atualizado (`corepack prepare pnpm@latest --activate`) antes de clonar o repositório.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue