# yansilva/sistema-de-contagem- architecture

> Architecture diagram of the GitHub repository yansilva/sistema-de-contagem-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yansilva/sistema-de-contagem-
- Repository: https://github.com/yansilva/sistema-de-contagem-

## Overview

Sistema SaaS multi-tenant para contagem física de estoque, conciliação com saldos de referência e auditoria. Usuários entram pelo frontend, autenticam-se e trabalham em fluxos por função: catálogo/importação, contagens e consultas/relatórios; administradores também gerenciam usuários e empresas. A API Express aplica autenticação, autorização e validação, e os controladores acessam PostgreSQL. O README documenta capacidades cujos controladores não foram amostrados; relações não confirmadas por código são atribuídas à documentação, sem inferir chamadas entre funcionalidades.

Main entry points: [`backend/src/app.js`](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/app.js) (Aplicação Express), [`frontend/js/app.js`](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/app.js) (Aplicação web), [`backend/src/controllers/authController.js`](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/authController.js) (Autenticação), [`backend/src/services/auditService.js`](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/services/auditService.js) (Serviço de auditoria)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Experiência do usuário"]
  node_webapp["Aplicação web<br/>[app.js]"]
  node_authui["Acesso e sessão<br/>[auth.js]"]
  node_countui["Contagem<br/>[contagens.js]"]
  node_catalogui["Catálogo e importação<br/>[produtos.js]"]
  node_consultui["Consulta e relatórios<br/>[consulta.js]"]
  node_companyui["Empresas<br/>[empresas.js]"]
  node_usersui["Gestão de usuários<br/>[usuarios.js]"]
  node_activityui["Atividades e auditoria<br/>[atividades.js]"]
end

subgraph group_work["Operações de estoque"]
  node_countapi["Contagens"]
  node_productapi["Catálogo de produtos"]
  node_stockapi["Estoque e importação PDF"]
  node_reportapi["Relatórios Excel"]
end

subgraph group_admin["Administração e auditoria"]
  node_userapi["Usuários"]
  node_companyapi["Empresas e plataforma"]
  node_auditapi["Auditoria"]
  node_activityapi["Atividades"]
end

subgraph group_runtime["API e persistência"]
  node_authapi["Autenticação<br/>[authController.js]"]
  node_api["Aplicação Express<br/>[app.js]"]
  node_authmw["Autenticação e tenant<br/>[auth.js]"]
  node_validation["Validação de entrada<br/>[validate.js]"]
  node_auditservice["Serviço de auditoria<br/>[auditService.js]"]
  node_database[("PostgreSQL")]
end

node_user(("Usuário"))

node_user -->|"usa"| node_webapp
node_webapp -->|"apresenta"| node_authui
node_webapp -->|"oferece contagem"| node_countui
node_webapp -->|"oferece catálogo"| node_catalogui
node_webapp -->|"oferece consultas"| node_consultui
node_webapp -->|"oferece gestão"| node_companyui
node_webapp -->|"oferece gestão"| node_usersui
node_webapp -->|"oferece auditoria"| node_activityui
node_authui -->|"envia credenciais"| node_authapi
node_countui -->|"envia contagens"| node_countapi
node_catalogui -->|"gerencia catálogo"| node_productapi
node_catalogui -->|"envia importação"| node_stockapi
node_consultui -->|"solicita relatório"| node_reportapi
node_companyui -->|"gerencia empresas"| node_companyapi
node_usersui -->|"gerencia usuários"| node_userapi
node_activityui -->|"consulta atividades"| node_activityapi
node_activityui -->|"consulta auditoria"| node_auditapi
node_api -->|"monta rota"| node_authapi
node_api -->|"monta rota"| node_countapi
node_api -->|"monta rota"| node_productapi
node_api -->|"monta rota"| node_stockapi
node_api -->|"monta rota"| node_reportapi
node_api -->|"monta rota"| node_userapi
node_api -->|"monta rota"| node_companyapi
node_api -->|"monta rota"| node_auditapi
node_api -->|"monta rota"| node_activityapi
node_authapi -->|"emite sessão"| node_authmw
node_authapi -->|"registra eventos"| node_auditservice
node_countapi -->|"registra eventos"| node_auditservice
node_productapi -->|"registra eventos"| node_auditservice
node_userapi -->|"registra eventos"| node_auditservice
node_authapi -->|"consulta e grava"| node_database
node_countapi -->|"consulta e grava"| node_database
node_productapi -->|"consulta e grava"| node_database
node_userapi -->|"consulta e grava"| node_database
node_authmw -->|"busca usuário"| node_database
node_auditservice -->|"grava eventos"| node_database
node_api -.->|"configura rotas"| node_validation

