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

Projeto finalizado #18

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
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
110 changes: 86 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,86 @@
![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;
# CARSHOP

O projeto consiste em uma aplicação para comprar e vender carros usados. Nela você poderá ver anúncios de carros de pessoas do mundo inteiro, mas para publicar o seu anúncio, você deverá se registrar e fazer o login na página. Apos inserir o seu anúncio, você tem a opção de edita-lo, mudando suas informações, ou remove-lo, deletando-o da sua lista de carros.

## 🚀 Começando


Para poder testar a aplicação localmente, você devera fazer o clone deste repositório na sua maquina:

— Crie uma nova pasta no seu computador;
— Abra o terminal dentro dela;
— Rode o comando: git clone git@github.com:DanielCavalcantih/desafio-dev-junior-b2u.git;

Uma nova pasta chamada "desafio-dev-junior-b2u" deverá ser gerada na pasta que você criou.

— Rode cd desafio-dev-junior-b2u/ para entrar no diretório raiz do projeto.
— Rode git checkout daniel-cavalcanti para acessar a minha branch do projeto.


### 📋 Pré-requisitos


As dependências para este projeto são:

Back-End:
— dotenv;
— express;
— cors;
— joi;
— jsonwebtoken;
— mongoDB;
— nodemon;
— mongoose;

Front-End:
— axios;
— history;
— react;
— react-dom;
— react-router-dom;
— react-scripts;


### 🔧 Instalação


Para instalar todas as dependências do projeto, a partir do diretório raiz:

— Entre na pasta "back-end": cd app/back-end/ ;

— Rode o comando npm install ; Para instalar as dependencias do back-end do projeto;

— Entre na pasta "front-end": cd ../front-end/ ;

— Rode o comando npm install ; Para instalar as dependencias do front-end do projeto;

— Volte para pasta "back-end": cd ../back-end/ ;

— Certifique-se que as portas 3000, 3003 e 3306 não estejam sendo usadas;

— Rode o comando docker-compose up -d ; para criar os containers docker e estabelecer uma compatibilidade de versões;

— Para facilitar a visualização do banco de dados, instale uma extensão do VsCode chamada MongoDB, criada por MongoDB;

— Após instalar e extensão, clique no ícone criado na barra lateral do seu VsCode e crie uma connection com o connection string e passe este link na barra de digitação: "mongodb://localhost:27017/CarShop", e aperte Enter. Você pode observar que a conexão já foi criada;

— Entre no terminal do container docker: docker exec -it car_shop bash e rode o comando npm run dev para rodar o back-end da aplicação;

— No diretório /app/back-end, rode o comando npm run seed para popular o banco de dados com as informações iniciais, pode observar na extensão do MongoDB que o seu banco de dados já foi criado;

— Aplicação rodando, abra um novo terminal, entre na pasta front-end: cd app/front-end/ e rode o comando npm start para iniciar a aplicação;


## 🛠️ Construído com


* [MongoDB](https://www.mongodb.com/atlas/database) - O Banco de dados utilizado
* [React](https://pt-br.reactjs.org/docs/getting-started.html) - Framework de front-end utilizado
* [useContext](https://reactjs.org/docs/context.html) - Para gerenciamento do estado global
* [joi](https://joi.dev/api/?v=17.7.0) - Para validação de requisições http (Middlewares)
* [Express](https://expressjs.com/pt-br/starter/installing.html) - Framework para aplicativo da web do Node.js
* [Mongoose](https://mongoosejs.com/) - Interface da interação com o banco de dados


---
⌨️ Por [Daniel Cavalcanti](https://github.com/DanielCavalcantih) 😊
2 changes: 2 additions & 0 deletions app/back-end/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
MONGO_DB_URL=mongodb://localhost:27017/CarShop
JWT_SECRET=secretJWT
1 change: 1 addition & 0 deletions app/back-end/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/node_modules
17 changes: 17 additions & 0 deletions app/back-end/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM node:16.14

WORKDIR /app

COPY package*.json ./

RUN ["npm", "i"]

COPY . .

RUN chown node:node /app

USER node

ENTRYPOINT [ "npm", "run" ]

CMD ["dev"]
32 changes: 32 additions & 0 deletions app/back-end/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
version: "3"

services:
node:
image: node:16.14
container_name: car_shop
build: ./
tty: true
stdin_open: true
command: bash
working_dir: /app
volumes:
- ./:/app
depends_on:
- mongodb
ports:
- 3003:3003
environment:
- MONGO_URI=mongodb://mongodb:27017/CarShop

mongodb:
image: mongo:5.0.7
container_name: car_shop_db
volumes:
- ./:/app
restart: always
ports:
- 27017:27017

networks:
default:
name: car_shop_net
Loading