Skip to content

Commit

Permalink
Merge pull request #6 from Rodrigodsgit/develop
Browse files Browse the repository at this point in the history
Review Documentacao
  • Loading branch information
Rodrigodsgit authored Sep 12, 2022
2 parents e51216f + 135991a commit 3f27be1
Show file tree
Hide file tree
Showing 11 changed files with 220 additions and 33 deletions.
14 changes: 13 additions & 1 deletion .readme/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,16 @@ Deploy realizado na rede Rinkeby
truffle deploy --network rinkeby
```

![deploy oficial](../assets/deploy_rinkeby.png)
![deploy oficial](../assets/deploy_rinkeby.png)

Em seguida podemos ver mais alguma informações interessantes a respeito do deploy realizado. Como a quantidade de requests feitas:

![deploy requests](../assets/requests.png)

E também informações sobre o deploy em si.

![deploy ](../assets/deploy.jpeg)

Por fim o endereço do deploy na rede de testes Rinkeby Etherscan.

![deploy ](../assets/Etherscan.png)
112 changes: 112 additions & 0 deletions .readme/funcionalidades.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Requisitos & Funcionalidades

## Requisitos
Como dito, foi proposto construir um MVP (Minimo Produto Viavel) de uma aplicação de Vending Machine que possa ser disponibilizada para o time de DApps a implementação deste Smart Contract. Para isso, além desta documentação feita com instruções de instalação e operações, metodologias utilizadas, teste e deploy, também iremos detalhar as funcionalidades implementadas baseadas nos requisitos esperados, sendo eles:

1. Criou o próprio Contrato Inteligente de Token.
2. Criou o próprio Contrato Ingeligente de Maquina de Venda do Token.
3. O Comprador deve ser possivel comprar tokens com ethers.
4. O Vendedor deve ser possivel vender tokens por ethers.
5. O administrador deve ser capaz de reabastecer a maquina com tokens e ethers.
6. O adminsitrador deve ser capaz de sacar o saldo em ethers
7. O administrador deve ser capaz de redefinir o valor dos tokens para compra.
8. O administrador deve ser capaz de redefinir o valor dos tokens para venda.
9. Não deve ser possivel comprar tokens com valor zero.
10. Não deve ser possivel vender tokens com valor zero.
11. Não deve ser possivel reabastecer a maquina com tokens com valor zero.
12. Não deve ser possivel reabastecer a maquina com ethers com valor zero.


# Funcionalidades

Abaixo falaremos, de forma resumida, sobre as principais funções desenvolvidas e seu comportamento.

- Função responsável por retornar quantas E-Miles há disponivel na Vending .
```JavaScript
function getMiles(){
}
```

- Função responsável por retornar quanto de Ether há disponivel na Vending Machine.
```JavaScript
function getBalance(){
}
```

- Função responsável por retornar quanto de Ether há disponivel na carteira do cliente.
```JavaScript
function getEtherBalanceClient(){
}
```

- Função responsável por retornar quanto de E-Miles há disponivel na conta do cliente.
```JavaScript
function getBalanceMilesClient(){
}
```

- Função responsável por retornar qual o valor de compra das E-Miles.
```JavaScript
function getPricePurchase(){
}
```

- Função responsável por retornar qual o valor de compra das E-Miles.
```JavaScript
function getPricePurchase(){
}
```

- Função responsável por reabastecer a quantidade de E-Miles da Vending Machine. Somente o Owner pode utiliza-lá e não são permitido valores 0.

```JavaScript
function restokMiles(){
}
```

- Função responsável por reabastecer a quantidade de Ether da Vending Machine. Somente o Owner pode utiliza-lá e não são permitido valores 0.

```JavaScript
function restokEther(){
}
```

- Função responsável por converter as possivéis frações da criptomoeda Etherum, sendo permitido valores como Wei, Gwei e o próprio Ether. Moedas diferentes desses valores não são aceitas.

```JavaScript
function convert(){
}
```
- Função responsável por sacar o saldo remanescente na Vending Machine. Somente o Owner pode utiliza-lá e não são permitido valores 0.

```JavaScript
function withdraw(){
}
```
- Função responsável por definir o preço de compra das E-Miles na Vending Machine. Somente o Owner pode utiliza-lá e não são permitido valores 0.

```JavaScript
function priceMilesPurchase(){
}
```

- Função responsável por definir o preço de venda das E-Miles na Vending Machine. Somente o Owner pode utiliza-lá e não são permitido valores 0.

```JavaScript
function priceMilesSell(){
}
```

- Função responsável por permitir a compra de E-Miles na Vending Machine. Não são permitido valores zeradas, há validação se a quantidade desejada de E-Miles tem no sistema e se o cliente tem saldo suficiente para compra.

```JavaScript
function purchaseMilesl(){
}
```

- Função responsável por permitir a venda de E-Miles na Vending Machine. Não são permitido valores zeradas, há validação se a quantidade de Ether na Vending Machine para efetuar a venda, e se o cliente tem E-Miles suficiente para venda.

```JavaScript
function sellMilesl(){
}
```
6 changes: 5 additions & 1 deletion .readme/gestao.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
[Voltar](../Readme.md)

Para o controle do fluxo de desenvolvimento deste código foi utilizado o modelo Kanban feito na ferramenta Trello. Sua estrutura foi feita da seguinte forma:

## Visao geral do Kambam
![vista Geral](../assets/trello-geral.png)


## Andamanto do Projeto
![andamento](../assets/trello-andamento.png)
![andamento](../assets/trello-andamento.png)

## Final do MVP
![final](../assets/trello-final.png)
57 changes: 46 additions & 11 deletions .readme/testes.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
[Voltar](../Readme.md)

## Implementacao dos testes de Integracao
# Implementação dos testes de Integração
Para os testes automatizados utilizamos o Mocha para sua implementação. Cobrimos com testes de todas as funcionalidades dispostas na aplciação.

Para rodar os testes na sua máquina inicialmente, tenha o [Ganache](https://trufflesuite.com/ganache/) instalado. Após isso, adicione sua porta no ganache no arquivo .env (como mostra no .env- example) no campo "GANACHE_PORT=".

Por fim rode o comando no terminal:

```console
truffle test
```


![teste inicial {.tests-img}](../assets/test_inicial.png)

## Testes Funcionais
# Testes Funcionais

Neste campo utilizamos do [Remix](https://remix.ethereum.org/#optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.7+commit.e28d00a7.js) para elucidar mais facilmente como se comportam as funções desenvolvidas, abaixo temos um compilado de testes manuais das funções disponiveis e seus retornos. Mostrando não so a visão do dono do contrato mas também dos clientes, enfatizando assim as permissões impostas para cada usuário.

### Teste no Remix by Owner
## Teste no Remix by Owner

#### Função PriceMilesPurchase
#### Função priceMilesPurchase
![test 1](../assets/E-miles%20funcao%20priceMilesPurchase%20-%20By%20owner.gif)

#### Função PriceMilesSelll
#### Função priceMilesSelll
![test 2](../assets/E-miles%20funcao%20priceMilesSell%20-%20By%20owner.gif)

#### Função restokEther
Expand All @@ -23,21 +35,44 @@
#### Função withdraw
![test 5](../assets/E-miles%20funcao%20withdraw%20-%20By%20owner.gif)

### Teste no Remix by User

## Teste no Remix by User

#### Função priceMilesPurchase
![test 6](../assets/E-miles%20funcao%20priceMilesPurchase%20-%20By%20owner.gif)
![test 6](../assets/E-miles%20funcao%20priceMilesPurchase%20-%20By%20user.gif)

#### Função PriceMilesSelll
![test 7](../assets/E-miles%20funcao%20priceMilesPurchase%20-%20By%20owner.gif)
#### Função priceMilesSelll
![test 7](../assets/E-miles%20funcao%20priceMilesSell-%20By%20user.gif)

#### Função restokEther
![test 8](../assets/E-miles%20funcao%20restokEther-%20By%20user.gif)

#### Função restokMiles
![test 9](../assets/E-miles%20funcao%20restokMiles%20-%20By%20owner.gif)
![test 9](../assets/E-miles%20funcao%20restokMiles%20-%20By%20user.gif)

#### Função withdraw
![test 10](../assets/E-miles%20funcao%20withdraw%20-%20By%20owner.gif)
![test 10](../assets/E-miles%20funcao%20withdraw%20-%20By%20user.gif)

#### Função purchaseMiles

![test 11](../assets/E-miles%20funcao%20purchaseMiles.gif)

#### Função sellMiles

![test 12](../assets/E-miles%20funcao%20sellMiles.gif)

## Teste no Remix Forçando Entradas Zeradas by Owner

#### Função restokEther
![test 13](../assets/Emiles%20funcao%20restokEther%20com%20zero%20-%20By%20owner.gif)

#### Função restokMiles
![test 14](../assets/Emiles%20funcao%20restokMiles%20com%20zero%20-%20By%20owner.gif)

## Teste no Remix Forçando Entradas Zeradas by User

#### Função purchaseMiles
![test 15](../assets/Emiles%20funcao%20purchaseMiles%20com%20zero%20-%20By%20user.gif)

#### Função sellMiles
![test 16](../assets/Emiles%20funcao%20sellMiles%20com%20zero%20-%20By%20user.gif)
62 changes: 43 additions & 19 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,68 @@
# ![E-miles](./assets/logo.png)
# 🛫E-Miles
A associação Brasileira das Empresas do Mercado de Fidelização (ABEMF)registrou um faturamento bruto de R$ 1,89 bilhões de suas associadas, empresas que administram milhas áreas e pontos, 11,7% a mais do que no 4° trimestre de 2020. Os indicadores mostram o quanto esse mercado é lucrativo.

O mercado de compra e venda de milhas ou pontos de programas de fidelidade ligados a companhias aéreas decolou no Brasil e já movimenta mais de R$ 500 milhões por ano, segundo estimativas de empresas do segmento.
Juntamente com o crescimento exponencial do mundo de criptos ativos, a empresa E-Miles solicitou que fosse possível efetuar compra e venda das sua milhas através da moeda Ethereum.

## Gestao do Projeto
Deste modo foi desenvolvido um Smart Contract no qual é possível comprar milhas através do Ethereum, além do usuário também poder efetuar a venda das sua milhas por Ethereum. Abaixo você poderá acompanhar uma descrição de como foi desenvolvido esse MVP de teste.

Mostra com fizemos o gerenciamento do projeto , atraves do Trello
`Acompanhe também nossa apresentação:` [E-Miles](https://docs.google.com/presentation/d/1mCrRGZuq9NxM0B_IxnJlctPmZVVW6rgBbGJXSZp7xzY/edit?usp=sharing)

[Trello](./.readme/gestao.md)
<div id="image01" style="display: inline_block" align="center">
<img src=".\assets\logo.png" align="center"/>
</div>

## Tecnologias Aplicadas
-----


## 📑Gestão do Projeto

Acompanhe aqui como utilizamos a metodologia Kanban através da ferramenta Trello para fracionar e estrturar como seriam realizadas as tarefas por integrantes do grupo.

## [Trello](./.readme/gestao.md)

----

## 📱Tecnologias Aplicadas

- ![Solidity](https://img.shields.io/badge/Solidity-%23363636.svg?style=for-the-badge&logo=solidity&logoColor=white) ![Ethereum](https://img.shields.io/badge/Ethereum-3C3C3D?style=for-the-badge&logo=Ethereum&logoColor=white) ![JavaScript]( https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black) ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
- ![NodeJS](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white) ![NPM](https://img.shields.io/badge/NPM-%23000000.svg?style=for-the-badge&logo=npm&logoColor=white) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white)
- ![Trello](https://img.shields.io/badge/Trello-%23026AA7.svg?style=for-the-badge&logo=Trello&logoColor=white) ![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white) ![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white)


---
## ⚙Configuração ambiente & Instalação local

## Configuracao ambiente / Instalacao local / Testes da aplicacao
Veja o passo a passo de como configurar localmente essa aplicação para que consiga utiliza-lá no seu computador. Deixamos alguns dos principais comandos e soluções para possíves erros que podem aparecer :).

[Configuracao](./.readme/config.md)
## [Configuracao](./.readme/config.md)

---

[Testes](./.readme/testes.md)
# 📋Requisitos & Funcionalidades
Elucidação dos requisitos solicidatos e as funcionalidades dispostas na implemnetação do Smart Contract da Vending Machine.

## Colaboradores
## [Funcionalidades](./.readme/funcionalidades.md)

![Amanda Karla](https://img.shields.io/badge/Dev-Amanda%20Karla-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Amanda-Almeida-costa) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/amanda-almeida-312942232)
# 🛠Testes da aplicação
Demonstração dos testes feitos via Mocha e alguns possíveis casos de uso do Smart Contract feito manualmente pelo Remix.

![Naiara Araujo de Lima](https://img.shields.io/badge/Dev-Naiara%20Araujo%20de%20Lima-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Araujopuyanawa) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/naiara-araujo-de-lima-149697239)
## [Testes](./.readme/testes.md)

![Henrique Constant](https://img.shields.io/badge/Dev-Henrique%20Constant-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/hennrique777) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/henrique-constant-6955a3236)
---
## 💻Deploy
Deploy da aplicação desenvolvida, sendo feita tanto localmente utilizando do Truffle e o Ganache, quanto seu deploy na rede da Rinkeby.
## [Deploy](./.readme/deploy.md)

![Rodrigo Damasceno](https://img.shields.io/badge/Dev-Rodrigo%20Damasceno-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Rodrigodsgit) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/rodrigo-damasceno-41036b192)
---
## 👨‍💻Colaboradores

![Lucas Andrade](https://img.shields.io/badge/Dev-Lucas%20Andrade-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Lucas-andrade-nascimento) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/lucas-as-nascimento)

![Luis Carlos](https://img.shields.io/badge/Dev-Luis%20Carlos%20Silva-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://www.github.com/luisroxis) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/luiscroxis)
![Amanda Karla](https://img.shields.io/badge/Dev-Amanda%20Almeida-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Amanda-Almeida-costa) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/amanda-almeida-312942232)

![Naiara Araujo de Lima](https://img.shields.io/badge/Dev-Naiara%20Araujo%20de%20Lima-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Araujopuyanawa) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/naiara-araujo-de-lima-149697239)

## Deploy
![Rodrigo Damasceno](https://img.shields.io/badge/Dev-Rodrigo%20Damasceno-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Rodrigodsgit) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/rodrigo-damasceno-41036b192)

[Deploy](./.readme/deploy.md)
![Lucas Andrade](https://img.shields.io/badge/Dev-Lucas%20Andrade-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Lucas-andrade-nascimento) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/lucas-as-nascimento)

## Aplicacao (react) opcional
![Luis Carlos](https://img.shields.io/badge/Dev-Luis%20Carlos%20Silva-lightgrey?style=for-the-badge&logo=devdotto) [![Github](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://www.github.com/luisroxis) [![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/luiscroxis)
Binary file added assets/Etherscan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/deploy.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/requests.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/test_inicial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/trello-final.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"eth",
"blockchain"
],
"author": "Amanda Karla, Henrique Constant, Lucas Andrade, Luis Carlos, Naiara Araujo de Lima, Rodrigo Damasceno",
"author": "Amanda Karla, Lucas Andrade, Luis Carlos, Naiara Araujo de Lima, Rodrigo Damasceno",
"license": "ISC",
"dependencies": {
"@truffle/hdwallet-provider": "^2.0.14",
Expand Down

0 comments on commit 3f27be1

Please sign in to comment.