Bem-vindo ao BackEnd do GIC! Esta API foi desenvolvida para gerenciar o cadastro, edição e exclusão de itens comerciais com informações tributárias, seguindo boas práticas de desenvolvimento e organização eficiente.
- Node.js + Express
- Sequelize + MySQL
- Validação com Joi
- Log com Winston e Morgan
- Arquitetura baseada nos princípios SOLID
📂 backend-gic/
│
├── 📦 node_modules/
├── 📜 .gitignore
├── 🚀 app.js
├── 📜 LICENSE
├── 📦 package.json
├── 📖 README.md
│
└── 📁 src/
│
├── ⚙️ config/
│ ├── 🛠️ config.js
│
├── 🗄️ database/
│ ├── 🔌 connection.js
│ ├── 🗃️ dump/
│ ├── 📤 db_gic_routines.sql
│ ├── 📤 db_gic_tb_cfops.sql
│ ├── 📤 db_gic_tb_csticms.sql
│ ├── 📤 db_gic_tb_itens.sql
│ ├── 📤 db_gic_tb_logs.sql
│ ├── 📤 db_gic_tb_ncm.sql
│
├── 🔄 dtos/
│ ├── ➡️ itemDTO.js
│
├── 🛡️ middleware/
│ ├── 🚨 errorHandler.js
│
├── 🎮 controllers/
│ ├── 📜 cfopController.js
│ ├── 📜 cstController.js
│ ├── 📜 itemsController.js
│ ├── 📜 ncmController.js
│
├── 🏛️ models/
│ ├── 🏷️ cfop.js
│ ├── 🏷️ csticms.js
│ ├── 🏷️ index.js
│ ├── 🏷️ item.js
│ ├── 🏷️ logs.js
│ ├── 🏷️ ncm.js
│
├── 🛤️ router/
│ ├── 🚏 cfopRouter.js
│ ├── 🚏 cstRouter.js
│ ├── 🚏 itemRouter.js
│ ├── 🚏 ncmRouter.js
│ ├── 🚏 reportRouter.js
│
├── 💾 repository/
│ ├── 📤 CfopRepository.js
│ ├── 📤 CstRepository.js
│ ├── 📤 ItemRepository.js
│ ├── 📤 NcmRepository.js
│
├── ⚡ service/
│ ├── 🔧 CfopService.js
│ ├── 🔧 CstService.js
│ ├── 🔧 ItemService.js
│ ├── 🔧 NcmService.js
│ ├── 🔧 ReportService.js
│
├── 🛠️ utils/
│ ├── 🪙 convertCurrency.js
│ ├── 📝 htmlReport.js
│ ├── 📢 logger.js
│ ├── 📑 shemasValidate.js
│
├── 📜 log/ # Logs de aplicação
│ ├── 📄 combined.log
Antes de iniciar a API, configure suas variáveis de ambiente criando um arquivo .env
na raiz do projeto com os seguintes valores:
DB_HOST=localhost
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_NAME=nome_do_banco
DB_DIALECT=mysql
DB_PORT=3306
Instale as dependências:
npm install
Ou, se preferir:
yarn
Para rodar o servidor:
npm run app
Ou, se preferir:
yarn app
GET /api/gic/items?page=1&limit=2
→ Retorna todos os itens cadastrados paginados + custo total.GET /api/gic/csts
→ Retorna todas as CSTs cadastradas.GET /api/gic/ncms
→ Retorna todos os NCMs cadastrados.GET /api/gic/cfops
→ Retorna todos os CFOPs cadastrados.GET /api/gic/report
→ Retorna um relatório em PDF do sistema.
Busca itens por um campo específico:
GET /api/gic/items/filter?field={field_name}&value={field_value}
Busca itens pela descrição (ou parte dela), e retorna com paginação:
GET /api/gic/items/search?description={description_text}&page={value_page}&limit={value_limit}
Busca todos os itens que foram movidos para a lixeira:
GET /api/gic/items/deleted
POST /api/gic/items
Body:
{
"valor_unitario": 99.90,
"descricao": "Produto Inserido 2",
"taxa_icms_entrada": 18.5,
"taxa_icms_saida": 14.9,
"comissao": 10,
"ncm_id": 3,
"cst_id": 4,
"cfop_id": 3,
"ean": "1232145432290",
"excluido": 0
}
Restaura um item específico da lixeira:
PATCH /api/gic/items/:id/restore
Restaura todos os itens da lixeira:
PATCH /api/gic/items/restore
PUT /api/gic/items/:id
Body:
{
"valor_unitario": 99.90,
"descricao": "Produto Inserido 3",
"taxa_icms_entrada": 18.5,
"taxa_icms_saida": 14.9,
"comissao": 10,
"ncm_id": 3,
"cst_id": 4,
"cfop_id": 3,
"ean": "1232145432290",
"excluido": 0
}
DELETE /api/gic/items/:id
DELETE /api/gic/items/permanent
DELETE /api/gic/items/:id/permanent/
Este projeto está sob a licença ISC.
Projeto desenvolvido por Jefferson Santos Dev ✨