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

[Jake Chien] Desafio B2U Júnior. #37

Open
wants to merge 41 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
50a1156
chore: add's DB as docker container
jaketheman96 Jan 20, 2023
79176ca
chore: create's a database on mysql with sequelize
jaketheman96 Jan 20, 2023
8dcd874
chore: add's sequelize configuration
jaketheman96 Jan 21, 2023
e4ba933
chore: docker config
jaketheman96 Jan 21, 2023
6948cce
chore: add's app and server connection to api
jaketheman96 Jan 21, 2023
4dec5b4
feat: add's error handler as middleware
jaketheman96 Jan 21, 2023
9659395
chore: add's front-end config
jaketheman96 Jan 21, 2023
cbb912e
feat: add's car page and components
jaketheman96 Jan 21, 2023
b382c03
chore: all seeds implanted
jaketheman96 Jan 21, 2023
900803c
feat: route get all cars implemented
jaketheman96 Jan 21, 2023
5559931
chore: add's image type on database
jaketheman96 Jan 21, 2023
cb51a82
chore: add's attribute to find all cars
jaketheman96 Jan 22, 2023
2263823
feat: post car route implemented
jaketheman96 Jan 22, 2023
050795b
chore: delete post car validation
jaketheman96 Jan 22, 2023
e604770
feat: edit car route implemented
jaketheman96 Jan 22, 2023
8f76fd9
feat: get car by id route implemented
jaketheman96 Jan 22, 2023
3d58e2f
feat: delete car route implemented
jaketheman96 Jan 22, 2023
467ac35
feat: get owners route implemented
jaketheman96 Jan 22, 2023
583ef4e
feat: change mock to fetch cars on frontend
jaketheman96 Jan 22, 2023
ada3ec2
chore: add's cors in app
jaketheman96 Jan 22, 2023
e2ebaaf
fix: console warnings and add noImage to component
jaketheman96 Jan 22, 2023
65c6d13
feat: remove car button implemented, but not passing through cors
jaketheman96 Jan 23, 2023
56a4747
feat: add's car details page
jaketheman96 Jan 23, 2023
0517883
feat: car details component implemented
jaketheman96 Jan 23, 2023
050e768
feat: create car form implemented
jaketheman96 Jan 23, 2023
dca154f
feat: edit car component implemented
jaketheman96 Jan 23, 2023
d702580
fix: edit car route on backend
jaketheman96 Jan 23, 2023
cfe8f35
feat: add's post car fetch and implements page
jaketheman96 Jan 23, 2023
5eb9e17
feat: remove car btn now reloads the page
jaketheman96 Jan 23, 2023
b6cc139
feat: add owner form implemented and created context
jaketheman96 Jan 23, 2023
ce5401b
feat: postOwner backend implemented
jaketheman96 Jan 23, 2023
2b5cff2
feat: add return button in success page
jaketheman96 Jan 23, 2023
4fcbdea
feat: add's inputs validator on add owner form
jaketheman96 Jan 23, 2023
555c229
refactor: owner's post route now returns an id
jaketheman96 Jan 24, 2023
503e97f
feat: register car working properly
jaketheman96 Jan 24, 2023
3379008
style: adding style to cars main page
jaketheman96 Jan 24, 2023
36b8d00
style: css on car details page
jaketheman96 Jan 24, 2023
15ef9e6
style: css ok
jaketheman96 Jan 24, 2023
2196f66
fix: css on cars main page
jaketheman96 Jan 24, 2023
9e46eb9
refactor: car route on backend now returns owner's email and cel
jaketheman96 Jan 24, 2023
978f83a
Update README.md
jaketheman96 Jan 24, 2023
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
69 changes: 47 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,49 @@
![Bitcointoyou](https://bitcointoyou.com/_next/static/media/logoAzul.c6609791.png)

# Desafio - Desenvolvedor Fullstack - Júnior
Seja bem-vindo! Este desafio foi projetado para avaliar a sua capacidade técnica como candidato ao cargo proposto.

## Instruções
- Faça um fork deste repositório;
- O conjunto mínimo de tecnologias a serem utilizadas são: alguma das tecnologias front-end e back-end informadas na proposta desse desafio;
- Crie um passo a passo de como rodar a sua aplicação;
- Após finalizar, submeta um pull request com um comentário informando o seu e-mail de contato e aguarde nossa avaliação.

## Proposta
Você deverá desenvolver um projeto utilizando React no front-end e Node.js no back-end com a finalidade de que seja possível listar, visualizar, criar, editar e excluir carros de uma aplicação de anuncios de venda de automóveis.

**Observações:**
> - Você pode persistir os dados em memoria;
> - Cada carro precisa ter um identificador único, nome, marca, ano de fabricação e descrição;
> - Além dos dados do carro, é necessário também salvar os dados do dono do carro(nome, email e telefone de contato).
## Diferenciais
Serão considerados diferenciais:

- Conhecimento sólido em Expo ou React Native;
- Boas práticas de escrita de código (código limpo, padrões de arquitetura, etc.);
- Conhecimento em infraestruturas em nuvem;
# Passo a passo de como rodar a aplicação:

-Certifique-se de que você possui o Node, instalado em sua máquina.

-Utilizei o Docker apenas para o MySQL, portanto se você possui o MySQL e Docker instalados em sua máquina, ficará ao seu critério de rodar localmente ou com docker.

<details>
<summary><h3>Conectando ao MySQL</h3></summary>

### Rodando com docker:

Caso tenha o docker e o docker-compose plugin instalados em sua máquina, rode:

`docker-compose up -d`

Mesmo após a inicialização, recomendo aguardar um pouco para o mysql se inicializar completamente.

Após isso o container que possui a imagem do MySQL estará pronto para o uso.

Na própria pasta `/backend` do projeto já tem um `.env` configurado para conectar com o mysql do container.

### Rodando localmente:

Com o Mysql instalado na máquina localmente, você precisa apenas alterar as variaveis do arquivo .env `MYSQL_PORT=3306` e `MYSQL_PASSWORD=(sua senha do mysql)`

</details>

<details>
<summary><h3>Inicializando a aplicação</h3></summary>

Com o mysql rodando nós precisamos criar o banco de dados.

`npm run db:reset`

Esse comando irá derrubar, criar e popular o banco de dados a cada vez que for utilizado.

Com o banco de dados pronto para ser usado, rode o comando no terminal `npm start` na pasta `/backend` e para ver se está funcionando escreva `http://localhost:3001/carros` no seu navegador.

Se estiver tudo ok, já podemos subir o frontend.

Abra um novo terminal e acesse a pasta `/frontend` e rode também o `npm start`.

Após isso a aplicação estará pronta para o uso.

</details>

Acesse: `http://localhost:3000/` para utilizar a aplicação após os passos acima.
6 changes: 6 additions & 0 deletions backend/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_DATABASE=desafiob2u
MYSQL_HOST=localhost
MYSQL_PORT=3002
API_PORT=3001
1 change: 1 addition & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
8 changes: 8 additions & 0 deletions backend/.sequelizerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const path = require('path');

module.exports = {
'config': path.resolve('src', 'config', 'config.js'),
'models-path': path.resolve('src', 'models'),
'seeders-path': path.resolve('src', 'seeders'),
'migrations-path': path.resolve('src', 'migrations'),
};
Loading