Desenvolver um layout proposto pelo time da Corebiz para mostrar os conhecimentos adiquirios durante o GoBetond.
Layout | Documentação| link do app
🖥️ GoBeyond 🚀 Finalizado😀😀 🖥️
Desde já agradeço a todo o time da Corebiz
por ter me proporcionar esse enorme conhecimento, essas ultimas semanas pude ver na pratica como é ser desafiado a ir além, em um nivel totalmente novo de conhecimento o que me fizeram amar ainda mais a tecnologia, muito obrigado a todos vocês pela dedicação e carinho que tiveram por mim, e tambem quero agradecer os novos amigos desenvolvedores de conseguir nessa nova etapa da minha carreira. Seria um sonho realizado poder trabalhar no time de vocês #Corebiz forever 💖💖💖💖
- Home Page com imagens
- Header
- Conteúdo principal
- Consumir a API
https://jsonplaceholder.typicode.com
- Na coluna da direita, uma grande imagem dinâmica.
- Na coluna da esquerda, um título dinâmico seguido de um botão veja mais que redireciona para o site
Corebiz
. - Uma lista de pequenas imagens dinâmicas que mudam o título atual e a imagem grande quando você clica nela.
- Consumir a API
- Rodapé
O seguinte projeto consiste em desenvolver um layout proposto pelo time da Corebiz
, para demonstrarmos os conhecimentos adquiridos no treinamento GoBeyond. O layout consiste em uma versão web e uma mobile, com imagens e textos dinamicos consumidos de um api.
Para visualizar o layout, clique aqui
Nesta etapa você pode instalar o projeto em seu computador 🖥️ para visualizar o seu funcionamento.
Siga os passos abaixo para instalar o projeto:
#Clone o repositório
$ git clone https://github.com/Everton-Afonso/DesafioFinalGobeyond.git
# Instale as dependencias
$ npm i ou yarn
# Para rodar o projeto
$ npm start ou yarn start
O componente Header é um menu responsivo na horizontal que possui o logo da Corebiz
a esquerda e uma lista de links a direita, ao clicar em um dos seguintes links a corebiz serviços cases contato você e redirecionado para uma pagina do site da Corebiz
. O menu é redimensionando para a versão mobile quando o dispositivo posuir uma tela a baixo de 780px.
Versão Web:
Versão Mobile:
estrutura do componente:
import React, { useState } from "react";
import "./styles.css";
function Header() {
const [isMobile, setIsMobile] = useState(false);
return (
<header className="container-header">
<img src="assets/logo.svg" alt="Logo Corebiz" />
<nav className="container-links">
<ul
className={isMobile ? "nav-links-mobile" : "nav-links"}
onClick={() => setIsMobile(false)}
>
<li>
<a
href="https://www.corebiz.ag/pt/about/"
target="_blank"
rel="noreferrer"
>
a corebiz
</a>
</li>
<li>
<a
href="https://www.corebiz.ag/pt/#framework-title"
target="_blank"
rel="noreferrer"
>
serviços
</a>
</li>
<li>
<a
href="https://www.corebiz.ag/pt/cases/"
target="_blank"
rel="noreferrer"
>
cases
</a>
</li>
<li>
<a
href="https://www.corebiz.ag/pt/contato/"
target="_blank"
rel="noreferrer"
>
contato
</a>
</li>
</ul>
<button
className="mobile-menu-icon"
onClick={() => setIsMobile(!isMobile)}
>
<img
src={isMobile ? "assets/times.svg": "assets/bars.svg"}
alt="icons menu"
/>
</button>
</nav>
</header>
);
}
export default Header;
O componente Main é responsável por renderizar os dados obtidos da API, que por sua vez possui dois outro componentes PostImg e Title. O componente Main possui duas colunas, a da esquerda renderizar o componente Title, um button que ao ser clicado leva para o home do site da Corebiz
e um mini-model que são exibidas as miniaturas das imagens retornadas da API. A culuna da direita renderizar o componente PostImg que exibe as imagens retornadas da API. O mini-model por sua vez ao ser clicado altera o estado do componente Title e do componente PostImg alterando seus conteudos. A main é redimensionando para a versão mobile quando o dispositivo posuir uma tela a baixo de 780px.
Versão Web:
Versão Mobile:
estrutura do componente:
import React, { useEffect, useState } from "react";
import api from "../../services/api";
import PostImg from "../PostImg";
import Title from "../Title";
import "./styles.css";
function Main() {
const [album, setAlbum] = useState([]);
const [post, setPost] = useState(0);
useEffect(() => {
api
.get("Everton-Afonso/db/album")
.then((response) => setAlbum(response.data))
.catch((error) => {
alert(`Ops! ocorreu um erro: ${error}`);
});
}, []);
return (
<main className="main-conteiner">
<section className="main-content">
<section className="main-text">
{<Title title={album[post]?.title} />}
<a
href="https://www.corebiz.ag/pt/"
target="_blank"
rel="noreferrer"
alt="veja mais"
>
veja mais
<img src="assets/arrow.svg" alt="veja mais" />
</a>
</section>
<section className="model">
{<PostImg url={album[post]?.url} />}
</section>
<section className="model-mini">
<div>
{album.map((itens, index) => (
<img
key={index}
onClick={() => setPost(index)}
src={itens.thumbnailUrl}
alt="imagens do mini model"
/>
))}
</div>
</section>
</section>
</main>
);
}
export default Main;
O componente Title recebe uma props do componente main para saber qual titulo deve ser renderizada quando o mini-model for clicado.
estrutura do componente:
import React from "react";
import "./styles.css";
function Title({ title }) {
return (
<>
<h2 className="main-title">{title}</h2>
</>
);
}
export default Title;
O componente PostImg recebe uma props do componente main para saber qual imagem deve ser renderizada quando o mini-model for clicado.
estrutura do componente:
import React from "react";
import "./styles.css";
function PostImg({ url }) {
return (
<div className="post-img">
<img src={url} alt="imagens do model" />
</div>
);
}
export default PostImg;
O componente Footer consiste no rodapé da pagina, o mesmo possui seis culunas que conten as seguintes informações: o logo da Corebiz
, uma menu de links que redirecionado para uma pagina do site da Corebiz
, e os paizes onde estão localizados suas escritorios. O fooder é redimensionando para a versão mobile quando o dispositivo posuir uma tela a baixo de 780px e todo o seu conteudo passa a ser exibido na vertical.
Versão Web:
Versão Mobile:
A pasta Services contem um arquivo js que trás as informações da API https://my-json-server.typicode.com
utilizando o axios para fazer uma requisição dos dados.
estrutura do Services:
import axios from "axios";
const api = axios.create({
baseURL: "https://my-json-server.typicode.com"
});
export default api;
Esse projeto foi desenvolvido com as seguintes tecnologias:
- HTML
- CSS
- JavaScript
- ReactJS
- Axios