{"id":50940,"date":"2023-03-09T13:11:08","date_gmt":"2023-03-09T12:11:08","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=50940&#038;preview=true&#038;preview_id=50940"},"modified":"2023-10-19T14:31:27","modified_gmt":"2023-10-19T12:31:27","slug":"next-js-portfolio","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/","title":{"rendered":"Zo bouw en deploy je een developerportfolio met Next.js"},"content":{"rendered":"<p>Een developerportfolio is een verzameling voorbeelden van je werk en projecten die je vaardigheden en ervaring laten zien. Een sterk portfolio onderscheidt je van andere kandidaten bij het zoeken naar een baan. Maar dat niet alleen: een portfolio kan ook een waardevolle tool zijn bij het netwerken, het bijhouden van je leerervaringen, en jezelf neerzetten als deskundige.<\/p>\n<p>In deze tutorial leer je hoe je een developerportfolio bouwt met Next.js en direct vanuit je GitHub repository deployt op Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting<\/a> platform, dat een gratis <em>.kinsta.app<\/em> domein biedt om je werk snel live te krijgen.<\/p>\n<p>Hier is een live demo van het <a href=\"https:\/\/kinsta-developer-portfolio-ir8w8.kinsta.app\/\" target=\"_blank\" rel=\"noopener noreferrer\">developerportfolio<\/a> dat je gaat bouwen met Next.js.<\/p>\n<p>Je hebt toegang tot de <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\">GitHub repository van dit project<\/a> als je het beter wilt bekijken, of je kunt deze <a href=\"https:\/\/github.com\/olawanlejoel\/kinsta-portfolio-starter\">portfolio starterproject<\/a> template gebruiken door <strong>Use this template<\/strong> &gt; <strong>Create a new repository<\/strong> te selecteren &#8211; dit kopieert de startercode naar een nieuwe repository. Het starterproject bevat basiscodes zoals de stijlen, een Font Awesome CDN link, afbeeldingen en een basisstructuur.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Vereisten\/voorwaarden<\/h2>\n<p>Dit is een &#8220;follow-along&#8221; type tutorial. Het zal gemakkelijker voor je zijn om mee te coderen als je beschikt over:<\/p>\n<ul>\n<li>Basiskennis van <a href=\"https:\/\/kinsta.com\/blog\/what-is-html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/nl\/blog\/css-best-practices\/\">CSS<\/a> en <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a><\/li>\n<li>Een beetje kennis van <a href=\"https:\/\/kinsta.com\/blog\/what-is-react-js\/\">React<\/a> en misschien Next.js<\/li>\n<li>Een installatie van Node.js en npm (<a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">Node Package Manager<\/a>) of yarn op je computer<\/li>\n<\/ul>\n<h2>Waarom Next.js?<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/blog\/next-js\/\">Next.js<\/a> is een op React gebaseerd open source <a href=\"https:\/\/kinsta.com\/nl\/blog\/javascript-bibliotheken\/\">JavaScript library framework<\/a> dat gebruikt kan worden voor een breed scala aan webontwikkelingsprojecten, omdat het het bouwen van aan server-side gerenderde en statische applicaties vereenvoudigt. Het stroomlijnt het proces door de beste features van React te benutten en de renderprestaties te optimaliseren voor een betere gebruikerservaring. Een paar van de meest voorkomende use cases voor Next.js zijn:<\/p>\n<ul>\n<li><strong>Het bouwen van statische websites<\/strong>: Next.js kan statische websites bouwen die snel en gemakkelijk te deployen zijn en minimaal onderhoud vereisen, zoals de website met het developerportfolio die we in deze tutorial zullen bouwen.<\/li>\n<li><strong>Dynamische websites bouwen<\/strong>: Met Next.js kun je dynamische websites maken die van content kunnen veranderen op basis van gebruikersinteracties of server-side datafetching.<\/li>\n<\/ul>\n<ul>\n<li><strong>Het bouwen van e-commerce websites<\/strong>: Next.js is zeer geschikt voor het bouwen van e-commerce websites die server-side rendering nodig hebben voor betere SEO en prestaties.<\/li>\n<\/ul>\n<ul>\n<li><strong>Het bouwen van progressieve webtoepassingen (PWA&#8217;s)<\/strong>: Next.js ondersteunt het maken van PWA&#8217;s, dat zijn webapplicaties die functioneren als native apps en ge\u00efnstalleerd kunnen worden op het apparaat van een gebruiker.<\/li>\n<\/ul>\n<h2>Zo zet je je Next.js ontwikkelomgeving op<\/h2>\n<p>Om een ontwikkelomgeving voor Next.js op te zetten, <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-installeren\/\">installeer je eerst\u00a0Node.js<\/a> op je computer, want je zult het commando <code>npx<\/code> gebruiken om npm pakketten uit te voeren zonder ze globaal op je systeem te hoeven installeren. Als dat geregeld is, kun je nu een Next.js project aanmaken door het volgende commando uit te voeren:<\/p>\n<pre><code class=\"language-bash\">npx create-next-app@latest my-portfolio<\/code><\/pre>\n<p>Er verschijnt een prompt die je vraagt om enkele extra dependencies te bevestigen. Vervolgens kun je <code>npm run dev<\/code> uitvoeren om je app beschikbaar te maken op <strong>localhost:3000<\/strong>.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/nextjs-installation-with-options.jpg\" alt=\"Code die een nieuw next.js project laat zien.\" width=\"1600\" height=\"569\"><figcaption class=\"wp-caption-text\">Een nieuw Next.js project maken.<\/figcaption><\/figure>\n<p>Wanneer je een Next.js project aanmaakt met het commando <code>npx<\/code>, wordt automatisch een mappenstructuur gemaakt met de volgende hoofdmappen:<\/p>\n<ol start=\"1\">\n<li><strong>pages<\/strong>: Deze map bevat de pagina&#8217;s van de applicatie, die automatisch gerouteerd worden op basis van hun bestandsnaam. Bijvoorbeeld, <strong>pages\/index.js<\/strong> is de startpagina, terwijl <strong>pages\/about.js<\/strong> de about pagina is.<\/li>\n<li><strong>public<\/strong>: Deze map bevat statische bestanden die direct geleverd kunnen worden, zoals afbeeldingen, lettertypen en andere assets.<\/li>\n<li><strong>components<\/strong>: Deze map is optioneel en bevat herbruikbare UI componenten die in de hele applicatie gebruikt kunnen worden.<\/li>\n<li><strong>styles<\/strong>: Deze map is ook optioneel en bevat globale stijlen die in de hele applicatie kunnen worden toegepast.<\/li>\n<\/ol>\n<p>Andere mappen en bestanden kunnen ook worden aangemaakt, afhankelijk van de specifieke configuratie en mogelijkheden, maar dit zijn de coremappen van een basic Next.js project.<\/p>\n<p>Voor deze tutorial zal alles wat we bouwen verschijnen op de indexpagina (onze website met \u00e9\u00e9n pagina), en je zult componenten opnemen voor verschillende secties zoals de hero, about, projecten, en overige.<\/p>\n<h2>Hoe je een responsieve developerportfolio bouwt met Next.js<\/h2>\n<p>Een portfolio bestaat meestal uit deze componenten:<\/p>\n<ul>\n<li>Navbar component<\/li>\n<li>Hero\u00a0component<\/li>\n<li>About\u00a0component<\/li>\n<li>Skills component<\/li>\n<li>Projects component<\/li>\n<li>Contact component<\/li>\n<li>Footer component<\/li>\n<\/ul>\n<p>Van de Navbar en Footer componenten wordt verwacht dat ze op alle pagina&#8217;s verschijnen als het portfolio meer dan \u00e9\u00e9n pagina heeft. Dit kan in Next.js worden bereikt door een layout te defini\u00ebren.<\/p>\n<h3>Layouts defini\u00ebren in Next.js<\/h3>\n<p>In Next.js is een layout een manier om een consistente structuur te defini\u00ebren voor de componenten die op elke pagina van een website verschijnen. De layout bevat gewoonlijk elementen als een header, navigatiemenu en footer die op alle pagina&#8217;s van de site worden weergegeven.<\/p>\n<p>Begin met het maken van een components map in de <strong>src<\/strong> (bron) map van je Next.js project. Maak vervolgens de Navbar en Footer componenten die binnen de Layout component zullen worden gebruikt.<\/p>\n<p>Hier zie je de Navbar component in <strong>Navbar.jsx<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Navbar.jsx\n\nimport Link from \"next\/link\";\n\nconst Navbar = () =&gt; {\n  return (\n    &lt;div className=\"nav-container\"&gt;\n      &lt;div className=\"logo\"&gt;\n        &lt;Link href=\"\/\"&gt;\n          Joe's Portfolio\n        &lt;\/Link&gt;\n      &lt;\/div&gt;\n      &lt;a href=\"\" className=\"cta-btn\"&gt;Resume&lt;\/a&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Navbar;<\/code><\/pre>\n<p>Dit is de Footer component in <strong>Footer.jsx<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Footer.jsx\n\nconst Footer = () =&gt; {\n  return (\n    &lt;&gt;\n      &lt;hr\/&gt;\n      &lt;div className=\"footer-container\"&gt;\n        &lt;p&gt;\n          &copy; {new Date().getFullYear()} Joel's Portfolio\n        &lt;\/p&gt;\n        &lt;div className=\"social_icons\"&gt;\n          &lt;a\n            href=\"https:\/\/twitter.com\/olawanle_joel\"\n            aria-label=\"Twitter\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n          &lt;a\n            href=\"https:\/\/github.com\/olawanlejoel\"\n            aria-label=\"GitHub\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n          &lt;a\n            href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"\n            aria-label=\"LinkedIn\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  )\n}\n\nexport default Footer;<\/code><\/pre>\n<p><strong>Opmerking<\/strong>: Om de Font Awesome pictogrammen te laten werken, moet je Font Awesome in je project installeren of het CDN ervan gebruiken. Je kunt de CDN link als volgt aan je <strong>_document.js<\/strong> bestand toevoegen:<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/_document.js\n\nimport { Html, Head, Main, NextScript } from 'next\/document';\n\nexport default function Document() {\n  return (\n    &lt;Html lang=\"en\"&gt;\n      &lt;Head&gt;\n        &lt;meta charSet=\"utf-8\" \/&gt;\n        &lt;link\n          rel=\"stylesheet\"\n          href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n          integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n          crossorigin=\"anonymous\"\n          referrerpolicy=\"no-referrer\"\n        \/&gt;\n      &lt;\/Head&gt;\n      &lt;body&gt;\n      &lt;Main \/&gt;\n      &lt;NextScript \/&gt;\n      &lt;\/body&gt;\n    &lt;\/Html&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Opmerking<\/strong>: Als je een andere versie van Font Awesome via het CDN koppelt, moet je boven de juiste <code>integrity<\/code> hash voor die release inwisselen.<\/p>\n<p>Nadat je alle benodigde componenten voor je layout hebt gemaakt, kun je het Layout component zelf maken en dit component aan je pagina&#8217;s toevoegen door je paginacontent erin te wrappen.<\/p>\n<p>De Layout component accepteert een &lt;code&gt;children&lt;\/code&gt; prop, waarmee je toegang hebt tot de content van je Next.js pagina&#8217;s.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Layout.jsx\n\nimport Navbar from '.\/navbar';\nimport Footer from '.\/footer';\n\nconst Layout = ({ children }) =&gt; {\n  return (\n    &lt;&gt;\n      &lt;Navbar \/&gt;\n      &lt;main&gt;{children}&lt;\/main&gt;\n      &lt;Footer \/&gt;\n    &lt;\/&gt;\n  )\n}\n\nexport default Layout;<\/code><\/pre>\n<p>Nu heb je met succes de Layout component gemaakt die de Navbar en Footer bevat naast de goed gepositioneerde children props. Je kunt de Layout component nu aan je pagina&#8217;s toevoegen door de paginacontent erin te wrappen. Dit gebeurt in het bestand <strong>_app.js<\/strong>.<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/_app.js\n\nimport '@\/styles\/globals.css';\nimport Layout from '..\/components\/layout';\n\nexport default function App({ Component, pageProps }) {\n  return (\n    &lt;Layout&gt;\n      &lt;Component {...pageProps} \/&gt;\n    &lt;\/Layout&gt;\n  );\n}<\/code><\/pre>\n<p>Je bent er nu in geslaagd een layout te maken voor je developerportfolio. Voor dit portfolio richten we ons meer op Next.js en hoe je je website naar Kinsta kunt deployen. Je kunt dus de stijlen in het <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\/blob\/main\/src\/styles\/globals.css\">styles\/globals.css<\/a> bestand kopi\u00ebren naar je eigen project. Als je je portfoliowebsite in dev modus start, zou je nu de layout van je app moeten zien.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/layout-component.jpg\" alt=\"Afbeelding van een layout component\" width=\"1600\" height=\"619\"><figcaption class=\"wp-caption-text\">Indeling component<\/figcaption><\/figure>\n<p>Nu is het tijd om je portfoliowebsite de juiste content te geven.<\/p>\n<h3>Portfoliocomponenten bouwen<\/h3>\n<p>Je kunt nu individuele componenten maken voor elke sectie van het developerportfolio. Al deze componenten worden ge\u00efmporteerd in de indexpagina van je Next.js project, zodat ze kunnen worden weergegeven wanneer je je project start met <code>npm run dev<\/code>.<\/p>\n<h4>De Hero component<\/h4>\n<p>De Hero component is de eerste sectie onder de Navbar, die vooral bedoeld is om de aandacht van de gebruiker te trekken en hem een idee te geven waar de website of applicatie over gaat.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Hero.jsx\n\nimport Image from \"next\/image\";\n\nconst Hero = () =&gt; {\n  return (\n    &lt;div className=\"hero-container\"&gt;\n      &lt;Image src='\/images\/profile.jpeg' className=\"profile-img\" width={300} height={300} alt=\"Joe's personal headshot\" \/&gt;\n      &lt;div className=\"hero-text\"&gt;\n        &lt;h1&gt;Hey, I'm Joe \ud83d\udc4b&lt;\/h1&gt;\n        &lt;p&gt;\n          I'm a software developer based in Lagos, Nigeria. I specialize in building (and occasionally designing)\n          exceptional websites, applications, and everything in between.\n        &lt;\/p&gt;\n        &lt;div className=\"social-icons\"&gt;\n          &lt;a\n            href=\"https:\/\/twitter.com\/olawanle_joel\"\n            aria-label=\"Twitter\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n          &lt;a\n            href=\"https:\/\/github.com\/olawanlejoel\"\n            aria-label=\"GitHub\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n          &lt;a\n            href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"\n            aria-label=\"LinkedIn\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          &gt;\n            &lt;i className=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Hero;<\/code><\/pre>\n<p>In de code hierboven zie je dat de <a href=\"https:\/\/nextjs.org\/docs\/api-reference\/next\/image\" target=\"_blank\" rel=\"noopener noreferrer\">Next.js Image component<\/a> wordt gebruikt in plaats van de HTML <code>img<\/code> tag om de afbeelding toe te voegen, omdat die automatische afbeeldingsoptimalisatie, resizing en nog veel meer mogelijk maakt.<\/p>\n<p>In de About component zie je ook dat er een eenvoudige paragraaf is toegevoegd om iets over de developer te vertellen, naast enkele sociale pictogrammen van Font Awesome om sociale links toe te voegen.<\/p>\n<p>Zo zou de Hero component eruit moeten zien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/hero-component.jpg\" alt=\"Next.js hero component voor portfoliowebsite\" width=\"1600\" height=\"695\"><figcaption class=\"wp-caption-text\">Hero component<\/figcaption><\/figure>\n<p>Je kunt meer content aan de Hero component toevoegen, de stijlen in het <strong>styles\/globals.css<\/strong> bestand aanpassen of zelfs deze sectie op je eigen manier nabouwen.<\/p>\n<h4>De About component<\/h4>\n<p>De About component is bedoeld om lezers of mensen die je portfolio bezoeken meer informatie over je te vertellen in zoveel alinea&#8217;s als je wilt. Als je meer over jezelf wilt vertellen, kun je een speciale &#8220;About Me&#8221; pagina maken en daar een knop aan toevoegen om meer over jezelf te lezen.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/About.jsx\n\nimport Image from \"next\/image\";\n\nconst About = () =&gt; {\n  return (\n    &lt;div className=\"about-container\"&gt;\n      &lt;h2&gt;About Me&lt;\/h2&gt;\n      &lt;div className=\"flex-about\"&gt;\n        &lt;div className=\"about-text\"&gt;\n          &lt;p&gt;\n            As a developer, I have always been passionate about creating elegant and effective solutions to\n            complex problems. I have a strong foundation in software development, with a focus on web\n            technologies such as HTML, CSS, and JavaScript. I enjoy working on both the front-end and\n            back-end of applications, and I am always looking for ways to optimize performance, improve user\n            experience, and ensure the highest level of code quality.\n          &lt;\/p&gt;\n          &lt;p&gt;Throughout my career, I have worked on a wide range of projects, from simple static websites to\n            complex enterprise-level applications. I am experienced in working with a variety of development\n            tools and frameworks, including React, Angular, Vue.js, Node.js, and Laravel. I am always eager\n            to learn and explore new technologies, and I am constantly seeking out opportunities to improve\n            my skills and knowledge.&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"about-img\"&gt;\n          &lt;Image src='\/images\/about.jpeg' className=\"profile-img\" width={300} height={500}\/&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default About;<\/code><\/pre>\n<p>De code hierboven bevat twee alinea&#8217;s tekst over de developer en een afbeelding van de developer. Zo zal de About sectie er naar verwachting uitzien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/about-component.jpg\" alt=\"De About component op een Next.js portfoliosite\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">About component<\/figcaption><\/figure>\n<p>Je kunt de stijlen altijd tweaken om meer afbeeldingen en nog veel meer toe te voegen.<\/p>\n<h4>De\u00a0Skills\u00a0component<\/h4>\n<p>Het Skills component is bedoeld om enkele van de meest gebruikte technologie\u00ebn van de developer te tonen, of technologie\u00ebn die de developer in het verleden heeft gebruikt.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/skills-component.jpg\" alt=\"Skills component\" width=\"1600\" height=\"294\"><figcaption class=\"wp-caption-text\">Skills component<\/figcaption><\/figure>\n<p>Je kunt dit gemakkelijker onderhouden door een array te maken in een extern bestand en dan te importeren in de skills component, zodat je er doorheen kunt lopen in plaats van soortgelijke code te dupliceren.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Skills.jsx\n\nconst Skills = () =&gt; {\n  return (\n    &lt;div className=\"skills-container\"&gt;\n      &lt;h2&gt;Skills&lt;\/h2&gt;\n      &lt;div className=\"grid-skills\"&gt;\n        &lt;div className=\"skill-card html\"&gt;\n          &lt;i className=\"fa-brands fa-html5 html-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;HTML&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"skill-card css\"&gt;\n          &lt;i className=\"fa-brands fa-css3-alt css-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;CSS&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"skill-card js\"&gt;\n          &lt;i className=\"fa-brands fa-js-square js-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;JavaScript&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"skill-card react\"&gt;\n          &lt;i className=\"fa-brands fa-react react-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;React&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"skill-card node\"&gt;\n          &lt;i className=\"fa-brands fa-node-js node-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;Node&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"skill-card python\"&gt;\n          &lt;i className=\"fa-brands fa-python python-icon\"&gt;&lt;\/i&gt;\n          &lt;p&gt;Python&lt;\/p&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Skills;<\/code><\/pre>\n<p>In bovenstaande code wordt voor elke vaardigheid een kaart gemaakt, en elke kaart bevat het technologie icoontje van font-awesome en de technologienaam. Je kunt ook meer stijlen toevoegen en de code tweaken om hem aantrekkelijker en unieker te maken.<\/p>\n<h4>Het Projects component<\/h4>\n<p>Het Projects component is een van de belangrijke onderdelen van het developerportfolio. Projecten leveren tastbaar bewijs van de vaardigheden en bekwaamheden van een developer en tonen hun vermogen om hun kennis toe te passen op echte problemen.<\/p>\n<p>Elk project bevat een korte beschrijving van het project, een link naar de broncode (we gebruiken hier <a href=\"https:\/\/kinsta.com\/blog\/what-is-github\/\">GitHub<\/a> links), en eventuele andere details die je wilt toevoegen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/projects-component.jpg\" alt=\"Next.js projects component voor portfoliowebsite\" width=\"1600\" height=\"847\"><figcaption class=\"wp-caption-text\">Projects component<\/figcaption><\/figure>\n<p>Je kunt een array maken voor de details van elk project en die dan importeren in je component om te voorkomen dat je ze hard moet coderen.<\/p>\n<p>Laten we een bestand <strong>data.js<\/strong> maken om de array met projectgegevens op te slaan. Je kunt dit bestand opslaan in de component map of in de <strong>pages\/api<\/strong> map. Voor deze demo sla ik het op in de componentenmap. Deze array zal een object bevatten voor elk project, en het object zal de projectnaam, beschrijving en GitHub link bevatten.<\/p>\n<pre><code class=\"language-js\">\/\/ components\/data.js\n\nexport const projectData = [\n  {\n    id: 1,\n    title: 'Todo List App',\n    description:\n      'A simple Todo List App built with JavaScript. All datas are stored in localstorage. It helps users check list out their plans and tick as they do them.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Todo-List-App',\n  },\n  {\n    id: 2,\n    title: 'Books Library App',\n    description:\n      'A simple Book Library App built with JavaScript. It helps readers have a good list of books they are either currently reading or have finished reading.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Book-Library',\n  },\n  {\n    id: 3,\n    title: 'Quotes Generator',\n    description:\n      'Helps you generate quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/random-quote-generator',\n  },\n  {\n    id: 4,\n    title: 'Password Generator',\n    description:\n      'Helps you generates random passwords, you can select what you want your password to entail and also you can copy generated password to clipboard.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Password-Generator',\n  },\n  {\n    id: 5,\n    title: 'Twitter UI Clone',\n    description:\n      'Simple Twitter UI clone built with TailwindCSS and Vue Js. This covers only the homepage of Twitter UI. This is cool to get started with TailwindCSS as it helps understand basic concepts.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/TwitterUI-clone',\n  },\n];<\/code><\/pre>\n<p>Je kunt nu een projectcomponent maken om deze gegevens te gebruiken door er eenvoudig doorheen te loopen. Je kunt elke JavaScript iteratiemethode gebruiken, maar voor deze tutorial gebruik je de JavaScript <code>map()<\/code> array methode om door de gegevensarray te loopen na het importeren in de Projecten component.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Projects.jsx\n\nimport { projectData } from '.\/data.js';\n\nconst Projects = () =&gt; {\n  return (\n    &lt;div className=\"projects-container\"&gt;\n      &lt;h2&gt;Projects&lt;\/h2&gt;\n      &lt;div className=\"projects-grid\"&gt;\n        {projectData && projectData.map((project) =&gt; (\n          &lt;div className=\"project-card\" key={project.id}&gt;\n            &lt;div className=\"project-header\"&gt;\n              &lt;i className=\"fa-regular fa-folder-open folder-icon\"&gt;&lt;\/i&gt;\n              &lt;div className=\"small-icons\"&gt;\n                &lt;a href={project.gitHubLink}&gt;&lt;i className=\"fa-brands fa-github\"&gt;&lt;\/i&gt;&lt;\/a&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n            &lt;h3&gt;{project.title}&lt;\/h3&gt;\n            &lt;p&gt;{project.description}&lt;\/p&gt;\n          &lt;\/div&gt;\n        ))\n        }\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Projects;<\/code><\/pre>\n<p>In de bovenstaande code heb je met succes herhaling vermeden door door de array te loopen om alle projecten in de Projects component uit te voeren, waardoor het gemakkelijk is om meer projecten te onderhouden en toe te voegen.<\/p>\n<h4>Het Contact Component<\/h4>\n<p>E\u00e9n reden om een developerportfolio te maken is dat potenti\u00eble klanten je kunnen bereiken. Een manier zou zijn dat mensen je een e-mail sturen, en dat is wat we in dit Contact component zullen faciliteren.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Contact.jsx\n\nconst Contact = () =&gt; {\n  return (\n    &lt;div className=\"contact-container\"&gt;\n      &lt;h2&gt;Get In Touch&lt;\/h2&gt;\n      &lt;p&gt;If you want us to work together, have any questions or want me to speak at your event, my inbox is always open. Whether I just want to say hi, I'll try my best to get back to you! Cheers!&lt;\/p&gt;\n      &lt;a href=\"mailto:example@kinsta.com\" className='cta-btn'&gt;Say Hello&lt;\/a&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Contact;<\/code><\/pre>\n<p>Plaats je e-mailadres in de tag <code>a<\/code>, zodat de knop een e-mailprogramma start met een aan jou gericht bericht.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/contact-component.jpg\" alt=\"Contact component voor de Next.js portfoliowebsite\" width=\"1600\" height=\"312\"><figcaption class=\"wp-caption-text\">Contact component<\/figcaption><\/figure>\n<p>Je hebt nu met succes alle componenten voor je portfolio applicatie gemaakt. De volgende stap is ze toe te voegen aan je indexpagina. Navigeer naar het bestand <strong>pages\/index.js<\/strong> &#8211; dat standaard wordt aangemaakt &#8211; en vervang de code ervan door het volgende.<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/index.js\n\nimport Hero from '@\/components\/Hero';\nimport About from '@\/components\/About';\nimport Skills from '@\/components\/Skills';\nimport Projects from '@\/components\/Projects';\nimport Contact from '@\/components\/Contact';\n\nimport Head from 'next\/head';\n\nconst Home = () =&gt; {\n  return (\n    &lt;&gt;\n      &lt;Head&gt;\n        &lt;title&gt;Joel's Portfolio&lt;\/title&gt;\n        &lt;meta name=\"description\" content=\"Joel's Portfolio\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/favicon.ico\" \/&gt;\n      &lt;\/Head&gt;\n      &lt;div&gt;\n        &lt;Hero \/&gt;\n        &lt;About \/&gt;\n        &lt;Skills \/&gt;\n        &lt;Projects \/&gt;\n        &lt;Contact \/&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  );\n};\n\nexport default Home;<\/code><\/pre>\n<p>Als je nu je applicatie uitvoert, zul je zien dat er een volledige <a href=\"https:\/\/kinsta.com\/nl\/blog\/portfoliowebsite\/\">portfoliowebsite<\/a> is gemaakt. Laten we tot slot, voordat je je applicatie inzet, een dependency installeren. Een voordeel van het gebruik van Next.js zijn de vele mogelijkheden die het biedt, zoals bestandsgebaseerde routing, optimalisatie van afbeeldingen, en nog veel meer.<\/p>\n<p>Afbeeldingsoptimalisatie wordt afgehandeld met de Next.js <code>Image<\/code> component. Voordat je een applicatie in productie neemt die de Next.js Image component gebruikt, wordt het sterk aangeraden om <a href=\"https:\/\/www.npmjs.com\/package\/sharp\">sharp<\/a> te installeren. Je kunt dit doen door naar je terminal te navigeren, ervoor te zorgen dat je in de map van je project bent, en dan het volgende commando uit te voeren:<\/p>\n<pre><code class=\"language-bash\">npm i sharp<\/code><\/pre>\n<p>Je kunt nu je applicatie deployen, en de images zullen goed werken met de volledige optimalisatie die Next.js biedt.<\/p>\n<h2>Zo deploy je een Next.js applicatie naar Kinsta<\/h2>\n<p>Als je eenmaal tevreden bent met je portfolio waarin je beste ontwikkelingswerk en belangrijke informatie te zien is, wil je het waarschijnlijk delen met anderen, toch? Laten we eens kijken hoe je dat doet met behulp van GitHub en Kinsta&#8217;s Applicatie Hosting platform.<\/p>\n<h3>Je code naar GitHub pushen<\/h3>\n<p>Er zijn verschillende manieren om codes naar GitHub te pushen, maar laten we voor deze tutorial Git gebruiken. <a href=\"https:\/\/kinsta.com\/nl\/blog\/git-voor-webdevelopment\/\">Git wordt veel gebruikt bij softwareontwikkeling<\/a> omdat het een betrouwbare en effici\u00ebnte manier is om codewijzigingen te beheren, samen te werken aan projecten en de versiegeschiedenis bij te houden.<\/p>\n<p>Je kunt je code uploaden naar GitHub met behulp van de volgende stappen:<\/p>\n<p>Maak eerst een nieuwe repository aan (net als een lokale map om je code in op te slaan). Je kunt dit doen door in te loggen op je GitHub account, te klikken op de <strong>+<\/strong> knop in de rechterbovenhoek van het scherm en <strong>New<\/strong><strong>\u00a0repository<\/strong> te selecteren uit het dropdownmenu, zoals te zien is in de afbeelding hieronder.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/Create-a-new-repository-on-GitHub.jpg\" alt=\"Maak een nieuwe GitHub repository aan.\" width=\"1600\" height=\"770\"><figcaption class=\"wp-caption-text\">Maak een nieuwe GitHub repository aan.<\/figcaption><\/figure>\n<p>De volgende stap is om je repository een naam te geven, een beschrijving toe te voegen (optioneel), en te selecteren of je wilt dat je repository openbaar of priv\u00e9 is. Klik dan op <strong>Create repository<\/strong>. Je kunt nu je <a href=\"https:\/\/kinsta.com\/nl\/blog\/zo-push-je-code-naar-github\/\">code naar de nieuwe GitHub repository pushen<\/a>.<\/p>\n<p>Alles wat nodig is om je code met Git te pushen is de URL van het repository, die je kunt vinden op de hoofdpagina van het repository, onder de knop <strong>Clone or download<\/strong>, of in de stappen die verschijnen na het aanmaken van een repository.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/how-to-get-repository-URL.jpg\" alt=\"Toegang tot je GitHub repository URL\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">Toegang tot je GitHub repository URL<\/figcaption><\/figure>\n<p>Je kunt je voorbereiden op het pushen van je code door je terminal of commandoprompt te openen en naar de map te navigeren die je project bevat. Gebruik het volgende commando om een lokaal Git repository te initialiseren:<\/p>\n<pre><code class=\"language-bash\">git init<\/code><\/pre>\n<p>Voeg nu je code toe aan de lokale Git repository met het volgende commando:<\/p>\n<pre><code class=\"language-bash\">git add .<\/code><\/pre>\n<p>Bovenstaand commando voegt alle bestanden in de huidige map en zijn submappen toe aan de nieuwe Git repository. Je kunt nu je wijzigingen vastleggen met het volgende commando:<\/p>\n<pre><code class=\"language-bash\">git commit -m \"my first commit\"<\/code><\/pre>\n<p><strong>Opmerking<\/strong>: Je kunt &#8220;my first commit&#8221; vervangen door je eigen korte boodschap waarin je de wijzigingen beschrijft.<\/p>\n<p>Tenslotte kun je je code naar GitHub pushen met de volgende commando&#8217;s:<\/p>\n<pre><code class=\"language-bash\">\ngit remote add origin [repository URL]\ngit push -u origin master<\/code><\/pre>\n<p><strong>Opmerking<\/strong>: Zorg ervoor dat je &#8220;[repository URL]&#8221; vervangt door de URL van je eigen GitHub repository.<\/p>\n<p>Als je deze stappen hebt uitgevoerd, is je code naar GitHub gepushd en toegankelijk via de URL van je repository. Je kunt je repository nu deployen naar Kinsta.<\/p>\n<h3>Je portfolio deployen naar Kinsta<\/h3>\n<p>Het deployen naar Kinsta gebeurt in slechts enkele minuten. Begin bij het <a href=\"https:\/\/my.kinsta.com\/?lang=nl\">My Kinsta<\/a> dashboard om in te loggen of je account aan te maken.<\/p>\n<p>Vervolgens <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">autoriseer je\u00a0Kinsta op GitHub<\/a> in deze snelle stappen:<\/p>\n<ol start=\"1\">\n<li>Klik op <strong>Applicaties<\/strong>\u00a0in de linker zijbalk<\/li>\n<li>Klik op <strong>Dienst toevoegen<\/strong><\/li>\n<li>Klik in het dropdownmenu op <strong>Applicatie<\/strong> omdat je een Next.js applicatie op Kinsta wilt deployen.<\/li>\n<\/ol>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/host-application-on-kinsta.jpg\" alt=\"Maak een applicatieproject aan in MyKinsta\" width=\"1600\" height=\"503\"><figcaption class=\"wp-caption-text\">Maak een applicatieproject aan in MyKinsta<\/figcaption><\/figure>\n<p>Er verschijnt een modal waarmee je de repository kunt selecteren die je wilt deployen.<\/p>\n<p>Als je meerdere branches in je repository hebt, kun je degene selecteren die je wilt deployen. Je kunt ook een naam toekennen aan deze applicatie. Zorg ervoor dat je een <a href=\"https:\/\/kinsta.com\/nl\/docs\/service-informatie\/datacenter-locaties\/#application-and-database-hosting-data-centers\">datacenterlocatie<\/a> kiest uit de beschikbare 24, en dan zal Kinsta automatisch een startcommando detecteren.<\/p>\n<figure style=\"width: 1438px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/deploying_application_to_kinsta.gif\" alt=\"Automatisch startcommando detecteren\" width=\"1438\" height=\"736\"><figcaption class=\"wp-caption-text\">Automatisch startcommando detecteren<\/figcaption><\/figure>\n<p>Op dit punt zal je applicatie beginnen te deployen. Binnen enkele minuten wordt een link gegeven om toegang te krijgen tot de uitgezette versie van je applicatie. In dit geval is dat: <strong>https:\/\/kinsta-developer-portfolio-ir8w8.kinsta.app\/<\/strong><\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/deployemnt-link-on-kinsta.jpg\" alt=\"Deployment link op Kinsta\" width=\"1600\" height=\"720\"><figcaption class=\"wp-caption-text\">Deploymentlink op Kinsta<\/figcaption><\/figure>\n<p><strong>Opmerking<\/strong>: Automatische deployment is ingeschakeld, dus Kinsta deployt je applicatie automatisch opnieuw wanneer je wijzigingen aanbrengt in je codebase en deze naar GitHub pusht.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>In dit artikel heb je geleerd hoe je je site kunt deployen met Kinsta&#8217;s Application Hosting. Als alternatief, als je een basis applicatie\/website bouwt die geen dynamische rendering nodig heeft en niet onderhevig is aan verkeerspieken, kun je ervoor kiezen om je site te hosten met Kinsta&#8217;s <a href=\"https:\/\/kinsta.com\/static-site-hosting\">Statische Site Hosting<\/a>.<\/p>\n<\/aside>\n\n\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=vmNem6wxfSQ\"><\/kinsta-video>\n<h2>Samenvatting<\/h2>\n<p>Er zijn verschillende redenen waarom developers het gebruik van Next.js voor hun webprojecten zouden moeten overwegen. Ten eerste levert het kant-en-klaar geoptimaliseerde prestaties, met features als pre-fetching en het splitsen van code die helpen de laadtijd van pagina&#8217;s te verkorten. Ten tweede biedt het een vertrouwde ontwikkelervaring voor React developers, met ondersteuning van populaire tools zoals gestileerde componenten en de nieuwste React features.<\/p>\n<p>Kinsta biedt ondersteuning voor verschillende deploymentopties voor Next.js, waaronder traditionele servergebaseerde hosting en moderne serverloze platforms. Hierdoor kunnen developers de deploymentoptie kiezen die het beste bij hun behoeften past, terwijl ze profiteren van de prestatie-optimalisaties en andere voordelen van het framework.<\/p>\n<p>In deze tutorial heb je stap voor stap geleerd hoe je een responsieve portfoliosite bouwt met Next.js en deze vervolgens deployt op Kinsta.<\/p>\n<p>Je kunt <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Kinsta&#8217;s Applicatie Hosting gratis proberen<\/a>, en als het je bevalt, kies dan voor ons <a href=\"https:\/\/sevalla.com\/pricing\/\">Hobby<\/a> abonnement <strong>vanaf $7\/maand<\/strong>.<\/p>\n<p>Nu is het jouw beurt om jezelf uit te dagen: voeg meer features toe aan je pas ontwikkelde portfoliowebsite! Hier zijn een paar idee\u00ebn om je creatieve sap te laten stromen: voeg meer pagina&#8217;s toe met gedetailleerde informatie, integreer een blog met MDX, introduceer wat animatie. Deel je projecten en ervaringen in de comments hieronder!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Een developerportfolio is een verzameling voorbeelden van je werk en projecten die je vaardigheden en ervaring laten zien. Een sterk portfolio onderscheidt je van andere kandidaten &#8230;<\/p>\n","protected":false},"author":287,"featured_media":50941,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[847],"class_list":["post-50940","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-javascript-frameworks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zo bouw en deploy je een developerportfolio met Next.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta&#039;s Applicatie Hosting platform.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo bouw en deploy je een developerportfolio met Next.js\" \/>\n<meta property=\"og:description\" content=\"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta&#039;s Applicatie Hosting platform.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T12:11:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-19T12:31:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta&#039;s Applicatie Hosting platform.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Zo bouw en deploy je een developerportfolio met Next.js\",\"datePublished\":\"2023-03-09T12:11:08+00:00\",\"dateModified\":\"2023-10-19T12:31:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\"},\"wordCount\":2993,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\",\"name\":\"Zo bouw en deploy je een developerportfolio met Next.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"datePublished\":\"2023-03-09T12:11:08+00:00\",\"dateModified\":\"2023-10-19T12:31:27+00:00\",\"description\":\"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta's Applicatie Hosting platform.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript frameworks\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/javascript-frameworks\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo bouw en deploy je een developerportfolio met Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo bouw en deploy je een developerportfolio met Next.js - Kinsta\u00ae","description":"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta's Applicatie Hosting platform.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo bouw en deploy je een developerportfolio met Next.js","og_description":"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta's Applicatie Hosting platform.","og_url":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-03-09T12:11:08+00:00","article_modified_time":"2023-10-19T12:31:27+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta's Applicatie Hosting platform.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Joel Olawanle","Geschatte leestijd":"19 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Zo bouw en deploy je een developerportfolio met Next.js","datePublished":"2023-03-09T12:11:08+00:00","dateModified":"2023-10-19T12:31:27+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/"},"wordCount":2993,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/","url":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/","name":"Zo bouw en deploy je een developerportfolio met Next.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","datePublished":"2023-03-09T12:11:08+00:00","dateModified":"2023-10-19T12:31:27+00:00","description":"Leer hoe je een ontwikkelaarsportfolio bouwt met Next.js. Deploy direct vanuit je GitHub repository naar Kinsta's Applicatie Hosting platform.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/next-js-portfolio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"JavaScript frameworks","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/javascript-frameworks\/"},{"@type":"ListItem","position":3,"name":"Zo bouw en deploy je een developerportfolio met Next.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=50940"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50940\/revisions"}],"predecessor-version":[{"id":56147,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50940\/revisions\/56147"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/translations\/dk"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50940\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/50941"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=50940"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=50940"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=50940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}