🇧🇷 O repositório contém um sistema que facilita a emissão de nota fiscal para quem não deseja lidar diretamente com a blockchain. Esse repositório também serve de exemplo para terceiros que queiram prestar o serviço de emissão de notas em nome de outras empresas na blockchain. Aqui está armazenada tanto a API quanto a interface gráfica.
🇺🇸 This repo hosts the source code of a system that eases the emittion of invoices for users that do not want do interact directly with the blockchain. It is also an example of how to build a system to provide the service of registering invoices to the blockchain in name of other individuals and companies. This repo contains both API's and also the GUI.
A documentação do projeto possui:
- Explicações sobre a arquitetura do sistema
- Referência para as API's
- Fluxos para as diferentes ações do sistema
- Sobre a Fundação
- ++++
API: Node + Express + Sequelize + RestAdapter + MySql WebApp: React + Redux
- Registro e login de novos usuários
- Geração de um novo endereço emissor para um usuário
- Monitorar autorizações de endereços emissores na blockchain
- Emissão de nota fiscal
- Acompanhamento das notas fiscais emitidas (já foi registrada na blockchain?)
- Emissão de notas de pagamento
- Acompanhamento das notas de pagamento emitidas (já está na blockchain? já foi paga?)
- Clone o repositório
- Instale os módulos NPM da API
cd api
enpm install
- Instale os módulos NPM do WebApp
cd web
enpm install
- Modifique
/api/src/config/database.json
pelas credenciais do Banco de Dados - Modifique
/api/src/config/config.json
pela porta da API (opcional) - Modifique
/web/.env
pela porta web (opcional) - Rode a API
cd api
enpm start
, visite @ http://localhost:8000/ - Rode o Webapp
cd web
enpm start
, visite @ http://localhost:3000/
- Crie uma pasta para os repositórios do projeto:
mkdir dashboard-dev && cd dashboard-dev
- Clone o repositório @ https://github.com/sdec-brasil/docker-dashboard-emissor
git clone https://github.com/sdec-brasil/docker-dashboard-emissor
- Rode o arquivo setup.sh do docker-dashboard-emissor:
cd docker-dashboard-emissor && chmod +x setup.sh && ./setup.sh && cd ..
- Clone esse repositório:
git clone https://github.com/sdec-brasil/dashboard-emissor
- Instale os módulos NPM da API:
cd dashboard-emissor && cd api && npm install && cd ../..
- Instale os módulos NPM do WebApp:
cd dashboard-emissor && cd web && npm install && cd ../..
- Copie o
index.js
estyles.css
do uik para a pastadashboard-emissor/web/@uik
- Deixe o ambiente do docker rodando com:
cd docker-dashboard-emissor && docker-compose up
- Em outro terminal, rode a API:
cd dashboard-emissor/api && npm start
. (@ http://localhost:8000) - Em outro terminal, rode o webapp:
cd dashboard-emissor/web && npm start
. ( @ http://localhost:3000)
Esse projeto é composto de um servidor e uma interface, onde usuários podem se registrar e emitir notas que são registradas na blockchain. Para isso, o projeto roda um nó da blockchain. Ele também utiliza o invoice-explorer público da chain. O fluxo de um usuário é o seguinte:
- 0 usuário se registra no dashboard-emissor.
- O usuário gera um novo endereço pelo dashboard-emissor.
- O usuário requisita a que a junta comercial autorize esse novo endereço a emitir notas fiscais em nome de alguma empresa dele.
- A junta comercial autoriza essa emissão, e publica a autorizaço na blockchain.
- O dashboard-emissor detecta essa autorização. Quando o usuário acessar a página de Empresas, a empresa autorizada estará listada lá.
- O usuário acessa Notas Fiscais e pode emitir uma nova nota fiscal para alguma de suas empresas cadastradas. 7 O dashboard-emissor registra na blockchain a nova nota emitida pelo usuário.
Os próximos passos são construir a parte do sistema de notas de pagamento. Uma nota de pagamento representa o pagamento do imposto de um conjunto de notas fiscais. Com isso, o usuário poderá pagar diversas notas de uma só vez.
dashboard
├── api
│ ├── src
│ │ ├── config
│ │ ├── models
│ │ ├── schema
│ │ ├── setup
│ │ └── index.js
│ │
│ └── package.json
│
├── web
│ ├── public
│ ├── src
│ │ ├── components
│ │ ├── setup
│ │ └── index.js
│ │
│ ├── .env
│ └── package.json
│
├── .gitignore
└── README.md