Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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/
Empty file modified Pokemon Go.xlsx
100644 → 100755
Empty file.
59 changes: 23 additions & 36 deletions README.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,48 +1,35 @@
# Teste de Fullstack

Olá Dev! Tudo bem?
## Como rodar

Nós estamos sempre em busca de profissionais interessantes e interessados, com boa capacidade de aprendizado, adaptação e principalmente bom senso!
Leia o README.md das pastas `pokemon-server` e `pokemon-client`.
Docker Compose é recomendado.

Este teste tem como objetivo avaliar e desafiar você. Não é obrigatório realizá-lo completamente, queremos apenas reconhecer seu esforço e potencial para aprender, se adaptar e tomar decisões.
## Tecnologias/módulos

Vamos ao teste!
No Back-end:

## Desafio Pokémon
- Node.
- Express.
- Multer.
- PostgreSQL
- Sequelize
- Youch
- Yup

Nós temos um problema, atualmente nosso sistema é só um excel, cheio de informações sobre Pokémon. Nós usamos ele como banco de dados e ao mesmo tempo interface de gerenciamento, inserindo, editando, deletando e filtrando os dados.
No Front-end:

Sua missão é criar um sistema para substituir este excel, pois queremos expandir e acrescentar features. Queremos manter essas funcionalidades básicas, mas principalmente queremos uma forma prática e agradável de buscar os dados, com listagem, filtros, paginação e detalhe sobre cada Pokémon.
- React
- Styled Components
- Axios
- Yup
- Toastify

Fique à vontade com o layout, precisamos de uma interface que consiga entregar as funcionalidades principais e substituir o excel.
Style Guide:

- Prettier, ESLint, EditorConfig

## Consigo fazer?
## Layout

Consegue sim! Só precisa saber (ou aprender agora) um pouco sobre as seguintes tecnologias:
- HTML
- CSS
- Javascript
- Alguma tecnologia backend, por exemplo, NodeJS, PHP, Java, etc...
- Algum banco de dados, por exemplo, MySQL, SQL Server, MongoDB, etc...
- Git


## Regras

Para o desafio ficar mais interessante, decidimos criar umas regras básicas:
- No layout, você utilizar algum framework CSS (ex: Bootstrap, MaterializeCSS, Bulma...)
- Na parte de JS, deve utilizar algum framework (ex: VueJS, ReactJS, Angular...tente não usar jQuery)
- Opcional: usar algum automatizador ou ferramenta de build (ex: Webpack, Grunt, Gulp...)

## Por onde começo?

Primeiramente, você pode fazer um fork desse repositório aqui, para sua conta do Github, depois disso crie uma branch nova com o seu nome (ex: nome_sobrenome), para podermos indentificá-lo.

Após terminar o desafio, você pode solicitar um pull request para a branch master do nosso repositório. Vamos receber e fazer a avaliação de todos.

## Só isso?

Só! Mas se estiver motivado e quiser ser diferencial, tente preparar o projeto para ser executado de maneira prática, usando alguma ferramenta que facilite isso (ex: npm, yarn, docker, etc...).

Boa sorte! :)
Não foi necessário nenhum Framework CSS.
Apenas Flexbox.
9 changes: 9 additions & 0 deletions pokemon-client/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
end_of_line = lf
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
27 changes: 27 additions & 0 deletions pokemon-client/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module.exports = {
env: {
browser: true,
es6: true,
},
extends: ['airbnb', 'prettier', 'prettier/react'],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parser: 'babel-eslint',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
sourceType: 'module',
},
plugins: ['react', 'prettier'],
rules: {
'prettier/prettier': 'error',
'react/jsx-filename-extension': ['warn', { extensions: ['.jsx', '.js'] }],
'import/prefer-default-export': 'off',
'guard-for-in': 'off',
'no-restricted-syntax': 'off',
},
};
23 changes: 23 additions & 0 deletions pokemon-client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
4 changes: 4 additions & 0 deletions pokemon-client/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"trailingComma": "es5"
}
7 changes: 7 additions & 0 deletions pokemon-client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Como rodar

Abra o terminal neste mesmo diretório.

### `npm start` ou `yarn start`

Entre em [http://localhost:3000](http://localhost:3000) no navegador.
57 changes: 57 additions & 0 deletions pokemon-client/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"name": "pokemon-client",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.19.0",
"font-awesome": "^4.7.0",
"prop-types": "^15.7.2",
"query-string": "^6.8.1",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-modal": "^3.8.2",
"react-router-dom": "^5.0.1",
"react-scripts": "3.0.1",
"react-toastify": "^5.3.1",
"styled-components": "^4.3.2",
"yup": "^0.27.0"
},
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/prop-types": "^15.7.1",
"@types/react": "^16.8.22",
"@types/react-dom": "^16.8.4",
"@types/react-icons": "^3.0.0",
"@types/react-router-dom": "^4.3.4",
"@types/styled-components": "^4.1.16",
"eslint": "^5.16.0",
"eslint-config-airbnb": "^17.1.1",
"eslint-config-prettier": "^6.0.0",
"eslint-plugin-import": "^2.18.0",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.0",
"eslint-plugin-react": "^7.14.2",
"prettier": "^1.18.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Binary file added pokemon-client/public/favicon.ico
Binary file not shown.
20 changes: 20 additions & 0 deletions pokemon-client/public/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />

<link
href="https://fonts.googleapis.com/css?family=Lato&display=swap"
rel="stylesheet"
/>

<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
11 changes: 11 additions & 0 deletions pokemon-client/src/App.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import React from 'react';

import Routes from './routes';
import GlobalStyle from './styles/global';

export default () => (
<>
<Routes />
<GlobalStyle />
</>
);
3 changes: 3 additions & 0 deletions pokemon-client/src/assets/delete.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions pokemon-client/src/assets/edit.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions pokemon-client/src/assets/filter.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions pokemon-client/src/assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions pokemon-client/src/assets/plus.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions pokemon-client/src/assets/search.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions pokemon-client/src/assets/skip.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions pokemon-client/src/components/AdminContainer/DeleteButton/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import React from 'react';
import styled from 'styled-components';

import deleteIcon from '../../../assets/delete.svg';

const DeleteButton = styled.button`
background: #34a684;
padding: 15px 20px;
border-radius: 25px;

color: #313131;
font-weight: bold;
font-size: 17px;

display: flex;
flex-direction: row;

justify-content: baseline;
align-items: flex-end;
`;

const Icon = styled.img`
margin-right: 7px;
`;

export default () => (
<DeleteButton>
<Icon src={deleteIcon} alt="Delete" />
<strong>Remover</strong>
</DeleteButton>
);
33 changes: 33 additions & 0 deletions pokemon-client/src/components/AdminContainer/EditButton/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React from 'react';
import styled from 'styled-components';

import editIcon from '../../../assets/edit.svg';

const CreateButton = styled.button`
background: #2eefb5;
padding: 15px 20px;
border-radius: 25px;

color: #313131;
font-weight: bold;
font-size: 17px;

display: flex;
flex-direction: row;

justify-content: baseline;
align-items: flex-end;

margin-right: 14px;
`;

const Icon = styled.img`
margin-right: 7px;
`;

export default () => (
<CreateButton>
<Icon src={editIcon} alt="Edit" />
<strong>Editar</strong>
</CreateButton>
);
Loading