Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
710ff67
feat(Init): Init app
victorbrambilla Jun 30, 2022
103f639
chore(eslint): Add eslint
victorbrambilla Jun 30, 2022
25a61b0
chore(prettier): Add prettier
victorbrambilla Jun 30, 2022
781d197
chore(react-router): Add react-router-dom
victorbrambilla Jun 30, 2022
3012f18
chore(mui): Add MUI
victorbrambilla Jun 30, 2022
8c67a54
chore(sass): Add sass
victorbrambilla Jun 30, 2022
481596e
feat(domain): create domain models
victorbrambilla Jun 30, 2022
c4df200
feat(domain): create domain usecases
victorbrambilla Jun 30, 2022
551d459
feat(data): create data protocols
victorbrambilla Jun 30, 2022
5531b69
fix(data): fix protocols names
victorbrambilla Jun 30, 2022
35eea71
fix(domain): fix usecases names
victorbrambilla Jun 30, 2022
d0bf7de
feat(data): create usecases protocols
victorbrambilla Jun 30, 2022
4022e2b
chore(deps): Add axios
victorbrambilla Jun 30, 2022
768aa4d
feat(infra): create http protocol
victorbrambilla Jun 30, 2022
1958072
feat(domain): add pagination
victorbrambilla Jun 30, 2022
01032ed
feat(data): add pagination
victorbrambilla Jun 30, 2022
28466c5
feat(data): add pagination
victorbrambilla Jun 30, 2022
e830d7a
feat(domain): add error on filters usecases
victorbrambilla Jun 30, 2022
c7d0af3
feat(infra): create characters repository
victorbrambilla Jun 30, 2022
390c4d0
feat(main): create fatories usecases
victorbrambilla Jun 30, 2022
a552644
fix(tsconfig): fix tsconfig
victorbrambilla Jun 30, 2022
4625da5
feat(eslint): add rule to eslint
victorbrambilla Jun 30, 2022
eeadd87
feat(routes): add routes
victorbrambilla Jul 1, 2022
05cccd5
feat(theme): add theme provider
victorbrambilla Jul 1, 2022
dc25635
feat(Header): add header component
victorbrambilla Jul 2, 2022
dc336a6
chore(icons): install mui icons
victorbrambilla Jul 2, 2022
69cd49b
feat(filter): add filter component
victorbrambilla Jul 2, 2022
c422789
feat(car): add card character style
victorbrambilla Jul 2, 2022
6ce8d1a
feat(filter): add props
victorbrambilla Jul 2, 2022
471d242
feat(filter): add default value
victorbrambilla Jul 2, 2022
2e8da52
feat(debounce): add hook use debounce
victorbrambilla Jul 2, 2022
76e675f
feat(hook): create use character hook
victorbrambilla Jul 2, 2022
b11d3f4
fix(filter): fix reset filters
victorbrambilla Jul 2, 2022
12ecf25
feat(home): create home page
victorbrambilla Jul 2, 2022
24b43c1
fix(router): fix router character name
victorbrambilla Jul 2, 2022
7337914
feat(Single): create single character page
victorbrambilla Jul 2, 2022
0ed8971
fix(charCard): fix styles
victorbrambilla Jul 2, 2022
957b02f
feat(modules): add css modules
victorbrambilla Jul 2, 2022
d33349b
fix(pagination): fix pagination
victorbrambilla Jul 2, 2022
9383b80
style(responsive): make filte component responsive
victorbrambilla Jul 2, 2022
3a1cb0a
refactor(refact): Clean code
victorbrambilla Jul 4, 2022
3d0b8a6
build(build): firebase hosting
victorbrambilla Jul 4, 2022
e00db67
feat(params): persist filter in params
victorbrambilla Jul 4, 2022
b5648e2
Create README.md
victorbrambilla Jul 4, 2022
34d5793
fix(filter): change filters to enums
victorbrambilla Jul 5, 2022
7805a9f
style(responsive): add media query body
victorbrambilla Jul 5, 2022
8207755
Merge branch 'victor-brambilla' of https://github.com/victorbrambilla…
victorbrambilla Jul 5, 2022
8b9894a
fix(filter): fix filter name
victorbrambilla Jul 7, 2022
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
20 changes: 20 additions & 0 deletions .github/workflows/firebase-hosting-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- victor-brambilla
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci && npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_RICKANDMORTY_64C04 }}'
channelId: live
projectId: rickandmorty-64c04
17 changes: 17 additions & 0 deletions .github/workflows/firebase-hosting-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy to Firebase Hosting on PR
'on': pull_request
jobs:
build_and_preview:
if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci && npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_RICKANDMORTY_64C04 }}'
projectId: rickandmorty-64c04
24 changes: 0 additions & 24 deletions LICENSE

