Sito statico (HTML + CSS + JS, nessuna build) della conferenza MedTech Next, organizzata da D/Vision Lab e NRG. Pubblicato su GitHub Pages: https://medtechnext.it
src/index.html # SORGENTE: template unico con testi IT/EN affiancati ← si modifica questo
build.py # genera index.html (IT), en/index.html (EN) e sitemap.xml dal template
index.html # GENERATO (italiano)
en/index.html # GENERATO (inglese)
assets/css/style.css # stili
assets/js/main.js # menu mobile + tab delle edizioni (link diretto: #edizione-2026)
assets/img/ # immagini (speaker, gallery, loghi sponsor, og-image)
CNAME # dominio custom per GitHub Pages
I contenuti da completare sono marcati con TODO nell'HTML:
grep -n TODO index.htmlSi scrive tutto in src/index.html, con i due testi affiancati:
{{it}}Testo in italiano{{en}}Text in English{{/}}
Poi si rigenerano le pagine e si committa il risultato (il controllo in CI fallisce se i file generati non sono aggiornati):
python3 build.py/è in italiano,/en/in inglese, collegate conhreflang(importante per Google).- Alla prima visita della home un browser non italiano viene portato su
/en/; la scelta fatta con il selettore IT/EN viene ricordata. I crawler non vengono reindirizzati. - Immagini social:
assets/img/og-image.jpg(IT) eog-image-en.jpg(EN).
Già fatto nel sito:
<title>, meta description, canonical,hreflangIT/EN, Open Graph e Twitter card, per ogni lingua (generati dabuild.py).- Dati strutturati JSON-LD (schema.org:
WebSite,OrganizationconsameAse contatto,EventSeries,Event2026) inbuild.py, funzionejsonld(). Quando si annuncia il 2027, aggiungere lì un nuovoEventcon data e luogo (Google richiedestartDate). robots.txt,sitemap.xmlcon alternativehreflang, immagini elastmod(aggiornareLASTMODinbuild.pyquando cambiano i contenuti).- Immagini social
assets/img/og-image.jpg(IT) eog-image-en.jpg(EN), 1200×630. - Icone:
favicon.ico,favicon.svg,favicon-32.png,apple-touch-icon.png,icon-192/512.png,site.webmanifest. - Font ospitati sul sito (
assets/fonts/): nessuna richiesta a Google, nessun cookie, nessuno spostamento del layout (CLS 0). - Pagina
404.htmlbilingue connoindex.
Da fare a mano dopo ogni cambio di dominio o di struttura:
- Google Search Console: proprietà di tipo Dominio (verifica con record
TXTsu Squarespace), invio disitemap.xml, Richiedi indicizzazione di/e/en/. - Bing Webmaster Tools: importare la proprietà da Search Console (alimenta anche DuckDuckGo e altri).
- Controllare l'anteprima dei link con il Post Inspector di LinkedIn dopo ogni cambio di immagine social.
- In Settings → Pages tenere attivo Enforce HTTPS.
python3 -m http.server 8000 # i percorsi sono assoluti: servire dalla radice del repoPoi apri http://localhost:8000
In index.html, nella sezione #edizioni:
- aggiungi un
<button role="tab">con l'anno dentro.tabs; - aggiungi il relativo
<div role="tabpanel" hidden>(copia quello del 2026).
- Settings → Pages: Source = GitHub Actions. Il workflow
.github/workflows/pages.ymlpubblica a ogni push sumaster(si può lanciare anche a mano da Actions → Deploy GitHub Pages → Run workflow). - Dominio
medtechnext.it(DNS su Squarespace): quattro recordAsu@(185.199.108.153,.109.153,.110.153,.111.153), quattroAAAA(2606:50c0:8000::153…8003::153) e unCNAMEwww→dvisionlab.github.io. In Settings → Pages il Custom domain èmedtechnext.it(con il deploy da Actions il fileCNAMEnon conta: il dominio si imposta da lì). - Quando il certificato è pronto, in Settings → Pages attiva Enforce HTTPS.