Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daniela alves moreira #38

Open
wants to merge 104 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
bb322d8
:wrench: chore: criando gitignore para node_modules
alvesxdani May 18, 2024
4441bcc
:tada: init: initial commit
alvesxdani May 18, 2024
e2f205f
:wastebacket: remove: arquivo inicial do Vue
alvesxdani May 18, 2024
f26a279
:tada: init: initial commit
alvesxdani May 18, 2024
07d924b
:heavy_plus_sign: add SASS package
alvesxdani May 18, 2024
bb16ab3
:heavy_plus_sign: add sass e sass-loader package
alvesxdani May 18, 2024
d0acb8a
:spakles: adicionando o componente header
alvesxdani May 18, 2024
ebc374d
:heavy_plus_sign: add primeicons package
alvesxdani May 18, 2024
6554263
:lipstick: adicionando as fontes monstserrat e open sans
alvesxdani May 18, 2024
9b81362
:lipstick: estilizando globalmente (reset css)
alvesxdani May 18, 2024
5d1ca6d
:lipstick: estilizando o componente Header
alvesxdani May 18, 2024
1dd5b24
:sparkles: finalização do componente Header
alvesxdani May 18, 2024
200dfec
:broom: cleanup: linhas desnecessárias
alvesxdani May 18, 2024
f517268
:tada: init: initial commit
alvesxdani May 18, 2024
cbdb7c2
:tada: init: initial commit
alvesxdani May 18, 2024
dd61109
:lipstick: estilização global da aplicação
alvesxdani May 18, 2024
ba2af18
:tada: init: initial commit
alvesxdani May 18, 2024
8aecc29
:sparkles: adicionando o cabeçalho da tabela
alvesxdani May 18, 2024
d216d11
:bulb: adicionando comentários ao código
alvesxdani May 18, 2024
3f486c2
:sparkles: adicionando os tipos de botão para estilização
alvesxdani May 18, 2024
fd80214
:lipstick: estilizando os tipos de botão
alvesxdani May 18, 2024
463b289
:sparkles: adicionando lógica dos tipos de título
alvesxdani May 18, 2024
ba1eb1b
:lipstick: estilizando os tipos de título
alvesxdani May 18, 2024
716ffd0
:sparkles: finalizando o container de cabeçalho do tabela
alvesxdani May 18, 2024
9c114fa
:lipstick: estilizando o container do cabeçalho da tabela
alvesxdani May 18, 2024
3c76652
:lipstick: adicionando a classe de container da página na estilização…
alvesxdani May 18, 2024
179bc6b
:lipstick: finalização da estilização do componente botão
alvesxdani May 18, 2024
5b15e7e
:lipstick: tornando o container principal como flexbox
alvesxdani May 18, 2024
838faa9
:sparkles: criando componente de Box
alvesxdani May 18, 2024
103ef61
:lipstick: estilizando o componente Box
alvesxdani May 18, 2024
6bf5519
:sparkles: adicionando o componente de formulário para filtrar carteiras
alvesxdani May 18, 2024
bf00534
:recycle: refactor: renomeando a prop de cor do botão
alvesxdani May 19, 2024
38c8db7
:sparkles: finalização da criação do componente Botão
alvesxdani May 19, 2024
cceca19
:recycle: refactor: renomeando a propriedade de cor do botão
alvesxdani May 19, 2024
6f21fdf
:recycle: refactor: trocando prop text para o children do componente
alvesxdani May 19, 2024
ec1be93
:lipstick: adicionando flexbox ao botão
alvesxdani May 19, 2024
63c953d
:wrench: chore: adicionando scoped para a tag style
alvesxdani May 19, 2024
017a120
:recycle: refactor: ajustando o componente Button para receber um chi…
alvesxdani May 19, 2024
5f6d36c
:lipstick: estilizando o forms de filtro
alvesxdani May 19, 2024
2993435
:sparkles: finalizando o container de form para filtrar resultados
alvesxdani May 19, 2024
bcca345
:lipstick: finalização da estilização do input
alvesxdani May 19, 2024
7901f5b
:tada: init: initial commit
alvesxdani May 19, 2024
11ebe60
:recycle: refactor: alterando o tamanho do h1 e do h2
alvesxdani May 19, 2024
9259c43
:sparkles: adicionando o container Tabela
alvesxdani May 19, 2024
ee9e817
:lipstick: adicionando brightness ao estilo outlined do botão
alvesxdani May 19, 2024
65ae643
:truck: chore: renomeando o componente para Title
alvesxdani May 19, 2024
afb5eec
:truck: chore: renomeando o componente para Title
alvesxdani May 19, 2024
d41337e
:recycle: refactor: Renomeando componente importado Title
alvesxdani May 19, 2024
c3934a5
:tada: init: inital commit
alvesxdani May 19, 2024
e191486
:sparkles: finalizando a estrutura da tabela
alvesxdani May 19, 2024
3cead47
:lipstick: estilizando o componente tabela
alvesxdani May 19, 2024
cabdb8f
:construction: Componente de paginação em construção
alvesxdani May 19, 2024
7cf5b8f
:lipstick: estilizando o componente de paginação
alvesxdani May 19, 2024
50d6014
:sparkles: adicionando componente de paginação
alvesxdani May 19, 2024
4ff1f19
:lipstick: estilizando o componente de paginação
alvesxdani May 19, 2024
76488e3
:lipstick: alteração da cor de bg das linhas secundárias
alvesxdani May 19, 2024
ca1d829
:sparkles: adicionando botões de ação dos registros
alvesxdani May 19, 2024
e524daa
:lipstick: estilizando o componente para os botões de ação
alvesxdani May 19, 2024
5ba3d70
:heavy_plus_sign: adicionando vuex e axios package
alvesxdani May 19, 2024
a7eab37
:lipstick: removendo o outline do input
alvesxdani May 19, 2024
9b99249
:sparkles: adicionando a store
alvesxdani May 19, 2024
9c1b6db
:arrow_down: retrocedendo a versão do Vuex para compatibilidade
alvesxdani May 19, 2024
f211329
:wastebasket: removendo componente desnecessário
alvesxdani May 19, 2024
7b83396
:wrench: chore: configurando a store e as actions
alvesxdani May 19, 2024
242f231
:heavy_plus_sign: adicionando vuex package
alvesxdani May 20, 2024
0fc3b3e
:recycle: refactor: importação da store
alvesxdani May 20, 2024
824bed7
:recycle: refactor: adicionando a prop de namespaced
alvesxdani May 20, 2024
b4b7ad9
:construction: montando a lógica de renderização dos dados da api
alvesxdani May 20, 2024
654456f
:lipstick: estilizando os botões de ação
alvesxdani May 20, 2024
7b84d0c
:card_file_box: raw: ajustando identação dos dados
alvesxdani May 20, 2024
4284b71
:sparkles: adicionando modal para editar contato
alvesxdani May 20, 2024
e1d9840
:recycle: refactor: refazendo a lógica de fechar modal de edição
alvesxdani May 21, 2024
02021cf
:lipstick: finalizando a estilização do modal de edição
alvesxdani May 21, 2024
c11a5b4
:spakles: finalização do modal de edição
alvesxdani May 21, 2024
372b706
:lipstick: ajustando o texto do botão para o centro
alvesxdani May 21, 2024
165f950
:recycle: refactor: adicionando mais um tipo ao input
alvesxdani May 21, 2024
0de066a
:truck: renomeando o componente para EditCarteiraModal
alvesxdani May 21, 2024
4597a80
:tada: init: initial commit
alvesxdani May 21, 2024
0fb283c
:sparkles: adicionando o modal de criação de carteira
alvesxdani May 21, 2024
67f33de
:recycle: refactor: adicionando o evento de click ao componente
alvesxdani May 21, 2024
478ea8b
:bug: fix: trocando end por flex-end na classe buttons-action
alvesxdani May 21, 2024
77c3197
:recycle: refactor: refazendo o método para abrir modal
alvesxdani May 21, 2024
fc33383
:recycle: refactor: lógica para abrir o modal
alvesxdani May 21, 2024
30655e6
:sparkles: finalização do componente de adicionar nova carteira
alvesxdani May 21, 2024
0822936
:tube_test: test: adicionando dados por meio do componente de AddCart…
alvesxdani May 21, 2024
e3d5b4f
:sparkles: finalização da lógica de adicionar carteira
alvesxdani May 21, 2024
143ea82
:bulb: retornando com o método para controlar modal
alvesxdani May 21, 2024
1a3e770
:sparkles: criando a action para novas carteiras
alvesxdani May 21, 2024
1c39f13
:wastebasket: removendo arquivos desnecessários
alvesxdani May 26, 2024
431b521
:broom: cleanup: removendo linha vazia
alvesxdani May 26, 2024
69f516b
:recycle: refactor: fetch action
alvesxdani May 26, 2024
fe00561
:sparkles: adicionando paginação ao componente
alvesxdani May 26, 2024
2a965a4
:lipstick: estilizando a paginação do componente
alvesxdani May 26, 2024
3617216
:sparkles: criação da action para filtro
alvesxdani May 27, 2024
ac78889
:recycle: refactor: refatoração para adicionar a funcionalidade
alvesxdani May 27, 2024
c36f6f2
:recycle: refactor: ajuste do comportamento de listagem de registros …
alvesxdani May 27, 2024
cb39eb2
:heavy_plus_sign: add xlxs package
alvesxdani May 27, 2024
2f1fac8
:sparkles: adicionando a funcionalidade de exportar para csv
alvesxdani May 27, 2024
0184215
:books: docs: Atualização do README
alvesxdani May 27, 2024
4500b49
:package: build: adicionando a versão do Node a ser utilizada
alvesxdani May 27, 2024
46c59d7
:package: build: adicionando a versão do Node a ser utilizada
alvesxdani May 27, 2024
9b89960
:package: build: Adicionando versão do Node a ser utilizada
alvesxdani May 27, 2024
1ad454e
Update README.md
alvesxdani May 30, 2024
b1a31cf
Update README.md
alvesxdani May 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
161 changes: 60 additions & 101 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,112 +1,71 @@
<p>
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQIAOtqQ5is5vwbcEn0ZahZfMxz1QIeAYtFfnLdkCXu1sqAGbnX" width="300">
</p>