This file was deleted.

96 changes: 20 additions & 76 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,86 +1,30 @@
# frontend-test
# Projeto feito para teste de dev frontend

Desafio para Frontend Developer na DoroTech
## Contruída com as seguintes tecnologias:
- [x] React - https://pt-br.reactjs.org/
- [x] Typescript - https://www.typescriptlang.org/
- [x] MUI - https://mui.com/pt/
- [x] React-router-dom - https://reactrouter.com/
- [x] axios - https://axios-http.com/ptbr/
- [x] Sass - https://sass-lang.com/
- [x] Clean architecture

# Frontend na DoroTech
## Instalando as dependencias

Somos uma empresa com clientes que atuam em vários segmentos do mercado, com diferentes tecnologias, culturas e desafios.
Faça um clone do projeto e no diretório raiz do projeto rode o comando:

Gostamos de compor nossos times com profissionais multidisciplinares, que tenham alta capacidade de aprendizado, sejam detalhistas, resilientes, questionadores e curiosos.
Você, como **Frontend Developer**, será o responsável por implementar, dar manutenção, aplicar correções e propor soluções em projetos de software.

## Orientações
Para executar o desafio de **Frontend Developer**, você **deverá utilizar framework React**, seguindo o [passo a passo](https://github.com/dorotech/frontend-test#etapas) para a execução, atendendo aos [critérios de aceitação](https://github.com/dorotech/frontend-test#crit%C3%A9rios-de-aceita%C3%A7%C3%A3o).

## Desafio
Nossa equipe é apaixonada por **Rick and Morty**, o seu desafio será criar uma aplicação utilizando a API pública da série [https://rickandmortyapi.com/](https://rickandmortyapi.com/), para exibir a lista de personagens.
Veja a documentação [https://rickandmortyapi.com/documentation/#rest](https://rickandmortyapi.com/documentation/#rest).

Os requisitos da aplicação:

- Como usuário, desejo visualizar na página inicial, uma lista de 20 personagens, contendo **foto**, **nome** e **status**.
- Como usuário, desejo clicar em um personagem da lista, para visualizar informações detalhadas.
- Como usuário, desejo filtrar os personagens por **nome**, **espécie** e **status**.
- Seja criativo no layout: filtros, icones e menus são bem vindos.

## Etapas

#### 1 - Fazer um fork desse repositório

![https://github.com/dorotech/frontend-test/raw/main/img/print-tutorial-1.png](https://github.com/dorotech/frontend-test/raw/main/img/print-tutorial-1.png)


#### 2 - Criar um branch com o seu primeiro e último nome
```bash
git checkout -b joao-silva
```
npm install
```

#### 3 - Escreva a documentação da sua aplicação
Você deve, substituir o conteúdo do arquivo **README.md** e escrever a documentação da sua aplicação, com os seguintes tópicos:
- **Projeto**: Descreva o projeto e como você o executou. Seja objetivo.
- **Tecnologias**: Descreva quais tecnologias foram utilizadas, enumerando versões (se necessário) e os links para suas documentações, qual guia de estilos de código você utilizou com o link para a sua documentação, quais bibliotecas instalou e porque.
- **Como rodar**: Descreva como iniciar a sua aplicação
- **Link** para acessar o projeto.

#### 4 - Faça uma Pull Request
Após implementada a solução, crie uma [pull request](https://github.com/dorotech/frontend-test/pulls) com o seu projeto para esse repositório, avise o recrutador.

## Critérios de Aceitação
Para que seu teste tenha o mínimo necessário que atenda aos requisitos esperados, ele deve:
- Atender ao que foi proposto no [Desafio](https://github.com/dorotech/frontend-test#Desafio).
- Utilização de pré-processadores CSS (Sass, Less).
- Interfaces responsivas para desktop, tablets e smartphones.
- Compatibilidade entre browsers.
- Padrão de escrita CSS (BEM, OOCSS, SMACSS).
- Código TS escrito com base em algum guia de estilos: [AirBnB Standards](https://github.com/airbnb/javascript) ou [TypeScript Google Guide](https://google.github.io/styleguide/tsguide.html).
- Utilizar padrões semânticos em mensagens de commit. (Gostamos do padrão de commits do repositório [AngularJS](http://karma-runner.github.io/3.0/dev/git-commit-msg.html))
- Projeto feito upload: [Firebase hosting](https://firebase.google.com/docs/hosting/quickstart?hl=pt-br) ou [GitHub Pages](https://pages.github.com/).
- Caso você nao consiga completar tudo e tenha algum receio, não se preocupe, iremos avaliar o que foi entregue, mesmo com pendências.
- O diferencial para este desafio: layout, ux e ui, bem como implementação de boas práticas de segurança, performance e/ou estrutura.


## Dicas e Informações Valiosas
### Rodando servidor

#### O que gostaríamos de ver em seu teste:
- Upload do projeto em um seviço de hospedagem.
- Convenção de nome em classes, objetos, variáveis, métodos e etc.
- layout encantador
- Faça commits regulares. Eles são melhores do que um commit gigantesco. Gostaríamos de ver commits organizados e padronizados, então capriche neles!
- uso de libs como bootstrap, material
- Hooks é bem-vindo.
- Animações, coidado com UX e Sobras.
- Projeto feito usando TypeScript
- **Bônus** Dark Mode, implementação sendo um botão que mude o padrão de cores da pagina para escuro e claro com 1 click.
- **Bônus 2** QueryParams para buscas, quando uma busca e realizada, exibir na url o parametro da busca realizado, caso recaregar a pagina com a url, usar o parametro para preencher os itens da pagina.
No diretório raiz do projeto rode o comando:

**Observação:** Nenhum dos itens acima é obrigatório.
```
npm run dev
```

#### O que o seu Teste não deve ter:
- Saber que não foi você quem implementou o projeto.
- Varias bibliotecas instaladas sem uso.
- Falta de organização de código.
- Falta de documentação.
- Nome de variáveis sem sentido ou padrão de nomes.
- Histórico de commits desorganizado e despadronizado.
Abra o projeto em [http://localhost:3000](http://localhost:3000)

## Boa Sorte!!
Link do Firebase: [https://rickandmorty-64c04.web.app/](https://rickandmorty-64c04.web.app/)
Binary file removed img/print-tutorial-1.png
Binary file not shown.
26 changes: 26 additions & 0 deletions rick-and-morty-app/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["react", "@typescript-eslint", "prettier", "react-hooks"],
"rules": { "@typescript-eslint/no-namespace": "off" },
"settings": {
"import/resolver": {
"typescript": {}
}
}
}
5 changes: 5 additions & 0 deletions rick-and-morty-app/.firebase/hosting.ZGlzdA.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
404.html,1656971698058,daa499dd96d8229e73235345702ba32f0793f0c8e5c0d30e40e37a5872be57aa
index.html,1656975759665,6e11ef6d74e46e492b9c1eec523295ed63993ac0cd67e285b9aad779ca43c25a
assets/index.a2e009da.css,1656975759707,fafd8382afa23da7d7b90ecf79fe5a475480f7f6d2f7645ab9fa410a9727e69e
assets/logo.f4e8982f.png,1656975759666,9760c9569ff4d273af9b3098f0036a865438d3b6745c10410ab0f8f1b91a5fca
assets/index.05448a5d.js,1656975759667,84d8900875c3f203937b74d231ce90623018490bf432812c6a49ec2d9727e1fd
5 changes: 5 additions & 0 deletions rick-and-morty-app/.firebaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"projects": {
"default": "rickandmorty-64c04"
}
}
24 changes: 24 additions & 0 deletions rick-and-morty-app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
9 changes: 9 additions & 0 deletions rick-and-morty-app/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"semi": false,
"tabWidth": 2,
"printWidth": 100,
"singleQuote": true,
"trailingComma": "all",
"jsxSingleQuote": true,
"bracketSpacing": true
}
16 changes: 16 additions & 0 deletions rick-and-morty-app/firebase.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
16 changes: 16 additions & 0 deletions rick-and-morty-app/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Rick And Morty App</title>
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>

</html>
Loading