[{"data":1,"prerenderedAt":631},["ShallowReactive",2],{"meta-profile":3,"command-palette-about":18,"projects":417,"meta-contacts":613},{"id":4,"extension":5,"logo_name":6,"meta":7,"name":8,"roles":9,"stem":16,"__hash__":17},"profile/meta/profile.yml","yml","giovanni-manara",{},"Giovanni Manara",[10,11,12,13,14,15],"Web Developer","Wordpress Developer","Frontend Developer","GSAP Enthusiast","Tennis Lover","Gamer Appassionato","meta/profile","se3gtpk__mt3W_v5gCFucHvimgG4p_WrOJ4sZGfuArQ",[19,44,62,81,100,122,144,187,220,244,263,283,322,348,392],{"id":20,"title":21,"body":22,"description":28,"extension":36,"meta":37,"navigation":38,"order":39,"path":40,"seo":41,"stem":42,"__hash__":43},"about/competencies/code-quality.md","code-quality",{"type":23,"value":24,"toc":32},"minimark",[25,29],[26,27,28],"p",{},"Mi piace scrivere codice pulito e mantenere codebase leggibili e facili da manutenere — sia su personalizzazioni WordPress (temi/plugin) sia su progetti custom.",[26,30,31],{},"La qualità, per me, non è un dettaglio estetico: è logica, ordine e attenzione ai dettagli, così che un progetto prenda forma passo dopo passo e regga in produzione.",{"title":33,"searchDepth":34,"depth":34,"links":35},"",2,[],"md",{},true,3,"/competencies/code-quality",{"title":21,"description":28},"competencies/code-quality","WVyPz6M7BXq1MiXLLc4nXEwS_MEpymEmdCSifEoF1Ms",{"id":45,"title":46,"body":47,"description":51,"extension":36,"meta":57,"navigation":38,"order":34,"path":58,"seo":59,"stem":60,"__hash__":61},"about/competencies/collaboration.md","collaboration",{"type":23,"value":48,"toc":55},[49,52],[26,50,51],{},"Ho fatto sport a diversi livelli fin da giovane, e questo mi ha lasciato una cosa utilissima nel lavoro: saper stare in squadra, comunicare in modo chiaro e contribuire senza \"rumore\".",[26,53,54],{},"Su progetti reali e codebase già in produzione, collaborare significa allinearsi sul problema, condividere contesto e consegnare in modo affidabile — non solo scrivere codice in isolamento.",{"title":33,"searchDepth":34,"depth":34,"links":56},[],{},"/competencies/collaboration",{"title":46,"description":51},"competencies/collaboration","CiCBh3JZXfzxe54qjCmGI8FdUVPskd571f84dOpak3U",{"id":63,"title":64,"body":65,"description":69,"extension":36,"meta":75,"navigation":38,"order":76,"path":77,"seo":78,"stem":79,"__hash__":80},"about/competencies/mentoring.md","mentoring",{"type":23,"value":66,"toc":73},[67,70],[26,68,69],{},"Mi piace capire come funzionano davvero le cose e condividere contesto in modo chiaro — utile quando si lavora in squadra su problemi concreti.",[26,71,72],{},"Documento, spiego il ragionamento dietro le scelte e mi prendo responsabilità su quello che consegno: il codice in produzione non perdona, ma insegna parecchio a chi lo legge con attenzione.",{"title":33,"searchDepth":34,"depth":34,"links":74},[],{},4,"/competencies/mentoring",{"title":64,"description":69},"competencies/mentoring","869TsoXqqb9gxA99n1aXQUgTGy2N5LC7RSktPu5i6CQ",{"id":82,"title":83,"body":84,"description":88,"extension":36,"meta":94,"navigation":38,"order":95,"path":96,"seo":97,"stem":98,"__hash__":99},"about/competencies/problem-solving.md","problem-solving",{"type":23,"value":85,"toc":92},[86,89],[26,87,88],{},"Quando qualcosa non torna, vado a fondo: studio, provo, documento e arrivo alla soluzione con costanza.",[26,90,91],{},"Nel lavoro quotidiano applico lo stesso approccio: capire il problema, scomporlo in parti gestibili, e farlo funzionare davvero — senza scorciatoie che poi costano in produzione.",{"title":33,"searchDepth":34,"depth":34,"links":93},[],{},1,"/competencies/problem-solving",{"title":83,"description":88},"competencies/problem-solving","_y34cpLrt3OqbL7_xHC_feokuoDThzESXsqrDOfmULo",{"id":101,"title":102,"body":103,"description":107,"extension":36,"meta":117,"navigation":38,"order":95,"path":118,"seo":119,"stem":120,"__hash__":121},"about/experiences/megiston.md","megiston",{"type":23,"value":104,"toc":115},[105,108],[26,106,107],{},"Dal 2022 lavoro come sviluppatore web, con un focus pratico su progetti reali e codebase già in produzione.",[26,109,110,114],{},[111,112,113],"strong",{},"2025 - oggi | Megiston S.r.l."," — Full stack web developer: personalizzazione avanzata di WordPress (temi e plugin), integrazione di tecnologie moderne come Vue.js e React, e sviluppo di soluzioni custom tramite Ruby on Rails.",{"title":33,"searchDepth":34,"depth":34,"links":116},[],{},"/experiences/megiston",{"title":102,"description":107},"experiences/megiston","dYRe7XJ_7slB8iKRAGj1amPRMmzJZaC4zygmFACHGDQ",{"id":123,"title":124,"body":125,"description":138,"extension":36,"meta":139,"navigation":38,"order":34,"path":140,"seo":141,"stem":142,"__hash__":143},"about/experiences/websonica.md","websonica",{"type":23,"value":126,"toc":136},[127,133],[26,128,129,132],{},[111,130,131],{},"2022 - 2025 | Websonica S.r.l."," — Prima come stage web developer (2022-2023), poi come junior web developer (2023-2025). Ho lavorato su gestione e personalizzazione di siti WordPress e Magento2, su software custom in Laravel e Next.js, e su CRM come vTiger.",[26,134,135],{},"Mi piace tenere un approccio ordinato: capire il problema, scomporlo, e farlo funzionare davvero (senza magia nera… o almeno provandoci).",{"title":33,"searchDepth":34,"depth":34,"links":137},[],"2022 - 2025 | Websonica S.r.l. — Prima come stage web developer (2022-2023), poi come junior web developer (2023-2025). Ho lavorato su gestione e personalizzazione di siti WordPress e Magento2, su software custom in Laravel e Next.js, e su CRM come vTiger.",{},"/experiences/websonica",{"title":124,"description":138},"experiences/websonica","dVGZo1BJjKJRXpZU7gBpp2M0iuKv_52-qjEPKsA1GnA",{"id":145,"title":146,"body":147,"description":181,"extension":36,"meta":182,"navigation":38,"order":95,"path":183,"seo":184,"stem":185,"__hash__":186},"about/hobbies/favorite-games.md","favorite-games",{"type":23,"value":148,"toc":179},[149,156],[26,150,151,152,155],{},"Nei videogiochi mi sento a casa nei ",[111,153,154],{},"GDR",", soprattutto quelli story-driven: mi piace immergermi nelle storie, nei personaggi e nelle scelte (quelle che poi ti fanno pensare \"ok, questa me la porto dietro\").",[26,157,158,159,162,163,166,167,170,171,174,175,178],{},"Il mio primo \"innesco\" è stato ",[111,160,161],{},"Final Fantasy X",", e da lì ho continuato a cercare esperienze simili. Tra i miei preferiti ci sono la trilogia di ",[111,164,165],{},"Mass Effect"," (su Andromeda sorvoliamo), ",[111,168,169],{},"Baldur's Gate 3",", la saga di ",[111,172,173],{},"Persona"," (3, 4 e 5) e ",[111,176,177],{},"Clair Obscur 33",", probabilmente il mio preferito degli ultimi anni.",{"title":33,"searchDepth":34,"depth":34,"links":180},[],"Nei videogiochi mi sento a casa nei GDR, soprattutto quelli story-driven: mi piace immergermi nelle storie, nei personaggi e nelle scelte (quelle che poi ti fanno pensare \"ok, questa me la porto dietro\").",{},"/hobbies/favorite-games",{"title":146,"description":181},"hobbies/favorite-games","RjYRAf75mnYJgFIdt-pf1Wf3zXT7Y7Sum_s4AIaBdck",{"id":188,"title":189,"body":190,"description":194,"extension":36,"meta":215,"navigation":38,"order":34,"path":216,"seo":217,"stem":218,"__hash__":219},"about/hobbies/sports.md","sports",{"type":23,"value":191,"toc":213},[192,195,206],[26,193,194],{},"Ho praticato diversi sport (con una breve parentesi tra calcio e basket), ma i due che mi hanno formato di più sono stati scherma e tennis.",[26,196,197,198,201,202,205],{},"Per ",[111,199,200],{},"sei anni"," ho fatto agonismo nella ",[111,203,204],{},"scherma",", ottenendo buoni risultati a livello regionale e nazionale. Più che i piazzamenti, mi porto dietro ciò che conta davvero: fiducia costruita nel tempo, disciplina, ambizione e la capacità di lavorare in squadra anche quando la pressione sale.",[26,207,208,209,212],{},"Oggi il mio sport è il ",[111,210,211],{},"tennis",": è l'unico che pratico con continuità e che seguo davvero, anche in TV e streaming. Federer è stato il mio riferimento, e adesso mi godo con entusiasmo Alcaraz e (inevitabilmente) Sinner.",{"title":33,"searchDepth":34,"depth":34,"links":214},[],{},"/hobbies/sports",{"title":189,"description":194},"hobbies/sports","OjIveNcZF2yHP6pEJ4krecf72toMAa6nhMecOCA20Io",{"id":221,"title":222,"body":223,"description":33,"extension":36,"meta":239,"navigation":38,"order":95,"path":240,"seo":241,"stem":242,"__hash__":243},"about/personal-life/bio.md","bio",{"type":23,"value":224,"toc":236},[225,230,233],[226,227,229],"h2",{"id":228},"about-me","About me",[26,231,232],{},"Mi chiamo Giovanni Manara e lavoro come sviluppatore web dal 2022. Ho iniziato in modo molto concreto: prima uno stage, poi un percorso da junior, fino al ruolo attuale full stack, con propensione al frontend.",[26,234,235],{},"Sono curioso e professionale: mi piace capire come funzionano davvero le cose, imparare nuovi linguaggi e scrivere codice pulito. La parte più soddisfacente? Vedere un progetto prendere forma passo dopo passo, sapendo che dietro c'è logica, ordine e attenzione ai dettagli.",{"title":33,"searchDepth":34,"depth":34,"links":237},[238],{"id":228,"depth":34,"text":229},{},"/personal-life/bio",{"title":222,"description":33},"personal-life/bio","Tte_NN8gvBL-Nk-Q3JsSItnwBYndb_PNWCblwKWX-tc",{"id":245,"title":246,"body":247,"description":257,"extension":36,"meta":258,"navigation":38,"order":34,"path":259,"seo":260,"stem":261,"__hash__":262},"about/personal-life/education/high-school.md","high-school",{"type":23,"value":248,"toc":255},[249],[26,250,251,254],{},[111,252,253],{},"2010-2015"," — Diploma al Liceo Scientifico Enrico Fermi (Padova).",{"title":33,"searchDepth":34,"depth":34,"links":256},[],"2010-2015 — Diploma al Liceo Scientifico Enrico Fermi (Padova).",{},"/personal-life/education/high-school",{"title":246,"description":257},"personal-life/education/high-school","IEavggaOBHCPmBn2LzRv22S4Hw_mUn7p2vxiFYZ4QtQ",{"id":264,"title":265,"body":266,"description":33,"extension":36,"meta":278,"navigation":38,"order":95,"path":279,"seo":280,"stem":281,"__hash__":282},"about/personal-life/education/overview.md","education",{"type":23,"value":267,"toc":275},[268,272],[226,269,271],{"id":270},"educazione","Educazione",[26,273,274],{},"Qui trovi il mio percorso formativo: un mix di università e formazione professionalizzante che mi ha portato allo sviluppo web.",{"title":33,"searchDepth":34,"depth":34,"links":276},[277],{"id":270,"depth":34,"text":271},{},"/personal-life/education/overview",{"title":265,"description":33},"personal-life/education/overview","wARhc61jPteJxKY6QO_TO9-Ff29_gYfQZPATBISmyH0",{"id":284,"title":285,"body":286,"description":33,"extension":36,"meta":317,"navigation":38,"order":39,"path":318,"seo":319,"stem":320,"__hash__":321},"about/personal-life/education/university.md","university",{"type":23,"value":287,"toc":315},[288],[289,290,291,298,309],"ul",{},[292,293,294,297],"li",{},[111,295,296],{},"2015-2019"," — Laurea Triennale in Biotecnologie, Università del Piemonte Orientale (Novara).",[292,299,300,303,304,308],{},[111,301,302],{},"2019–2021"," — Laurea Magistrale in Bioinformatica, Università Tor Vergata (Roma). In questo periodo mi sono avvicinato al mondo dello sviluppo web grazie a un corso di ",[305,306,307],"em",{},"Applicazioni web per la Bioinformatica",". Con il contesto del COVID e una passione crescente per questo ambito, ho scelto di mettere in pausa il percorso universitario per concentrarmi in modo più diretto sulla programmazione.",[292,310,311,314],{},[111,312,313],{},"2022"," — Corso professionalizzante in Full Stack Web Development (600 ore, riconosciuto MIUR), Accademia delle Professioni (Noventa Padovana), concluso con ottimi risultati.",{"title":33,"searchDepth":34,"depth":34,"links":316},[],{},"/personal-life/education/university",{"title":285,"description":33},"personal-life/education/university","HKbyqdMzapt-T57rm1HgIUxkax7Bt-JFM_tD8EMLytc",{"id":323,"title":324,"body":325,"description":33,"extension":36,"meta":343,"navigation":38,"order":34,"path":344,"seo":345,"stem":346,"__hash__":347},"about/personal-life/interests.md","interests",{"type":23,"value":326,"toc":340},[327,331,334,337],[226,328,330],{"id":329},"interessi","Interessi",[26,332,333],{},"Mi piace la tecnologia in senso ampio: dal web alle soluzioni \"ben costruite\", fino a tutto ciò che migliora processi e prodotti.",[26,335,336],{},"Amo il tennis (lo seguo e lo pratico da anni) e quando posso mi piace vivere i tornei dal vivo.",[26,338,339],{},"Mi piace anche viaggiare e cucinare: scoprire posti nuovi e provare sapori diversi è un ottimo modo per tenere la curiosità allenata.",{"title":33,"searchDepth":34,"depth":34,"links":341},[342],{"id":329,"depth":34,"text":330},{},"/personal-life/interests",{"title":324,"description":33},"personal-life/interests","E7rdK_OqdaU42uR_g8l-MRvUfHXlF0Mkjw6fiZzEkkw",{"id":349,"title":350,"body":351,"description":355,"extension":36,"meta":387,"navigation":38,"order":95,"path":388,"seo":389,"stem":390,"__hash__":391},"about/skills/hard-skills.md","hard-skills",{"type":23,"value":352,"toc":385},[353,356,382],[26,354,355],{},"Mi muovo bene tra front-end e back-end, con un approccio molto \"hands-on\".",[26,357,358,361,362,365,366,369,370,373,374,377,378,381],{},[111,359,360],{},"Fondamentali:"," HTML, CSS, JavaScript.\n",[111,363,364],{},"Front-end:"," React, Next.js (e integrazioni moderne quando servono).\n",[111,367,368],{},"Back-end:"," PHP, Ruby.\n",[111,371,372],{},"Database:"," MySQL, PostgreSQL.\n",[111,375,376],{},"Stili:"," Sass, TailwindCSS, Bootstrap.\n",[111,379,380],{},"Framework:"," Laravel, Ruby on Rails.",[26,383,384],{},"Nel quotidiano lavoro spesso su personalizzazioni WordPress (temi/plugin) e su progetti custom, cercando sempre di mantenere codice leggibile e facile da manutenere.",{"title":33,"searchDepth":34,"depth":34,"links":386},[],{},"/skills/hard-skills",{"title":350,"description":355},"skills/hard-skills","h1O6GxGbCUQBtpgwSqpITgkVE-qnO7bTz1KaEAZ5waI",{"id":393,"title":394,"body":395,"description":411,"extension":36,"meta":412,"navigation":38,"order":34,"path":413,"seo":414,"stem":415,"__hash__":416},"about/skills/soft-skills.md","soft-skills",{"type":23,"value":396,"toc":409},[397,403],[26,398,399,402],{},[111,400,401],{},"Teamwork:"," ho fatto sport a diversi livelli fin da giovane, e questo mi ha lasciato una cosa utilissima nel lavoro: saper stare in squadra, comunicare in modo chiaro e contribuire senza \"rumore\".",[26,404,405,408],{},[111,406,407],{},"Tenacia e affidabilità:"," le sfide mi stimolano. Quando qualcosa non torna, vado a fondo: studio, provo, documento e arrivo alla soluzione con costanza. Mi piace prendermi responsabilità su quello che consegno, perché il codice in produzione non perdona (ma insegna parecchio).",{"title":33,"searchDepth":34,"depth":34,"links":410},[],"Teamwork: ho fatto sport a diversi livelli fin da giovane, e questo mi ha lasciato una cosa utilissima nel lavoro: saper stare in squadra, comunicare in modo chiaro e contribuire senza \"rumore\".",{},"/skills/soft-skills",{"title":394,"description":411},"skills/soft-skills","QyBwnFi9-ZYJc-xGJ0-L1syIeASIp61uVcI2WBJ_HZo",[418,540],{"id":419,"title":420,"body":421,"description":530,"extension":36,"img":531,"liveUrl":510,"meta":532,"navigation":38,"path":533,"projectId":34,"seo":534,"slug":535,"stem":536,"tech":537,"url":519,"__hash__":539},"projects/projects/echoes.md","Echoes",{"type":23,"value":422,"toc":522},[423,427,434,437,441,444,448,473,477,491,495,498,502],[226,424,426],{"id":425},"cosè","Cos'è",[26,428,429,430,433],{},"Echoes trasforma un account Spotify personale in una dashboard pubblica: cosa sto ascoltando ora, i top artist su finestre temporali diverse e lo storico recente. Tutto renderizzato server-side, aggiornato in tempo reale, ",[111,431,432],{},"senza login"," per chi visita.",[26,435,436],{},"È anche il progetto con cui ho consolidato React, Next.js (App Router) e TypeScript in strict mode.",[226,438,440],{"id":439},"il-problema","Il problema",[26,442,443],{},"Volevo uno spazio live che raccontasse i miei gusti musicali senza esporre OAuth ai visitatori e senza richiedere un backend complesso. Spotify non concede accesso multi-utente a scala “portfolio”: serve un modello single-account, server-side, con token che non raggiungono mai il browser.",[226,445,447],{"id":446},"approccio","Approccio",[289,449,450,453,456,459,462,465],{},[292,451,452],{},"Autenticazione una tantum con refresh token long-lived legato a un solo account Spotify",[292,454,455],{},"Exchange on-demand in access token short-lived, cache in memoria e rinnovo trasparente",[292,457,458],{},"Ogni chiamata a Spotify passa da route/API interne dell’app (proxy) — il browser parla solo con Echoes",[292,460,461],{},"Dati “lenti” (top artist, recent history) fetchati in SSR e cachati minuti/ore",[292,463,464],{},"Now playing: unico pezzo client-side, poll leggero verso una route interna",[292,466,467,468,472],{},"Time-range via query string (",[469,470,471],"code",{},"?range=…",") così ogni vista è shareable e prerenderabile",[226,474,476],{"id":475},"stack","Stack",[289,478,479,482,485,488],{},[292,480,481],{},"Next.js App Router + TypeScript strict",[292,483,484],{},"Tailwind CSS v4",[292,486,487],{},"GSAP per motion e scroll reveals",[292,489,490],{},"Deploy su Vercel",[226,492,494],{"id":493},"limiti-consapevoli","Limiti consapevoli",[26,496,497],{},"Spotify ha chiuso Recommendations, Audio Features, Audio Analysis e Related Artists alle nuove app (fine 2024): Echoes non dipende da quegli endpoint. Non c’è ancora un database — è uno snapshot live. In roadmap: job schedulato che salva snapshot dei top ascolti per tracciare come cambia il gusto nel tempo.",[226,499,501],{"id":500},"link","Link",[289,503,504,514],{},[292,505,506,507],{},"Live: ",[508,509,513],"a",{"href":510,"rel":511},"https://echoes.giovannimanara.dev/",[512],"nofollow","echoes.giovannimanara.dev",[292,515,516,517],{},"Codice: ",[508,518,521],{"href":519,"rel":520},"https://github.com/GioManara96/echoes",[512],"github.com/GioManara96/echoes",{"title":33,"searchDepth":34,"depth":34,"links":523},[524,525,526,527,528,529],{"id":425,"depth":34,"text":426},{"id":439,"depth":34,"text":440},{"id":446,"depth":34,"text":447},{"id":475,"depth":34,"text":476},{"id":493,"depth":34,"text":494},{"id":500,"depth":34,"text":501},"Un autoritratto musicale live sulla Spotify Web API — now playing, top artist e ascolti recenti — con Next.js App Router e TypeScript, senza login per i visitatori.","/icons/projects/echoes-wide.webp",{},"/projects/echoes",{"title":420,"description":530},"echoes","projects/echoes",[538],"next-js","c1Wt3C-TSA84WftzR1gbeko3roTjyof8MnmqqwqUiUU",{"id":541,"title":542,"body":543,"description":602,"extension":36,"img":603,"liveUrl":604,"meta":605,"navigation":38,"path":606,"projectId":95,"seo":607,"slug":608,"stem":609,"tech":610,"url":592,"__hash__":612},"projects/projects/wp-custom-category-slider.md","WP-Custom-Category-Slider",{"type":23,"value":544,"toc":595},[545,547,550,552,555,557,571,573,584,586],[226,546,426],{"id":425},[26,548,549],{},"Un plugin WordPress che aggiunge uno shortcode per renderizzare uno slider Splide delle categorie prodotto WooCommerce. La configurazione vive sui termini di tassonomia tramite campi ACF, così i contenuti restano editabili dal back-office senza toccare il codice.",[226,551,440],{"id":439},[26,553,554],{},"Serviva un modo riusabile di mostrare le categorie WooCommerce in slider, con controllo editoriale (ordine, immagini, copy) e footprint minimo rispetto a builder o plugin monolitici.",[226,556,447],{"id":446},[289,558,559,562,565,568],{},[292,560,561],{},"Shortcode dedicato, input previsibili, output HTML/CSS isolato",[292,563,564],{},"Splide per lo slider (leggero, accessibile quanto basta per il caso d’uso)",[292,566,567],{},"ACF sui termini di tassonomia come unica fonte di verità editoriale",[292,569,570],{},"Nessuna dipendenza da page builder",[226,572,476],{"id":475},[289,574,575,578,581],{},[292,576,577],{},"WordPress / WooCommerce",[292,579,580],{},"ACF",[292,582,583],{},"Splide",[226,585,501],{"id":500},[289,587,588],{},[292,589,516,590],{},[508,591,594],{"href":592,"rel":593},"https://github.com/GioManara96/WP-Customer-Category-Slider",[512],"github.com/GioManara96/WP-Customer-Category-Slider",{"title":33,"searchDepth":34,"depth":34,"links":596},[597,598,599,600,601],{"id":425,"depth":34,"text":426},{"id":439,"depth":34,"text":440},{"id":446,"depth":34,"text":447},{"id":475,"depth":34,"text":476},{"id":500,"depth":34,"text":501},"Plugin WordPress leggero che espone uno shortcode per uno slider Splide delle categorie WooCommerce, guidato da campi ACF sui termini di tassonomia.","/icons/projects/wp-custom-slider-wide.webp",null,{},"/projects/wp-custom-category-slider",{"title":542,"description":602},"wp-custom-category-slider","projects/wp-custom-category-slider",[611],"wordpress","YMHIG00Lg7Grwgrb8z7IVnYfVVSGx-w0bYWSB9pPO-g",{"id":614,"direct":615,"extension":5,"meta":620,"social":621,"stem":629,"__hash__":630},"contacts/meta/contacts.yml",{"title":616,"sources":617},"contacts",{"email":618,"phone":619},"contacts@gmail.com","+390123456789",{},{"github":622,"linkedin":626},{"title":623,"url":624,"user":625},"Github profile","https://github.com/","GioManara96",{"title":627,"url":628,"user":8},"Linkedin account","https://www.linkedin.com/in/giovanni-manara-80b3b324a/","meta/contacts","yDdCOB7uvt8Egagbh_KeiCzzjQ2roDon8Cwmt4mWa9k",1785423612676]