## Desafio para candidatos à vaga de Desenvolvedor Front End (Jr/Pleno/Sênior).
Olá caro desenvolvedor, nosso principal objetivo é conseguir ver a lógica implementada independente
da sua experiência, framework ou linguagem utilizada para resolver o desafio. Queremos avaliar a sua
capacidade em aplicar as regras de négocios na aplicação, separar as responsabilidades e ter um código
legível para outros desenvolvedores, as instruções nesse projeto são apenas um direcional para entregar
o desafio mas pode ficar livre para resolver da forma que achar mais eficiente. 🚀

Não deixe de enviar o seu teste mesmo que incompleto!

## Tecnologias a serem utilizadas:
* Vuejs (Fornecemos uma estrutura básica do aplicativo)
* CSS
* HTML

## Entrega:
Para iniciar o teste, faça um fork deste repositório, crie uma branch com o seu nome completo
e depois envie-nos o pull request.
Se você apenas clonar o repositório não vai conseguir fazer push e depois vai ser mais complicado
fazer o pull request.

Envie também seu LinkedIn ou currículo para vagas@oliveiratrust.com.br.

## O que vamos avaliar:
- Legibilidade do código
- Percepção da identidade do produto
- Modularização
- Lógica para aplicar a regra de negócio
- Implementação das APIs

