Crie, personalize e publique seu próprio portifólio web em minutos. ✨
Neste repositório de modelo temos o ambiente de desenvolvimento e uma base de código definida e preparada para execução. Para que você possa iniciar imediatamente seu ambiente Codespace e começar a personalizar seu site usando o Copilot para ajudá-lo a escrever código mais rápido.
Neste template de portfólio, você poderá “escolher sua própria aventura”, temos um aplicativo web baseado em React pronto para você personalizar e implantar facilmente usando apenas seu navegador web.
Este repositório é um modelo do GitHub para criar um aplicativo da Web de front-end de portfólio pessoal JavaScript usando a estrutura React. O objetivo é fornecer a você um modelo que você possa utilizar imediatamente para criar seu próprio site através do Codespaces.
O repositorio contém:
/.devcontainer
.devcontainer/Dockerfile
: Arquivo de configuração usado por Codespaces para determinar o sistema operacional e outros detalhes..devcontainer/devcontainer.json
: Arquivo de configuração utilizado pelo Codespaces para definir as configurações do Visual Studio Code, como habilitar extensões adicionais./src
: Arquivos HTML, JS e CSS utilizados para construir seu portifólio web..eslintrc
: Configuração do ESLint para validar a consistência e qualidade do código..prettierrc
: Configuração do Prettier, que é utilizado para formatar o código.package.json
e package-lock.json
: Define as informações do projeto para o Node.js, dependências de pacotes e as versões necessárias de cada umEste projeto está preenchido com dados de amostra para que você possa abrir imediatamente no Codespaces, vê-los em execução e implantar (publicar) a qualquer momento.
Seu ambiente de desenvolvimento está pronto para que você possa começar. Com base em nosso Template de JavaScript (React) com Codespace, aqui está configurado e pronto para utilizar:
Sob o nome do repositório, use o menu “Code” e, na guia Codespaces, selecione “Create codespace on main”.
Espere enquanto o GitHub inicializa o Codespace.
Quando terminar, verá seu Codespace começar com uma seção terminal na parte inferior. Aqui você verá npm install
em execução. Após o término do NPM, vá para o terminal onde você pode executar o aplicativo web com o seguinte comandondo: npm run start
Quando o aplicativo da Web for iniciado, você verá uma mensagem dizendo que ela começou com sucesso na porta 1234, e você pode abrir esse site dentro do seu navegador:
Este projeto foi desenvolvido para ser facilmente personalizável. Cada seção do site é um componente separado e suas informações precisam ser definidas em apenas um local. Isso não é apenas para facilitar a atualização, mas também para que você possa ver como os valores prop são passados para os componentes React.
Para cada etapa, abra o projeto em Codespaces, então você pode fazer e confirmar suas alterações enquanto estiver dentro do seu Codespace.
Veja Utilizando source control em seu Codespace para mais tutoriais de Codespaces usando source control
Dentro do App.jsx
você verá uma variável chamada siteProps
. Este é um objeto JavaScript que detém os principais pares de valores necessários para personalizar seu nome, título, e-mail e contas de mídias sociais.
const siteProps = {
name: "Alexandrie Grenier",
title: "Web Designer & Content Creator",
email: "alex@example.com",
gitHub: "microsoft",
instagram: "microsoft",
linkedIn: "satyanadella",
medium: "",
twitter: "microsoft",
youTube: "microsoft",
};
Atualize o nome e o título que você gostaria de exibir na parte superior do seu site.
Alguns valores opcionais são endereço de e-mail e contas sociais. Estes são usados no componente ‘footer’. Se qualquer item não estiver incluído na lista ou definido como uma sequência vazia (“”), ele não exibirá o ícone e o link.
Este site de portfólio inclui 3 imagens: seção superior, seção “Sobre mim” e a seção de portfólio. Podem ser imagens de formato paisagem de sua escolha, de sua própria coleção ou encontradas que tenham uma licença que permita o uso sem atribuição.
Dois sites para encontrar fotos são Pixabay e Unsplash. Fotos, ilustrações, vetores, você decide! Quando achar suas imagens, guarde cada uma em /src/images
com um nome de arquivo curto e significativo.
Vá para os seguintes componentes para atualizar a linha import image...
para referenciar a nova imagem que você baixou para essa seção, bem como o imageAltText
para cada imagem:
/src/Components/Home.jsx
- Seção na parte superior da página, imagem principal que você verá quando o site é carregado (mulher parada na parede do servidor no exemplo)
import image from "../images/server-wall.jpg";
const imageAltText = "woman holding laptop standing by server room with glass wall";
/src/Components/About.jsx
- Fundo por trás da seção detalhada “sobre mim” (mosaico abstrato no exemplo)
import image from "../images/mosaic.svg";
const imageAltText = "purple and blue abstract background";
/src/Components/Portfolio.jsx
- Imagem destacada no lado esquerdo da seção (foto de mesa de design no exemplo)
import image from "../images/design-desk.jpeg";
const imageAltText = "desktop with books and laptop";
A seção “Sobre” ajuda a fornecer às pessoas um pouco mais de informações sobre suas habilidades e paixões. Dentro de /src/Components/About.jsx
você encontrará 2 valores para atualizar:
description
: uma ou duas frases curtas, descrevendo a si mesmo, objetivos de carreira e/ou paixõesdetailOrQuote
: bloco mais longo para você adicionar mais detalhes sobre você, ou até mesmo uma citação que você gostaA segunda seção a ser atualizada é a seção “Portfólio”, onde você destaca os itens nos quais trabalhou. Estes seriam artigos, vídeos, designs de logo, projetos do GitHub, qualquer coisa que destaque você!
Vá para /src/Components/Portfolio.jsx
e localize a variável projectList
. Este é um array de objetos em JavaScript. Cada item que você deseja destacar precisa: título, descrição e URL.
O exemplo tem 4, mas o número que você inclui depende de você.
const projectList = [
{
title: "10 Things to know about Azure Static Web Apps 🎉",
description: "Collaboration to create a beginner friendly....",
url: "https://dev.to/azure/10-things-to-know-about-azure-static-web-apps-3n4i",
},
{
title: "Web Development for Beginners",
description: "Contributed sketch note imagery to accompany...",
url: "https://github.com/microsoft/web-dev-for-beginners",
},
{
title: "My Resume Site",
description: "Created from Microsoft's resume workshop...",
url: "https://github.com/microsoft/workshop-library/tree/main/full/build-resume-website",
},
{
title: "GitHub Codespaces and GitHub.dev",
description: "Video interview to explain when to use GitHub.dev...",
url: "https://www.youtube.com/watch?v=c3hHhRME_XI",
},
];
O projeto inclui a configuração necessária para dar fazer deploy (publicação) gratuitamente no Azure Static Web Apps ou GitHub Pages. Abaixo, você encontra o passo a passo para ambos:
Azure Static Web Apps é a solução de hospedagem da Microsoft para sites estáticos (ou sites renderizados no navegador do usuário, não em um servidor) por meio do Azure. Este serviço oferece oportunidades adicionais para expandir seu site por meio do Azure Functions, autenticação, versões de preparação (stating ou em português, pré-produção) e muito mais.
Você precisará de contas no Azure e no GitHub para publicar (implantar) seu aplicativo Web. Se você ainda não tem uma conta do Azure, pode criá-la durante o processo de implantação ou nos links abaixo:
Com seu projeto aberto no Codespaces:
/
dist
Issues? Ao criar seu Static Web app, se você for solicitado a selecionar uma assinatura do Azure e não puder selecionar uma assinatura, verifique a guia “Accounts” no VS Code. Certifique-se de escolher as opções “Grant access to …” (em português, “Conceder acesso a”) se essas opções aparecerem. Se você receber a mensagem de erro “RepositoryToken is invalid. …” (em português, “RepositoryToken é inválido”) mude para o Visual Studio Code para a Web (vscode.dev) e repita as etapas lá.
🤩 Bônus: Configurar um domínio personalizado para seu aplicativo Web estático do Azure
GitHub Pages permite hospedar sites diretamente do repositório do GitHub. Este projeto já está configurado para que você possa dar deploy seu portfólio para páginas do GitHub em poucos passos.
Com seu projeto aberto em Codespaces:
package.json
e atualize os seguintes valores:
http://{github-username}.github.io/{repo-name}
, onde github-username
é seu nome de usuário GitHub e repo-nome
é o nome que você deu a este repositório de portfólio quando o criougithub-username
pelo seu nome de usuário no GitHub e repo-name
por nome do repositóriocommit
e push
destas alterações no package.json
para seu repositório remoto.crtl
+ shift
+ ` (ou abrir o menu superior esquerdo, selecione “Terminal” e “Novo terminal”)npm run deploy
. Isso executará primeiro o script de pré-implantação para criar o projeto, seguido pelo script de implantação, que enviará esses arquivos agrupados para uma nova branch em seu repositório (gh-pages) que será usado para seu site GitHub Pages.🤩 Bônus: Configure um domínio personalizado para o site no GitHub Pages
Abaixo estão 4 maneiras adicionais para você continuar personalizando seu site de portfólio e Codespace. Mostraremos como usar o Copilot para fazer sugestões de código para um desenvolvimento mais rápido e ajudá-lo a aprender mais HTML, CSS e JavaScript ao longo do caminho.
👋 Obtendo acesso ao GitHub Copilot
Se você ainda não tem acesso ao Copilot, pode solicitar aqui. Se você é estudante, pode obter o Copilot GRÁTIS seguindo estas instruções.
Para garantir que o Copilot esteja sendo executado corretamente, navegue até a guia de extensão em seu Codespace e verifique o status da extensão do Copilot. Se o status for inativo, recrie o Codespace e habilite a extensão para garantir que ela esteja ativada.
Seu ambiente vem com extensões pré-instaladas. Você pode alterar quais extensões o ambiente codespaces começa, veja como:
Abre o arquivo .devcontainer/devcontainer.json e encontre o seguinte elemento JSON extensions
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"gitHub.copilot",
"ms-vscode.azure-account",
"ms-azuretools.vscode-azurestaticwebapps"
]
Vamos adicionar a extensão “indent-rainbow”. Para fazer isso, vá para a lista extensions e adicione:
"oderwat.indent-rainbow"
O que você fez anteriormente foi adicionar o identificador único de uma extensão do indent-rainbow. Isso permitirá que o Codespaces saiba que essa extensão deve ser pré-instalada na inicialização.
Como encontrar o identificador único de uma extensão:
⭐ BÔNUS COPILOT ⭐
Em devcontainer.json
, vá para a seguinte linha settings
: "emmet.triggerExpansionOnTab": true
. Adicione uma vírgula no final da linha e pressione enter. Veja quais outras configurações o Copilot recomenda e se elas podem ajudá-lo em seu Codespace.
💡 Saiba mais aqui, Personalizar seu GitHub Codespace
In devcontainer.json
, go to the following line in the settings
values: "emmet.triggerExpansionOnTab": true
. Add a comma at the end of the line and press enter. See what other settings Copilot recommeneds and if they’d help you in your Codespace.
No cabeçalho do seu site você tem links para cada seção abaixo. Clique em um desses links e observe-o rolar a página até essa seção. Não é realmente um scroll, né?
Vamos melhorar a experiência do usuário diminuindo a velocidade para que o usuário tenha uma noção do que está acontecendo e para onde está navegando na página.
Abra styles.css
, que é a folha de estilo para seu site de portfólio. Precisamos adicionar um estilo para html
. Se você olhar, verá agora que os estilos html
e body
estão sendo definidos juntos, sem nenhum estilo definido para scroll-behavior
. Vamos dar ao Copilot um prompt para adicionar isso para nós.
Abaixo do estilo de html
e body
, comece a instruir o Copilot com um comentário de:
/* adiciona uma rolagem suave */
html {
scroll-behavior: smooth;
}
Seu site já deve estar em execução no seu Codespace e a alteração será recarregada na página automaticamente. Clique em um link no cabeçalho superior para ver a rolagem suave em ação.
As animações são uma maneira fácil de adicionar algum movimento aos elementos da sua página para aumentar a interatividade do usuário e destacar os itens que você deseja garantir que eles notem. Vamos animar a foto da mesa na seção de portfólio.
styles.css
dentro do seu Codespace. Usando o Copilot, na parte inferior do prompt styles.css
Copilot com o seguinte comentário:
/* adicionar um slide na animação */
Ele deve então sugerir a seguinte sequência de animação para você. Pressione a tecla tab para aceitar ou continue digitando até que o Copilot conclua as sugestões e você tenha sua animação pronta para uso.
@keyframes slideInLeft {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0);
}
}
Com a sequência de animação definida, agora podemos dizer à nossa foto de mesa para se animar com nossa nova sequência de animação slideIn
. Abra Portfolio.jsx
e localize a tag img
. Você verá que ele utiliza CSS embutido para definir seu estilo. Dentro de sua definição de estilo, adicione o seguinte:
animation: "1s ease-out 0s 1 slideIn";
Sua tag de imagem deve se parecer com algo como:
<img src={image} style= />
Seu site já deve estar sendo executado no seu Codespace e a alteração será recarregada automaticamente na página. Role para cima e para baixo na página e veja sua foto de desktop deslizar sobre a página.
⭐ BÔNUS COPILOT ⭐
Use o Copilot para ajudá-lo a animar a seta de rolagem para baixo, em seu componente Home
, para saltar para cima e para baixo em sua página.
Dica: Em seu arquivo styles.css
, use comentários para começar a dizer ao Copilot o que você quer fazer. Veja o que é sugerido, ajuste seus prompts e veja como isso o orienta para que sua flecha salte.
Começamos com algumas seções básicas para o seu portfólio web, mas você tem liberdade criativa para torná-lo seu e adicionar novas seções relevantes para o que você quer em seu site.
Por exemplo, vamos adicionar uma seção de educação ao site do seu portfólio.
Crie um novo componente para a seção dentro da pasta Components
. Adicione um novo arquivo chamado Education.jsx
.
Vamos pedir ajuda ao Copilot para começar. Em vez de solicitar um comentário, inicie seu arquivo Education.jsx
com:
import React from "react";
Conforme você começa a digitar, ele capta o que você está fazendo e pode oferecer um preenchimento automático dessa linha.
Pressione enter
após a linha de importação para que o Copilot sugira o código para criar seu componente Education
. Pressione tab
para aceitar a solução ou crtl
+ enter
para ver todas as sugestões do Copilot e selecione aquela que funciona para você.
No mínimo, você precisa de um const
definido e o componente Education
exportado (exemplo abaixo). O resto é com você. Experimente o Copilot, ajustando-o junto com o que você gostaria que ele construísse.
import React from "react";
const Education = () => {
return(
<section className="light" id="education">
<h2>Education</h2>
</section>
)
}
export default Education;
App.jsx
, importe seu novo componente Education
na parte superior adicionando o seguinte e observe como o Copilot começa a ver o que você está fazendo e a fornecer sugestões de preenchimento automático:
import Education from "./Components/Education";
Agora adicione o componente Education
indo para uma nova linha onde você deseja renderizá-lo. O Watch Copilot já sabe que você deseja renderizar o componente ‘Educação’. Ele deve sugerir o seguinte que você pode aceitar e renderizar seu novo componente:
<Education />
Em seu Codespace, seu aplicativo de portfólio deve estar em execução e recarregará seu site com as alterações.
⭐ BÔNUS COPILOT ⭐
Agora que você sabe como o Copilot pode não apenas ajudá-lo a codificar mais rapidamente, mas também dar sugestões para economizar seu tempo procurando soluções.
Explore como você pode usar o Copilot para ajudá-lo a:
Aplicativo de navegador Codespaces
Se você estiver usando Edge ou Chrome, verá uma opção para instalar o aplicativo Codespaces ao iniciar seu Codespace. O aplicativo Codespaces permite que você inicie seu Codespace dentro do aplicativo para que você possa trabalhar fora do navegador. Encontre o ícone do aplicativo e instale-o com a janela pop-up para testá-lo.
Ajude-nos a melhorar este repositório nos informando e abrindo uma issue!.