Passa al contenuto principale

Personal Portfolio

Anteprima Personal Portfolio Project Visual Studio Code Version Anteprima Portfolio Project Figma Version

Il Progetto

Portfolio personale professionale con design glassmorphism e layout a bento grid, sviluppato come progetto finale di certificazione freeCodeCamp. Un punto di svolta che ha segnato il completamento del primo grande capitolo del mio percorso di sviluppo.

Codice Sorgente

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simone Amico - freeCodeCamp Portfolio</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="page-container">
<header>
<div class="navbar-container">

<div class="navbar-logo">
<a href="/">
<img src="https://github.com/user-attachments/assets/e1edf115-1797-4e86-adb0-49251167cae8" alt="logo SA" class="logo" width="40px">
</a>
</div>

<nav class="navbar-navigation-link top-navbar-navigation-link" aria-label="Main Navigation">
<ul class="ul-list">
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/blob/main/05-survey-form/survey-form.html" class="nav-link" target="_blank" rel="noopener noreferrer">Project Survey</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/10-tribute-page" class="nav-link" target="_blank" rel="noopener noreferrer">Tribute Page</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/14-technical-documentation-page" class="nav-link" target="_blank" rel="noopener noreferrer">Technical Documentation</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/17-landing-page" class="nav-link" target="_blank" rel="noopener noreferrer">Landing Page</a></li>
</ul>
</nav>

<form action="https://github.com/simoneamico-ux-dev/my-learning-journey" method="get" target="_blank">
<button type="submit" class="navbar-button">My Learning Journey</button>
</form>

</div>
</header>

<main>
<div class="bento-container">

<div class="card hero-intro">
<div class="text-container">
<h1 class="hero-intro-first-text">Simone Amico</h1>
<h2 class="hero-intro-second-text">Future UX Engineer<br>from Turin, Italy</h2>
</div>
</div>

<a href="https://github.com/simoneamico-ux-dev" target="_blank" rel="noopener noreferrer">
<img src="https://github.com/user-attachments/assets/c1f32eee-594e-4a41-a219-c665214e481f" class="img-hero" alt="Simone Amico's Photo">
</a>

<div class="card banner-highlights">
<p>PROJECTS & HIGHLIGHTS - GROWTH IN RESPONSIVE WEB DESIGN</p>
</div>

<a href="https://github.com/simoneamico-ux-dev/my-learning-journey/blob/main/05-survey-form/survey-form.html" target="_blank" rel="noopener noreferrer">
<div class="card project-1">
<img src="https://github.com/user-attachments/assets/7e15f0dd-e08b-402c-b0e1-147d8843153f" alt="Project Survey Project">
</div>
</a>

<a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/10-tribute-page" target="_blank" rel="noopener noreferrer">
<div class="card project-2">
<img src="https://github.com/user-attachments/assets/476c29eb-422a-48d1-a423-7134e310a7fb" alt="Tribute Page Project">
</div>
</a>

<a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/14-technical-documentation-page" target="_blank" rel="noopener noreferrer">
<div class="card project-3">
<img src="https://github.com/user-attachments/assets/d82ec546-84f8-416c-a76f-6b09f0985dd4" alt="Technical Documentation Project">
</div>
</a>

<a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/17-landing-page" target="_blank" rel="noopener noreferrer">
<div class="card project-4">
<img src="https://github.com/user-attachments/assets/d3d5bc6a-b62f-44b1-ad49-2a368e2b1a5f" alt="Landing Page Project">
</div>
</a>

<div class="card status-learning">
<div class="text-container">
<p class="status-learning-first-text">Ready for</p>
<p class="status-learning-second-text">JavaScript Algorithms<br>and Data Structures!</p>
</div>
</div>

<div class="card stats-dashboard">

<div class="card stats-item stats-item-1">
<p class="stats-item-text stats-item-text-top stats-item-1-text-1">20</p>
<p class="stats-item-text stats-item-text-bottom stats-item-1-text-2">FREECODECAMP<br>PROJECT</p>
</div>

