Projetos / Comercial Template

comercial-template

Aplicação full-stack para cadastro de clientes e propostas comerciais. Repositório: https://github.com/lughlammas/comercial-template · commit 3ead252

Status
Repositório público · sem deploy
Stack
Next.js App Router, TypeScript, Tailwind, NextAuth, Prisma + SQLite, @react-pdf
Testes rodados
npm test → 24/24 · typecheck exit 0 · 19/10/2026

01Problema

O problema que o projeto enfrenta são propostas feitas em documentos e planilhas: total calculado à mão, nenhum histórico por cliente e um PDF apresentável que precisa ser formatado de novo a cada vez. O projeto testa se esse fluxo (cliente → proposta → itens → total → PDF) cabe numa aplicação pequena, confiável e reaproveitável.

02Contexto

É uma aplicação de demonstração, com interface em português e dados sintéticos. Não está publicada nem tem usuários, e não alega adoção em produção.

03Solução

  • Cadastro e login com e-mail e senha, senha com hash bcrypt e sessão JWT.
  • Painel protegido, com criação, lista e detalhe de clientes e de propostas.
  • Itens com quantidade, preço e total arredondado em centavos.
  • PDF de cada proposta gerado no servidor, que só o dono baixa.
comercial-template·detalhe da proposta
Detalhe de proposta do Comercial Template em 1440px: itens, quantidades, preços, total e botão Baixar PDF, dados sintéticos. Detalhe de proposta do Comercial Template em 390px (celular), proposta fictícia com itens e total.
Captura real · commit 3ead252 · execução local, dados sintéticos (scripts/e2e-smoke.mjs + demo semeada) · 19/10/2026 09:23 BRT

04Arquitetura

Uma única aplicação Next.js (App Router) em TypeScript. As páginas são React Server Components que consultam o banco via Prisma (SQLite); as gravações passam por Server Actions; uma rota gera o PDF com @react-pdf/renderer. Um middleware bloqueia as rotas protegidas sem sessão. Há Dockerfile e build standalone configurados.

05Evidências

  • Passou em 24/24 testes unitários (4 arquivos: dinheiro, server actions, middleware e rota de PDF), com typecheck limpo, na execução feita para este site em 19/10/2026.
  • O CI passou no commit atual. O workflow "Web validation" roda instalação, lint, testes unitários, build de produção, typecheck e um smoke test no navegador contra o build de produção.
  • O isolamento de dados é testado: a rota de PDF responde 401 sem sessão e 404 para propostas de outro usuário, e a criação de proposta recusa cliente de outro usuário.
  • O repositório documenta uma execução no navegador em 07/10/2026 com 13/13 checagens, entre elas um segundo usuário recebendo 404 nos registros do primeiro. Essa execução não foi repetida para este site.

Links

06Papel humano e ferramentas de IA

Feito com desenvolvimento assistido por IA sob direção humana: ferramentas de IA contribuíram em produto, implementação, QA e documentação, sob direção humana. O repositório contém o código da aplicação, não uma plataforma de agentes.

07Testes executados

Checagem Resultado Onde
npm test 24/24 passaram rodado em 19/10/2026
npm run typecheck exit 0 rodado em 19/10/2026
CI "Web validation" sucesso em 3ead252 GitHub Actions
Smoke no navegador (test:e2e) 13/13, documentado docs do repo, 07/10/2026, não repetido
lint / build / e2e locais não rodados para este site

08Limitações

  • Sem demo hospedada nem deploy.
  • Imagem Docker não verificada: o Dockerfile copia uma pasta public/ que não existe.
  • Clientes e propostas não podem ser editados nem apagados, e o status da proposta não muda pela interface.
  • Sem verificação de e-mail, recuperação de senha nem limite de tentativas de login.
  • Valores guardados em ponto flutuante (arredondados por linha), com BRL e pt-BR fixos no código.
  • Esquema aplicado com db push, sem histórico de migrações.
  • Restam 11 alertas de severidade alta em dependências de ferramentas e opcionais (0 críticos), segundo npm audit em 19/10/2026.
  • Sem testes de desempenho, acessibilidade ou segurança.
  • O header vaza horizontalmente abaixo de ~420 px (medido a 360/390 px); o botão 'Ver demo' tem contraste 1.04:1 e o rodapé 3.66:1 (WCAG AA exige 4.5:1).
  • Sem arquivo LICENSE.

09Necessidade comercial

É a referência da S02 · Custom Software & MVP: autenticação, dono dos dados, cálculo de dinheiro com teste e documento de saída, entregues com os limites declarados. Também serve de base para fluxos parecidos (orçamentos, recibos, contratos simples), depois de avaliar o que cada um exige.

→ S02 · Custom Software & MVP Development · Solicite uma proposta

Tem um problema que deveria virar software?

Conte o que você tem e o que não está funcionando.