click node_webapp "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/app.js"
click node_authui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/auth.js"
click node_countui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/contagens.js"
click node_catalogui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/produtos.js"
click node_consultui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/consulta.js"
click node_companyui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/empresas.js"
click node_usersui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/usuarios.js"
click node_activityui "https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/atividades.js"
click node_authapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/authController.js"
click node_countapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/contagensController.js"
click node_productapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/produtosController.js"
click node_stockapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/estoqueController.js"
click node_reportapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/relatoriosController.js"
click node_userapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/usuariosController.js"
click node_companyapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/empresasController.js"
click node_auditapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/auditoriaController.js"
click node_activityapi "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/atividadesController.js"
click node_api "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/app.js"
click node_authmw "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/middlewares/auth.js"
click node_validation "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/middlewares/validate.js"
click node_auditservice "https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/services/auditService.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_authui,node_countui,node_catalogui,node_consultui,node_companyui,node_usersui,node_activityui toneBlue
class node_countapi,node_productapi,node_stockapi,node_reportapi toneAmber
class node_userapi,node_companyapi,node_auditapi,node_activityapi toneMint
class node_authapi,node_api,node_authmw,node_validation,node_auditservice,node_database toneRose
class node_user toneIndigo
```

## Components

### Experiência do usuário

- [Aplicação web](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/app.js): `frontend/js/app.js`
- [Acesso e sessão](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/auth.js): `frontend/js/auth.js`
- [Contagem](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/contagens.js): `frontend/js/contagens.js`
- [Catálogo e importação](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/produtos.js): `frontend/js/produtos.js`
- [Consulta e relatórios](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/consulta.js): `frontend/js/consulta.js`
- [Empresas](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/empresas.js): `frontend/js/empresas.js`
- [Gestão de usuários](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/usuarios.js): `frontend/js/usuarios.js`
- [Atividades e auditoria](https://github.com/yansilva/sistema-de-contagem-/blob/main/frontend/js/atividades.js): `frontend/js/atividades.js`

### Operações de estoque

- [Contagens](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/contagensController.js): `backend/src/controllers/contagensController.js`
- [Catálogo de produtos](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/produtosController.js): `backend/src/controllers/produtosController.js`
- [Estoque e importação PDF](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/estoqueController.js): `backend/src/controllers/estoqueController.js`
- [Relatórios Excel](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/relatoriosController.js): `backend/src/controllers/relatoriosController.js`

### Administração e auditoria

- [Usuários](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/usuariosController.js): `backend/src/controllers/usuariosController.js`
- [Empresas e plataforma](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/empresasController.js): `backend/src/controllers/empresasController.js`
- [Auditoria](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/auditoriaController.js): `backend/src/controllers/auditoriaController.js`
- [Atividades](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/atividadesController.js): `backend/src/controllers/atividadesController.js`

### API e persistência

- [Autenticação](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/controllers/authController.js): `backend/src/controllers/authController.js`
- [Aplicação Express](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/app.js): `backend/src/app.js`
- [Autenticação e tenant](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/middlewares/auth.js): `backend/src/middlewares/auth.js`
- [Validação de entrada](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/middlewares/validate.js): `backend/src/middlewares/validate.js`
- [Serviço de auditoria](https://github.com/yansilva/sistema-de-contagem-/blob/main/backend/src/services/auditService.js): `backend/src/services/auditService.js`
- **PostgreSQL**

### Other components

- **Usuário**

## Connections

- Usuário → Aplicação web: usa (evidence: `README.md`)
- Aplicação web → Acesso e sessão: apresenta (evidence: `README.md`)
- Aplicação web → Contagem: oferece contagem (evidence: `README.md`)
- Aplicação web → Catálogo e importação: oferece catálogo (evidence: `README.md`)
- Aplicação web → Consulta e relatórios: oferece consultas (evidence: `README.md`)
- Aplicação web → Empresas: oferece gestão (evidence: `README.md`)
- Aplicação web → Gestão de usuários: oferece gestão (evidence: `README.md`)
- Aplicação web → Atividades e auditoria: oferece auditoria (evidence: `README.md`)
- Acesso e sessão → Autenticação: envia credenciais (evidence: `README.md`)
- Contagem → Contagens: envia contagens (evidence: `README.md`)
- Catálogo e importação → Catálogo de produtos: gerencia catálogo (evidence: `README.md`)
- Catálogo e importação → Estoque e importação PDF: envia importação (evidence: `README.md`)
- Consulta e relatórios → Relatórios Excel: solicita relatório (evidence: `README.md`)
- Empresas → Empresas e plataforma: gerencia empresas (evidence: `README.md`)
- Gestão de usuários → Usuários: gerencia usuários (evidence: `README.md`)
- Atividades e auditoria → Atividades: consulta atividades (evidence: `README.md`)
- Atividades e auditoria → Auditoria: consulta auditoria (evidence: `README.md`)
- Aplicação Express → Autenticação: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Contagens: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Catálogo de produtos: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Estoque e importação PDF: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Relatórios Excel: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Usuários: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Empresas e plataforma: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Auditoria: monta rota (evidence: `backend/src/app.js`)
- Aplicação Express → Atividades: monta rota (evidence: `backend/src/app.js`)
- Autenticação → Autenticação e tenant: emite sessão (evidence: `backend/src/controllers/authController.js`)
- Autenticação → Serviço de auditoria: registra eventos (evidence: `backend/src/controllers/authController.js`)
- Contagens → Serviço de auditoria: registra eventos (evidence: `backend/src/controllers/contagensController.js`)
- Catálogo de produtos → Serviço de auditoria: registra eventos (evidence: `backend/src/controllers/produtosController.js`)
- Usuários → Serviço de auditoria: registra eventos (evidence: `backend/src/controllers/usuariosController.js`)
- Autenticação → PostgreSQL: consulta e grava (evidence: `backend/src/controllers/authController.js`)
- Contagens → PostgreSQL: consulta e grava (evidence: `backend/src/controllers/contagensController.js`)
- Catálogo de produtos → PostgreSQL: consulta e grava (evidence: `backend/src/controllers/produtosController.js`)
- Usuários → PostgreSQL: consulta e grava (evidence: `backend/src/controllers/usuariosController.js`)
- Autenticação e tenant → PostgreSQL: busca usuário (evidence: `backend/src/middlewares/auth.js`)
- Serviço de auditoria → PostgreSQL: grava eventos (evidence: `backend/src/services/auditService.js`)
- Aplicação Express → Validação de entrada: configura rotas