<div class="card stats-item stats-item-2">
<p class="stats-item-text stats-item-text-top stats-item-2-text-1">+300</p>
<p class="stats-item-text stats-item-text-bottom stats-item-2-text-2">HOURS<br>CODING</p>
</div>

<div class="card stats-item stats-item-3">
<p class="stats-item-text stats-item-text-top stats-item-3-text-1">5</p>
<p class="stats-item-text stats-item-text-bottom stats-item-3-text-2">CERTIFICATION<br>PROJECT</p>
</div>
</div>

<div class="card credits-thanks">
<p>Thank's<br>FreeCodeCamp.</p>
</div>

</div>
</main>

<footer>
<p class="footer-phrase"><a href="https://www.freecodecamp.org/">Portfolio for freeCodeCamp</a></p>

<nav class="navbar-navigation-link bottom-navbar-navigation-link" aria-label="Main Navigation">
<ul class="ul-list-2">
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/blob/main/05-survey-form/survey-form.html" class="nav-link" target="_blank" rel="noopener noreferrer">Project Survey</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/10-tribute-page" class="nav-link" target="_blank" rel="noopener noreferrer">Tribute Page</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/14-technical-documentation-page" class="nav-link" target="_blank" rel="noopener noreferrer">Technical Documentation</a></li>
<li><a href="https://github.com/simoneamico-ux-dev/my-learning-journey/tree/main/17-landing-page" class="nav-link" target="_blank" rel="noopener noreferrer">Landing Page</a></li>
</ul>
</nav>
</footer>
</div>

<div class="rotate-message">
<div class="rotate-card">
<div class="emoji">🔄️</div>
<p>Rotate for mobile preview</p>
<p>or watch it come alive on desktop</p>
</div>
</div>
</div>

</div>

</div>

</body>
</html>

L’incredibile realizzazione

Non avrei mai e poi mai immaginato che sarebbe successo ciò che è successo. Provo una gioia immensa perché ricordo ancora quando avevo 13 anni, in terza media, e creavo siti con piattaforme no-code (Webnode), ma non avrei mai pensato di arrivare a questo punto con un aiuto minimo dell’AI, da cui non ho mai copiato e incollato nulla.

I ringraziamenti doverosi

Ringrazio questo articolo di Massimo Avvisati, da cui è partito tutto – grazie a lui ho imparato ad applicare il glassmorphism in CSS. Ringrazio Breccia, dal cui corso ho imparato le bento grid – senza di lui non ce l’avrei mai fatta, ma soprattutto non mi sarebbe mai venuto in mente di strutturare il portfolio in questo modo. Ringrazio Claude per avermi aiutato ad acquistare un dominio professionale e guidato tra DNS e cose che non avevo mai visto così da vicino. Ma soprattutto ringrazio freeCodeCamp.

Il risultato sorprendente

Per la prima volta sono orgoglioso di mostrare la versione Visual Studio Code rispetto a quella Figma, perché l’implementazione finale ha superato il prototipo originale!

La strategia vincente

In questo caso non mi sono fatto autogol come nel progetto della Landing Page. Ho creato il prototipo Figma basandomi su ciò che pensavo di poter realizzare. Come insegna Refactoring UI: se devi aggiungere una nuova feature, moltiplica per 4 il tempo che pensi sia sufficiente. Infatti ho impiegato 1 giornata intera per il prototipo Figma e ben 3 giorni pieni di codice.

Il processo dettagliato

Primo giorno: dedicato al prototipo Figma. Ho creato lo sfondo in modo creativo cercando di riflettere il più possibile la personalità di freeCodeCamp, ma con un tocco di blu perché senza mi sono accorto che l’effetto glossy non funzionava. Poi ho cercato di adattare tutto in modo pixel-perfect, sempre basandomi su ciò che mi ha insegnato Refactoring UI. Secondo giorno: pensavo di essere alla fine, infatti avevo scritto questo nel file txt della cartella “Progress today” sul mio desktop: “Done part of html + CSS but not complete. Probably 65% of the project. Written 460 lines of code, I'm at this stage:”

