Obrigado pelo interesse. Para preparar o ambiente, rodar e compilar o projeto, veja docs/DEVELOPMENT.md. Este arquivo trata de onde as coisas ficam e das regras do código.
Caution
Nunca anexe certificados (.pfx, .p12), senhas, XMLs fiscais reais ou o banco SQLite em issues, PRs ou commits. Problemas de segurança vão por e-mail, conforme o SECURITY.md.
| Pasta | Conteúdo |
|---|---|
cmd/nanci |
Entrada do CLI. |
cmd/seeddev, cmd/mockcert |
Ambiente local em devdata/ e certificado mock. |
internal/cli |
Comandos Cobra. |
internal/app |
Casos de uso e montagem das dependências. |
internal/company, internal/credential |
Cadastro de empresas e de credenciais (certificados). |
internal/sync |
Loop de sincronização por NSU, comum a NFS-e, NF-e e CT-e. |
internal/store |
SQLite, repositórios (sqlc) e migrações em migrations_v2/. |
internal/nfse, internal/adn |
Domínio da NFS-e e cliente do ADN. |
internal/nfe, internal/cte, internal/dfe |
Domínio da NF-e, do CT-e e o vocabulário comum aos dois. |
internal/sefaz |
Cliente SOAP da SEFAZ (distribuição e eventos) e assinatura XMLDSig. |
internal/report, internal/danfse |
Exportações (XLSX, CSV, ZIP) e geração do DANFSe em PDF. |
internal/files |
Armazenamento dos XMLs originais em blobs/. |
internal/foundation |
Utilitários: CNPJ, caminhos, certificado, cliente HTTP mTLS, mascaramento de logs. |
internal/desktop |
App Wails: backend Go na raiz, frontend Vue 3 em frontend/. |
website |
Site de documentação (Hugo). |
docs |
Documentação técnica. |
Detalhes em docs/ARCHITECTURE.md.
- Formate antes de commitar:
make fmt(rodagoimports -local github.com/vasfvitor/nanciegofmt -s). - Nomes exportados em
CamelCase, internos emcamelCase, pacotes curtos e em minúsculas. - Termos fiscais ficam em português em todas as camadas (Go, DTOs, TypeScript, colunas):
ChaveAcesso,CNPJ,Competence,tomada/prestada,Manifestacao. Não traduza. - No frontend, páginas e componentes não importam os bindings gerados do Wails; use
desktopClientesrc/platform/wails/.
As regras completas, inclusive as do frontend, estão em AGENTS.md.
- Testes ficam ao lado do código (
*_test.go). Usetestdata/para arquivos de um pacote einternal/store/storetestpara o banco de teste migrado e as fábricas de empresa e credencial. - Quando o teste precisar gravar arquivos ou criar banco, use
t.TempDir(). - Mudanças em parser, armazenamento ou caminhos de arquivo pedem teste de regressão.
- Rode
make checkantes do PR. Para rodar só os testes com o detector de corrida:go test -race ./.... - No frontend (
internal/desktop/frontend):pnpm run lint:check,pnpm run test:unitepnpm run build.
Commits no formato escopo: mudança, no imperativo e curtos:
frontend: fix company dialog spacing
cli: validate --competencia input
nfe: handle cStat 656 on distribution
Escopos: frontend, cli, app, store, sync, nfse, adn, nfe, cte, sefaz, wails, docs, ou a combinação de dois quando a mudança atravessa camadas (frontend,cli).
No PR, explique a mudança de comportamento, liste os comandos de verificação e inclua capturas de tela para mudanças visuais. Aponte qualquer impacto em schema, migração ou tratamento de certificado.