{"id":66610,"date":"2023-03-09T13:10:34","date_gmt":"2023-03-09T12:10:34","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=66610&#038;preview=true&#038;preview_id=66610"},"modified":"2023-06-08T14:05:57","modified_gmt":"2023-06-08T13:05:57","slug":"portfolio-next-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/","title":{"rendered":"Come Costruire e Distribuire un Portfolio da Developer con Next.js"},"content":{"rendered":"<p>Il portfolio di un developer \u00e8 una raccolta di esempi di lavori e progetti che mettono in mostra le capacit\u00e0 e l&#8217;esperienza di uno sviluppatore. Un portfolio solido vi distingue dagli altri candidati quando cercate lavoro. Non solo: un portfolio pu\u00f2 anche essere uno strumento prezioso per fare rete, tenere traccia delle vostre conoscenze e affermarvi come esperti della materia.<\/p>\n<p>In questo tutorial imparerete a creare un portfolio da developer utilizzando Next.js e a distribuirlo direttamente dal vostro repository GitHub sulla piattaforma di <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting di Applicazioni<\/a> di Kinsta, che offre un dominio <em>.kinsta.app<\/em> gratuito per permettervi di mettere in linea il vostro lavoro rapidamente.<\/p>\n<p>Ecco una demo live del <a href=\"https:\/\/kinsta-developer-portfolio-ir8w8.kinsta.app\/\" target=\"_blank\" rel=\"noopener noreferrer\">portfolio da developer<\/a> che costruirete con Next.js.<\/p>\n<p>\u00c8 possibile accedere al <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\">repository GitHub del progetto<\/a> se si desidera dare un&#8217;occhiata pi\u00f9 da vicino, oppure si pu\u00f2 utilizzare questo template di <a href=\"https:\/\/github.com\/olawanlejoel\/kinsta-portfolio-starter\">progetto di portfolio di avvio<\/a> selezionando <strong>Use this template<\/strong> &gt; <strong>Create a new repository<\/strong>. Questo copier\u00e0 il codice iniziale in un nuovo repository. Il progetto iniziale contiene i codici di base, come gli stili, un link al CDN di Font Awesome, le immagini e la struttura di base.<\/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>Requisiti\/Prequisiti<\/h2>\n<p>Questo \u00e8 un tutorial di tipo &#8220;follow-along&#8221;. Sar\u00e0 pi\u00f9 facile capire il codice con:<\/p>\n<ul>\n<li>Una conoscenza di base di <a href=\"https:\/\/kinsta.com\/it\/blog\/html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/it\/blog\/best-practice-css\/\">CSS<\/a> e <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a><\/li>\n<li>Un conoscenza di base di <a href=\"https:\/\/kinsta.com\/it\/blog\/react-js\/\">React<\/a> e forse di Next.js<\/li>\n<li>Node.js e npm (<a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-npm\/\">Node Package Manager<\/a>) o yarn installati sul computer<\/li>\n<\/ul>\n<h2>Perch\u00e9 Next.js?<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/next-js\/\">Next.js<\/a> \u00e8 un <a href=\"https:\/\/kinsta.com\/it\/blog\/librerie-javascript\/\">framework di librerie JavaScript<\/a> open-source basato su React che pu\u00f2 essere utilizzato per un&#8217;ampia gamma di progetti di sviluppo web perch\u00e9 semplifica la creazione di applicazioni statiche e renderizzate lato server. Semplifica il processo sfruttando le migliori caratteristiche di React e ottimizzando le prestazioni di rendering per migliorare l&#8217;esperienza dell&#8217;utente. Alcuni dei casi d&#8217;uso pi\u00f9 comuni di Next.js sono:<\/p>\n<ul>\n<li><strong>Creazione di siti web statici<\/strong>: Next.js pu\u00f2 creare siti web statici che sono veloci, facili da distribuire e richiedono una manutenzione minima, come il sito web del portfolio da developer che realizzeremo in questo tutorial.<\/li>\n<li><strong>Creare siti web dinamici<\/strong>: Next.js permette di creare siti web dinamici che possono cambiare il contenuto in base alle interazioni degli utenti o all&#8217;acquisizione di dati sul lato server.<\/li>\n<\/ul>\n<ul>\n<li><strong>Creare siti web di ecommerce<\/strong>: Next.js \u00e8 adatto alla creazione di siti web di e-commerce che richiedono il rendering lato server per migliorare la SEO e le prestazioni.<\/li>\n<\/ul>\n<ul>\n<li><strong>Creazione di applicazioni web progressive (PWA)<\/strong>: Next.js supporta la creazione di PWA, applicazioni web che funzionano come applicazioni native e possono essere installate sul dispositivo dell&#8217;utente.<\/li>\n<\/ul>\n<h2>Come Configurare l&#8217;Ambiente di Sviluppo di Next.js<\/h2>\n<p>Per configurare un ambiente di sviluppo per Next.js, prima di tutto <a href=\"https:\/\/kinsta.com\/it\/blog\/come-installare-node-js\/\">installate Node.js<\/a> sul vostro computer, perch\u00e9 userete il comando <code>npx<\/code> per eseguire i pacchetti npm senza doverli installare globalmente sul vostro sistema. Una volta fatto questo, \u00e8 possibile creare un progetto Next.js eseguendo il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npx create-next-app@latest my-portfolio<\/code><\/pre>\n<p>Apparir\u00e0 un prompt che vi chieder\u00e0 di confermare alcune dipendenze aggiuntive. A questo punto potete eseguire <code>npm run dev<\/code> per rendere disponibile la vostra applicazione su <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=\"Codice che mostra un nuovo progetto next.js.\" width=\"1600\" height=\"569\"><figcaption class=\"wp-caption-text\">Creare un nuovo progetto Next.js.<\/figcaption><\/figure>\n<p>Quando create un progetto Next.js utilizzando il comando <code>npx<\/code>, viene creata automaticamente una struttura di cartelle con le seguenti directory principali:<\/p>\n<ol start=\"1\">\n<li><strong>pages<\/strong>: Questa cartella contiene le pagine dell&#8217;applicazione, che vengono indirizzate automaticamente in base al loro nome. Ad esempio, <strong>pages\/index.js<\/strong> sar\u00e0 la pagina iniziale, mentre <strong>pages\/about.js<\/strong> sar\u00e0 la pagina informativa.<\/li>\n<li><strong>public<\/strong>: Questa cartella contiene file statici che possono essere serviti direttamente, come immagini, font e altre risorse.<\/li>\n<li><strong>components<\/strong>: Questa cartella \u00e8 facoltativa e contiene componenti dell&#8217;interfaccia utente riutilizzabili che possono essere utilizzati in tutta l&#8217;applicazione.<\/li>\n<li><strong>styles<\/strong>: Anche questa cartella \u00e8 facoltativa e contiene gli stili globali che possono essere applicati a tutta l&#8217;applicazione.<\/li>\n<\/ol>\n<p>A seconda della configurazione e delle caratteristiche specifiche, possono essere generati altri file e directory, ma queste sono le directory principali di un progetto Next.js di base.<\/p>\n<p>Per questo tutorial, tutto ci\u00f2 che costruiremo apparir\u00e0 sulla pagina indice (il nostro sito web a una pagina) e includerete i componenti per le varie sezioni come hero, about, projects e altre.<\/p>\n<h2>Come Costruire un Portfolio da Developer Responsive con Next.js<\/h2>\n<p>Un portfolio \u00e8 tipicamente composto da componenti come questi:<\/p>\n<ul>\n<li>Componente Navbar<\/li>\n<li>Componente Hero<\/li>\n<li>Componente Informazioni<\/li>\n<li>Componente Competenze<\/li>\n<li>Componente Progetti<\/li>\n<li>Componente Contatti<\/li>\n<li>Componente pi\u00e8 di pagina<\/li>\n<\/ul>\n<p>I componenti Navbar e Footer devono apparire su tutte le pagine se il portfolio ha pi\u00f9 di una pagina. Questo pu\u00f2 essere ottenuto in Next.js definendo un layout.<\/p>\n<h3>Definire i Layout in Next.js<\/h3>\n<p>In Next.js, uno dei modi per definire una struttura coerente per i componenti che appaiono su ogni pagina di un sito web \u00e8 stabilire un layout. Il layout di solito include elementi come l&#8217;intestazione, il menu di navigazione e il pi\u00e8 di pagina visualizzati in tutte le pagine del sito.<\/p>\n<p>Iniziate creando una cartella components nella cartella <strong>src<\/strong> (sorgente) del vostro progetto Next.js. Successivamente, create i componenti Navbar e Footer che verranno utilizzati all&#8217;interno del componente Layout.<\/p>\n<p>Ecco il componente Navbar 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>Ecco il componente Footer 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>Nota:<\/strong> affinch\u00e9 le icone di Font Awesome funzionino, dovete installare Font Awesome nel vostro progetto o utilizzare il suo CDN. Potete aggiungere il link del CDN al vostro file <strong>_document.js<\/strong> in questo modo:<\/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>Nota:<\/strong> se collegate una versione diversa di Font Awesome tramite il CDN, dovrete inserire l&#8217;hash <code>integrity<\/code> appropriato per quella versione.<\/p>\n<p>Dopo aver creato tutti i componenti necessari per il layout, potete creare il componente Layout stesso e aggiungerlo alle vostre pagine avvolgendo il contenuto della pagina al suo interno.<\/p>\n<p>Il componente Layout accetter\u00e0 un prop &lt;code&gt;children&lt;\/code&gt; che vi permetter\u00e0 di accedere al contenuto delle pagine Next.js.<\/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>A questo punto, avete creato con successo il componente Layout che contiene la barra di navigazione e il pi\u00e8 di pagina con i prop children posizionati correttamente. Ora potete aggiungere il componente Layout alle vostre pagine avvolgendovi il contenuto della pagina. Questo verr\u00e0 fatto nel file <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>Avete quindi creato con successo un layout per il vostro portfolio da sviluppatrici o sviluppatori. Per questo portfolio, ci concentreremo maggiormente su Next.js e su come distribuire il vostro sito web su Kinsta. Potete quindi copiare gli stili nel file <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\/blob\/main\/src\/styles\/globals.css\">styles\/globals.css<\/a> del progetto. Se lanciate il sito web del portfolio in modalit\u00e0 dev, dovreste vedere il layout della vostra applicazione.<\/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=\"Immagine di un componente di layout\" width=\"1600\" height=\"619\"><figcaption class=\"wp-caption-text\">Componente Layout<\/figcaption><\/figure>\n<p>Ora \u00e8 il momento di dare al vostro sito web portfolio il contenuto appropriato.<\/p>\n<h3>Creare i Componenti del Portfolio<\/h3>\n<p>Ora potete creare componenti individuali per ogni sezione del portfolio da developer. Tutti questi componenti saranno importati nella pagina indice del vostro progetto Next.js, in modo da essere visualizzati quando lancerete il progetto con <code>npm run dev<\/code>.<\/p>\n<h4>Il Componente Hero<\/h4>\n<p>Il componente Hero \u00e8 la prima sezione al di sotto della Navbar, il cui scopo principale \u00e8 quello di catturare l&#8217;attenzione dell&#8217;utente e dargli un&#8217;idea del sito web o dell&#8217;applicazione.<\/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>Nel codice qui sopra, noterete che il <a href=\"https:\/\/nextjs.org\/docs\/api-reference\/next\/image\" target=\"_blank\" rel=\"noopener noreferrer\">componente Next.js Image<\/a> viene utilizzato al posto del tag HTML <code>img<\/code> per aggiungere l&#8217;immagine, perch\u00e9 consente l&#8217;ottimizzazione automatica delle immagini, il loro ridimensionamento e molto altro.<\/p>\n<p>Nel componente About, noterete anche che \u00e8 stato aggiunto un semplice paragrafo per parlare dello sviluppatore e alcune icone social di Font Awesome per aggiungere i link social.<\/p>\n<p>Ecco come dovrebbe apparire il componente Hero:<\/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=\"Componente eroe di Next.js per un sito web di portfolio\" width=\"1600\" height=\"695\"><figcaption class=\"wp-caption-text\">Componente Hero<\/figcaption><\/figure>\n<p>Potete aggiungere altri contenuti al componente Hero, modificare gli stili nel file <strong>styles\/globals.css<\/strong> o addirittura ricreare questa sezione a modo vostro.<\/p>\n<h4>Il Componente About<\/h4>\n<p>Il componente About ha lo scopo di fornire ai lettori o alle persone che visitano il vostro portfolio ulteriori informazioni su di voi, in quanti paragrafi desiderate. Se volete raccontare qualcosa di pi\u00f9 su di voi, potete creare una pagina dedicata &#8220;Chi sono&#8221; e aggiungere un pulsante in questa sezione per permettere agli utenti di saperne di pi\u00f9 su di voi.<\/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>Il codice qui sopra contiene due paragrafi di testo sullo sviluppatore insieme a un&#8217;immagine. Questo \u00e8 l&#8217;aspetto che dovrebbe avere la sezione About:<\/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=\"Il componente About in un sito di portfolio Next.js\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">Componente About<\/figcaption><\/figure>\n<p>Potete sempre modificare gli stili per aggiungere altre immagini e molto altro.<\/p>\n<h4>Il Componente Competenze<\/h4>\n<p>Il componente delle competenze ha lo scopo di mostrare alcune delle tecnologie pi\u00f9 utilizzate dal developer o le tecnologie che ha utilizzato in passato.<\/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=\"Componente competenze\" width=\"1600\" height=\"294\"><figcaption class=\"wp-caption-text\">Componente competenze<\/figcaption><\/figure>\n<p>Potete semplificare la manutenzione creando un array in un file esterno e poi importarlo nel componente delle competenze, in modo da poterlo scorrere invece di duplicare codice simile.<\/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>Nel codice qui sopra, viene creata una scheda per ogni competenza e ogni scheda conterr\u00e0 l&#8217;icona della tecnologia di font-awesome e il nome della tecnologia. Potete anche aggiungere altri stili e modificare il codice per renderlo pi\u00f9 attraente e unico.<\/p>\n<h4>Il Componente Progetti<\/h4>\n<p>Il componente progetti \u00e8 una delle sezioni pi\u00f9 importanti del portfolio di sviluppatrici e sviluppatori. I progetti forniscono una prova tangibile delle competenze e delle abilit\u00e0 di un developer e mostrano la sua capacit\u00e0 di applicare le proprie conoscenze ai problemi del mondo reale.<\/p>\n<p>Ogni progetto includer\u00e0 una breve descrizione del progetto, un link al codice sorgente (qui utilizziamo i link di <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-github\/\">GitHub<\/a>) e qualsiasi altro dettaglio vogliate aggiungere.<\/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=\"Componente Next.js projects per il sito web del portfolio\" width=\"1600\" height=\"847\"><figcaption class=\"wp-caption-text\">Componente dei progetti<\/figcaption><\/figure>\n<p>Potete creare un array per contenere i dettagli di ogni progetto e poi importarlo nel vostro componente per evitare di codificarli.<\/p>\n<p>Creiamo un file <strong>data.js<\/strong> per memorizzare l&#8217;array di dati del progetto. Potete memorizzare questo file nella cartella del componente o nella cartella <strong>pages\/api<\/strong>. Per questa demo, lo memorizzer\u00f2 nella cartella dei componenti. Questo array conterr\u00e0 un oggetto per ogni progetto e l&#8217;oggetto conterr\u00e0 il nome del progetto, la descrizione e il link GitHub.<\/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>A questo punto, potete creare un componente di progetto che utilizzi questi dati eseguendo un semplice loop. \u00c8 possibile utilizzare qualsiasi metodo di iterazione JavaScript, ma per questo tutorial potete utilizzare il metodo array JavaScript <code>map()<\/code> per eseguire un ciclo attraverso l&#8217;array di dati dopo averlo importato nel componente Progetti.<\/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>Nel codice qui sopra, avete evitato le ripetizioni eseguendo il looping attraverso l&#8217;array per inserire tutti i progetti nel componente Progetti, rendendo pi\u00f9 facile la manutenzione e l&#8217;aggiunta di altri progetti.<\/p>\n<h4>Il Componente Contatti<\/h4>\n<p>Uno dei motivi per creare un portfolio da developer \u00e8 che i vostri potenziali clienti potranno contattarvi. Ad esempio, potrebbero inviarvi un&#8217;e-mail, cosa che faciliteremo in questo componente Contatti.<\/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>Inserite il vostro indirizzo e-mail nel tag <code>a<\/code> in modo che il pulsante avvii un&#8217;applicazione e-mail con un messaggio indirizzato a voi.<\/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=\"Componente di contatto per il sito web di portfolio Next.js\" width=\"1600\" height=\"312\"><figcaption class=\"wp-caption-text\">Componente Contatto<\/figcaption><\/figure>\n<p>Ora avete creato con successo tutti i componenti per la vostra applicazione portfolio. Il prossimo passo sar\u00e0 quello di aggiungerli alla vostra pagina indice. Andate al file <strong>pages\/index.js<\/strong> &#8211; che viene creato di default &#8211; e sostituitene il codice con il seguente.<\/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>Quando eseguirete l&#8217;applicazione, noterete che \u00e8 stato creato un <a href=\"https:\/\/kinsta.com\/it\/blog\/sito-web-portfolio\/\">sito web di portfolio<\/a> completo. Infine, prima di distribuire l&#8217;applicazione, installiamo una dipendenza. Un vantaggio dell&#8217;utilizzo di Next.js \u00e8 rappresentato dalle numerose funzionalit\u00e0 che offre, come il routing basato su file, l&#8217;ottimizzazione delle immagini e molto altro ancora.<\/p>\n<p>L&#8217;ottimizzazione delle immagini \u00e8 gestita dal componente Next.js <code>Image<\/code>. Prima di distribuire in produzione un&#8217;applicazione che utilizza il componente Next.js Image, \u00e8 fortemente consigliato installare <a href=\"https:\/\/www.npmjs.com\/package\/sharp\">sharp<\/a>. Per farlo, accedete al vostro terminale, assicuratevi di essere nella directory del vostro progetto ed eseguite il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npm i sharp<\/code><\/pre>\n<p>Ora potete distribuire la vostra applicazione e le immagini funzioneranno correttamente con l&#8217;ottimizzazione completa offerta da Next.js.<\/p>\n<h2>Come Distribuire l&#8217;Applicazione Next.js su Kinsta<\/h2>\n<p>Una volta soddisfatti del vostro portfolio con i vostri migliori lavori di sviluppo e le informazioni pi\u00f9 importanti, probabilmente vorrete condividerlo con gli altri, giusto? Vediamo come farlo utilizzando GitHub e la piattaforma di Hosting di Applicazioni Kinsta.<\/p>\n<h3>Inviare il Codice a GitHub<\/h3>\n<p>Esistono vari modi per inviare il codice a GitHub, ma per questo tutorial useremo Git. <a href=\"https:\/\/kinsta.com\/it\/blog\/git-per-lo-sviluppo-web\/\">Git \u00e8 molto utilizzato nello sviluppo di software<\/a> perch\u00e9 offre un modo affidabile ed efficiente per gestire le modifiche al codice, collaborare ai progetti e mantenere la cronologia delle versioni.<\/p>\n<p>Potete caricare il codice su GitHub seguendo i seguenti passaggi:<\/p>\n<p>Per prima cosa, create un nuovo repository (come una cartella locale in cui salvare il codice). Potete farlo accedendo al vostro account GitHub, cliccando sul pulsante <strong>+<\/strong> nell&#8217;angolo in alto a destra dello schermo e selezionando <strong>Nuovo repository<\/strong> dal menu a tendina, come mostrato nell&#8217;immagine sottostante.<\/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=\"Creazione di un nuovo repository GitHub\" width=\"1600\" height=\"770\"><figcaption class=\"wp-caption-text\">Creare un nuovo repository GitHub.<\/figcaption><\/figure>\n<p>Il passo successivo consiste nell&#8217;assegnare un nome al repository, aggiungere una descrizione (facoltativa) e selezionare se il repository deve essere pubblico o privato. Poi cliccate su <strong>Crea repository<\/strong>. Ora potete inviare il vostro codice al nuovo repository GitHub.<\/p>\n<p>Tutto ci\u00f2 che serve per eseguire il push del codice con Git \u00e8 l&#8217;URL del repository, che troverete nella pagina principale del repository, sotto il pulsante <strong>Clona o scarica<\/strong>, oppure nei passaggi che appaiono dopo la creazione di un 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=\"Accesso all'URL del proprio repository GitHub\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">Accedere all&#8217;URL del repository GitHub<\/figcaption><\/figure>\n<p>Potete prepararvi a eseguire il push del codice aprendo il terminale o il prompt dei comandi e navigando nella directory che contiene il vostro progetto. Usate il seguente comando per inizializzare un repository Git locale:<\/p>\n<pre><code class=\"language-bash\">git init<\/code><\/pre>\n<p>Ora aggiungete il vostro codice al repository Git locale usando il seguente comando:<\/p>\n<pre><code class=\"language-bash\">git add .<\/code><\/pre>\n<p>Il comando precedente aggiunge tutti i file della directory corrente e delle sue sottodirectory al nuovo repository Git. Ora potete effettuare il commit delle vostre modifiche utilizzando il seguente comando:<\/p>\n<pre><code class=\"language-bash\">git commit -m \"my first commit\"<\/code><\/pre>\n<p><strong>Nota:<\/strong> \u00e8 possibile sostituire &#8220;il mio primo commit&#8221; con un breve messaggio che descriva le modifiche apportate.<\/p>\n<p>Infine, inviate il vostro codice a GitHub utilizzando i seguenti comandi:<\/p>\n<pre><code class=\"language-bash\">\ngit remote add origin [repository URL]\ngit push -u origin master<\/code><\/pre>\n<p><strong>Nota:<\/strong> assicuratevi di sostituire &#8220;[URL del repository]&#8221; con l&#8217;URL del vostro repository GitHub.<\/p>\n<p>Una volta completati questi passaggi, il vostro codice verr\u00e0 inviato a GitHub e sar\u00e0 accessibile attraverso l&#8217;URL del repository. Ora potete distribuire il vostro repository su Kinsta.<\/p>\n<h3>Distribuire il Portfolio su Kinsta<\/h3>\n<p>La distribuzione su Kinsta avviene in pochi minuti. Iniziate dal cruscotto <a href=\"https:\/\/my.kinsta.com\/?lang=it\">My Kinsta<\/a> per accedere o creare il vostro account.<\/p>\n<p>Successivamente, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">autorizzerete Kinsta su GitHub<\/a> in questi rapidi passaggi:<\/p>\n<ol start=\"1\">\n<li>Cliccate su <strong>Applicazioni<\/strong> nella barra laterale sinistra<\/li>\n<li>Cliccate su <strong>Aggiungi servizio<\/strong><\/li>\n<li>Dal menu a tendina, cliccate su <strong>Applicazione<\/strong>, poich\u00e9 volete distribuire un&#8217;applicazione Next.js su Kinsta.<\/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=\"Creare un progetto di applicazione in MyKinsta\" width=\"1600\" height=\"503\"><figcaption class=\"wp-caption-text\">Creare un progetto di applicazione in MyKinsta<\/figcaption><\/figure>\n<p>Apparir\u00e0 una maschera attraverso la quale potrete selezionare il repository che desiderate distribuire.<\/p>\n<p>Se avete pi\u00f9 branch nel vostro repository, potete selezionare quello che desiderate distribuire. Potete anche assegnare un nome a questa applicazione. Assicuratevi di selezionare un <a href=\"https:\/\/kinsta.com\/it\/docs\/informazioni-sul-servizio\/sedi-data-center\/#application-and-database-hosting-data-centers\">centro dati<\/a> tra quelli disponibili all&#8217;indirizzo 24, dopodich\u00e9 Kinsta rilever\u00e0 automaticamente un comando di avvio.<\/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=\"Rilevamento automatico del comando di avvio\" width=\"1438\" height=\"736\"><figcaption class=\"wp-caption-text\">Rilevamento automatico del comando di avvio<\/figcaption><\/figure>\n<p>A questo punto, la vostra applicazione inizier\u00e0 ad essere distribuita. Entro pochi minuti, verr\u00e0 fornito un link per accedere alla versione distribuita della vostra applicazione. In questo caso si tratta di: <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=\"Link di distribuzione su Kinsta\" width=\"1600\" height=\"720\"><figcaption class=\"wp-caption-text\">Link di distribuzione su Kinsta<\/figcaption><\/figure>\n<p><strong>Nota:<\/strong> il deploy automatico \u00e8 stato abilitato, quindi Kinsta reinstalla automaticamente la vostra applicazione ogni volta che apportate delle modifiche alla vostra base di codice e la inviate a GitHub.<\/p>\n\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=vmNem6wxfSQ\"><\/kinsta-video>\n<h2>Riepilogo<\/h2>\n<p>Ci sono diversi motivi per cui le sviluppatrici e gli sviluppatori dovrebbero prendere in considerazione l&#8217;utilizzo di Next.js per i loro progetti web. In primo luogo, offre prestazioni ottimizzate fin dall&#8217;inizio, grazie a funzioni come il pre-fetching e la suddivisione del codice che aiutano a ridurre i tempi di caricamento delle pagine. In secondo luogo, offre un&#8217;esperienza di sviluppo familiare agli sviluppatori React, supportando strumenti popolari come i componenti in stile e le ultime funzionalit\u00e0 di React.<\/p>\n<p>Kinsta supporta diverse opzioni di distribuzione per Next.js, tra cui l&#8217;hosting tradizionale basato su server e le moderne piattaforme serverless. Questo permette ai developer di scegliere l&#8217;opzione di distribuzione pi\u00f9 adatta alle loro esigenze e di beneficiare delle ottimizzazioni delle prestazioni e di altri vantaggi del framework.<\/p>\n<p>In questo tutorial avete imparato passo dopo passo come costruire un sito di portfolio responsive utilizzando Next.js e poi distribuirlo su Kinsta.<\/p>\n<p>Potete <a href=\"https:\/\/sevalla.com\/application-hosting\/\">provare gratuitamente l&#8217;Hosting di Applicazioni di Kinsta<\/a> e, se vi piace, optare per il nostro <a href=\"https:\/\/sevalla.com\/pricing\/\">Piano Hobby<\/a> <strong>a partire da 7 dollari al mese<\/strong>.<\/p>\n<p>Ora \u00e8 il momento di sfidare voi stessi: aggiungete altre funzionalit\u00e0 al vostro sito web-portfolio appena sviluppato! Ecco alcune idee per stimolare la vostra creativit\u00e0: aggiungete altre pagine con informazioni dettagliate, integrate un blog con MDX, implementate delle animazioni. Condividete i vostri progetti e le vostre esperienze nei commenti qui sotto!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il portfolio di un developer \u00e8 una raccolta di esempi di lavori e progetti che mettono in mostra le capacit\u00e0 e l&#8217;esperienza di uno sviluppatore. Un &#8230;<\/p>\n","protected":false},"author":287,"featured_media":66611,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25918],"class_list":["post-66610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-framework-javascript"],"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>Come Costruire e Distribuire un Portfolio da Developer con Next.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.\" \/>\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\/it\/blog\/portfolio-next-js\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Costruire e Distribuire un Portfolio da Developer con Next.js\" \/>\n<meta property=\"og:description\" content=\"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T12:10:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-08T13:05:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Come Costruire e Distribuire un Portfolio da Developer con Next.js\",\"datePublished\":\"2023-03-09T12:10:34+00:00\",\"dateModified\":\"2023-06-08T13:05:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\"},\"wordCount\":2855,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\",\"name\":\"Come Costruire e Distribuire un Portfolio da Developer con Next.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"datePublished\":\"2023-03-09T12:10:34+00:00\",\"dateModified\":\"2023-06-08T13:05:57+00:00\",\"description\":\"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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\/it\/blog\/portfolio-next-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Framework JavaScript\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/framework-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come Costruire e Distribuire un Portfolio da Developer con Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Costruire e Distribuire un Portfolio da Developer con Next.js - Kinsta\u00ae","description":"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.","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\/it\/blog\/portfolio-next-js\/","og_locale":"it_IT","og_type":"article","og_title":"Come Costruire e Distribuire un Portfolio da Developer con Next.js","og_description":"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.","og_url":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-03-09T12:10:34+00:00","article_modified_time":"2023-06-08T13:05:57+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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":"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Joel Olawanle","Tempo di lettura stimato":"19 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Come Costruire e Distribuire un Portfolio da Developer con Next.js","datePublished":"2023-03-09T12:10:34+00:00","dateModified":"2023-06-08T13:05:57+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/"},"wordCount":2855,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/","url":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/","name":"Come Costruire e Distribuire un Portfolio da Developer con Next.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","datePublished":"2023-03-09T12:10:34+00:00","dateModified":"2023-06-08T13:05:57+00:00","description":"Scopri come costruire un portfolio da developer con Next.js. Distribuisci direttamente dal tuo repository GitHub alla piattaforma di Hosting di Applicazioni di Kinsta.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/portfolio-next-js\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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\/it\/blog\/portfolio-next-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Framework JavaScript","item":"https:\/\/kinsta.com\/it\/argomenti\/framework-javascript\/"},{"@type":"ListItem","position":3,"name":"Come Costruire e Distribuire un Portfolio da Developer con Next.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/66610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=66610"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/66610\/revisions"}],"predecessor-version":[{"id":70000,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/66610\/revisions\/70000"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/translations\/dk"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/66610\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/66611"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=66610"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=66610"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=66610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}