Personal Portfolio Project html e CSS ma non completo

Pensavo di avere la vittoria in tasca, ma in realtà ero al massimo al 35%. Giorni successivi: i due giorni successivi hanno richiesto molte più ore, prima per aggiungere animazioni ed effetti che garantissero una piacevole esperienza desktop e l’ultimo giorno per il responsive, che è stata la parte più lunga in assoluto.

L’errore che mi ha insegnato tutto

Ho commesso un errore così grave da portarmelo fino alla fine: definire un container troppo specifico e di conseguenza posizioni relative ad esso altrettanto specifiche (le avevo prese tutte da Figma), cosa che da un lato avrebbe garantito un’esperienza identica a quella creata in Figma, ma dall’altro avrebbe richiesto media query specifiche anche per tablet e smartphone, fino al punto di creare più applicazioni in una sola – cosa che ho scoperto essere tipica dei team di sviluppo più grandi. Ho quindi optato, come per la landing page, per arrivare al 70% in 3 giorni e iniziare subito JavaScript. Non vedo l’ora!

Le scoperte tecnologiche

In questo progetto ho imparato tantissimo ed ho anche scoperto:

  • Come caricare un sito web tramite repository GitHub
  • Responsively.app – un’app incredibile che permette di aggiungere qualsiasi dispositivo per testare le dimensioni
  • Firefox Developer Edition e Safari con le impostazioni per sviluppatori

Il momento della verità

Ma non solo ora ho il certificato, ho anche un dominio personale!

Cosa ho imparato

Design System Avanzato:

  • Glassmorphism con backdrop-filter ed effetti blur
  • Bento Grid Layout per un’organizzazione visiva moderna
  • CSS Variables per un design system coerente
  • Configurazione di un dominio professionale e gestione DNS

Responsive Design Complesso:

  • Media query specifiche per dispositivo
  • Proprietà zoom per adattamenti precisi
  • Gestione dell’orientamento landscape/portrait

Animazioni e Interazioni:

  • Hover effects con scale e shadow
  • Timing delle transizioni ottimizzato
  • Stati active per feedback tattile
  • Hover media queries (hover: hover) e (pointer: fine)

Workflow Professionale:

  • Pipeline completa Figma → Codice
  • Deploy tramite repository GitHub
  • Integrazione di un dominio professionale
  • Test cross-browser con developer tools

La filosofia del 70% confermata

Non pensavo di chiudere questo capitolo così bene. Vedo già cose che non funzionano in questo portfolio, ma rimango fermo sul 70%.

Pronto per JavaScript!

Riflessione finale

Il portfolio non è perfetto, ma rappresenta tutto ciò che sono in questo momento del mio percorso. È autentico, funzionale e mostra la mia crescita. Soprattutto, mi ha dato la sicurezza di poter davvero trasformare le mie idee di design in codice funzionante. Da un ragazzino che smanettava con Webnode a uno sviluppatore che crea il proprio portfolio da zero con un dominio personalizzato. Il cerchio si è chiuso, ma è anche il punto di partenza per il prossimo capitolo.


Note sull’implementazione tecnica

Integrità del design vs requisiti di certificazione La versione pubblicata su simoneamico.com rappresenta la mia visione di design originale, con gerarchie visive e proporzioni ottimali. La versione inviata per la certificazione freeCodeCamp ha richiesto piccole modifiche tecniche (navbar fissa, attributi ID) per superare i test automatici. Sebbene questi cambiamenti non influiscano sulla funzionalità, alterano leggermente le proporzioni di design pensate inizialmente. Credo nel mantenere l’integrità del design rispettando allo stesso tempo i requisiti tecnici – questo progetto dimostra entrambe le capacità: creare esperienze utente coinvolgenti e adattarsi ai vincoli tecnici quando necessario.

Conformità alla certificazione: test freeCodeCamp superati ✔️


Obiettivo sbloccato: freeCodeCamp Responsive Web Design Certification ✔️

Prossima avventura: JavaScript Algorithms and Data Structures