## Instruções para o desafio:
Você deve implementar um aplicativo feito com Vuejs utilizando uma API de usuários fornecida no próprio projeto e uma API externa de conversão de moedas.

## Obrigatórios:
- Acompanhar identidade visual do [protótipo fornecido](https://www.figma.com/proto/AO265OINopUSibxX8Dd4A6/Desafio-Front-End?page-id=0%3A1&node-id=2%3A362&viewport=314%2C48%2C0.15&scaling=contain&starting-point-node-id=2%3A362)
- Listar os dados da API de usuários em uma tabela
- Deve conter todos os dados que achar relevante pela API (http://localhost:3004/users)
- Botões funcionais de editar(modal) e deletar registro p/ cada elemento
- Possibilidade de adicionar novas carteiras através de um modal
- Paginação da listagem (Você pode usar [esquemas](https://github.com/typicode/json-server#paginate) do json-server)
- Adicionar um filtro para listagem (Você pode usar [esquemas](https://github.com/typicode/json-server#full-text-search) do json-server)
- Conversão do saldo Bitcoin (BTC) de cada carteira para moeda escolhida. Ex.: BTC para BRL, USD, etc

Pode utilizar qualquer API para conversão de moedas, mas recomendamos essa aqui: [https://docs.awesomeapi.com.br/api-de-moedas](https://docs.awesomeapi.com.br/api-de-moedas) pela facilidade e boa documentação.

#### Exemplo de conversão da moeda:
- **Parâmetros de entrada**:
- Moeda de origem: Bitcoin (BTC)
- Moeda de destino: Real (BRL)
- Valor para conversão ex.: BTC 0.2242509
- **Parâmetros de saída**:
- Moeda de origem: Bitcoin (BTC)
- Moeda de destino: Real (BRL)
- Valor para conversão ex.: BTC 0.2242509
- Valor comprado em "Moeda de destino" ex.: R$ 53.054,00
- **Critérios de aceitação**:
- Ao criar ou editar uma carteira, deve ser possível inserir um valor de compra tendo como resultado o valor que será adquirido na criptomoeda de destino.

#### Informações úteis da API de conversão de moedas:
- Conversão BTC para BRL
- https://economia.awesomeapi.com.br/json/last/BTC-BRL
- Moedas para conversão
- https://docs.awesomeapi.com.br/api-de-moedas#moedas-com-conversao-para
- Tradução das moedas
- https://economia.awesomeapi.com.br/json/available/uniq
- Combinações possíveis
- https://economia.awesomeapi.com.br/json/available
- Legendas
- https://docs.awesomeapi.com.br/api-de-moedas#legendas

## Bônus
- Validação dos inputs para funcionalidade de criar e editar carteira
- Gerenciamento de estado (vuex)
- Exportar dados da lista em CSV (Você pode utlizar alguma biblioteca npm para esta funcionalidade)

## Configurações do projeto

É necessário possuir a biblioteca json-server instalada em sua máquina:
# Desafio Técnico Oliveira Trust com Vue.js com Vuex e JSON-Server

```
npm install -g json-server
```
Acesse a [documentação](https://github.com/typicode/json-server#getting-started) do json-server para entender melhor como manipular a API.
## Descrição do Projeto

Também será necessário instalar as dependências do projeto executando:
Este projeto é uma aplicação de gerenciamento de usuários de Bitcoin construída com Vue.js (versão 2), Vuex para gerenciamento de estado, e JSON-Server para simular uma API REST, xlxs para exportação em CSV, Axios para requisições. A aplicação permite a visualização, criação, edição e exclusão de usuários, bem como a exportação dos dados para CSV.

```
npm install
```
## Configuração e Execução do Projeto

Finalmente podemos rodar o projeto e a API utilizando apenas um comando:
### Pré-requisitos

```
npm start
Certifique-se de ter o Node.js e npm instalados em sua máquina.

Troque a versão do Node para 16:
``` bash
nvm install 16
nvm use 16
```

A api a ser consumida está rodando no endereço:
### Instalação

```
http://localhost:3004/users
```
1. Clone o repositório:
```bash
git clone https://github.com/alvesxdani/desafio-frontend-oliveira-trust
```
2. Navegue até o diretório do projeto:
```bash
cd desafio-frontend-oliveira-trust
```
3. Instale as dependências:
```bash
npm install
```

e a aplicação em Vue.Js no endereço:
### Execução do Projeto

```
http://localhost:8080/
```
1. Inicie a aplicação Vue.js:
```bash
npm start
```
3. Abra o navegador e acesse `http://localhost:8080`.

## Detalhes da Implementação

### Vuex Store

O Vuex é utilizado para gerenciar o estado da aplicação. A estrutura do módulo `users` inclui:

- **State:** Armazena a lista de usuários.
- **Getters:** Retorna a lista de todos os usuários.
- **Actions:** Métodos assíncronos para buscar, criar, deletar e atualizar usuários através da API do JSON-Server.
- **Mutations:** Métodos síncronos para atualizar o estado da store.

### Componente `Tabela`

O componente `Tabela` exibe a lista de usuários em uma tabela e permite a paginação, edição e exclusão de usuários. Também possui a funcionalidade de exportar os dados para CSV.

#### Paginação

A paginação é implementada com base no número total de usuários e o número de usuários exibidos por página. **Sem realizar a renderização com fetch.**

#### Exportação para CSV

A exportação para CSV utiliza a biblioteca `SheetJS (xlsx)` para converter os dados da tabela em um arquivo CSV e permite o download do arquivo.

### Componente `FormularioFiltro`

O componente `FormularioFiltro` permite filtrar a lista de usuários por nome, sobrenome e email. Os valores dos campos são gerenciados por meio de propriedades (`props`) e o estado local do componente.

## Estilos

## Boa sorte! 🚀
Os estilos CSS são organizados em arquivos separados e importados nos componentes conforme necessário.
Loading