# Nuovo sito Parrocchia Santi Giuseppe e Antonio — Arma di Taggia

Data: 2026-09-21
Stato: approvato

## Obiettivo

Rifare il sito parrocchiaarma.it (oggi Mobirise su TopHost) come sito statico
moderno, multilingua (IT/EN/FR/DE), responsive, ottimizzato SEO/GEO, hostato
gratis su Cloudflare Pages, con dominio trasferito su IONOS. Riproporre tutti i
contenuti attuali. Nuove pagine future sono fuori scope.

## Contenuti da migrare (sorgente: `../*.html`, `../assets/`)

| Pagina | Contenuto |
|---|---|
| Home | Hero, orari Messe (festivo 8:30/10/11/18, vespri 17:30; prefestivo 18; feriale 9/18), Adorazione (lun-ven 7:30-9 e 16:30-18), Rosario (30' prima), Confessioni (feriale 8:15-9 / 17-18, prefestivo 7:30-9:15, durante la Messa), contatti, mappa |
| Contatti | Tel 0184 43130, email parrocchiaarmaditaggia@gmail.com, WhatsApp +39 329 132 7608, Facebook, indirizzo Via Monsignor Giauni 14 – 18018 Arma di Taggia (IM), ufficio lun-ven 10-12 / 15:30-17 |
| Catechismo | Testo 6 corsi, 8 foto (2 gallery) |
| Matrimonio (ex fidanzati) | Testo, iscrizione Google Form `forms.gle/tqScqfWioMvupycm7`, PDF NuovoRitodelMatrimonio |
| Oratorio | 4 foto, orario lun-ven 16-17:30 |
| GREST | Testo, 5 foto, orari settimanali, email ufficio, tel Don Enrico 0184 43836 |
| Scout | Storia, unità/numeri, 8 foto + tabella, video YouTube `0Lu6OTBW9l8`, link fse.it, email armaditaggia_1@fse.it, Facebook scoutFSEArmadiTaggia1, YouTube SCOUTDEUROPAFSE |
| Coro | Testo, foto Natale 2019, 4 PDF (Accordi A4/A5, Canti A4/A5) |
| Giornalino | 3 PDF (n.1 dic 2022, n.2 feb 2023, n.3 apr 2023) |
| News | Nessuna pagina: la voce di menu rimanda al profilo Instagram @parrocchia.arma (decisione del 21/09/2026: il widget Taggbox era scollegato da febbraio 2024 ed Elfsight non è praticabile) |
| Privacy | Nuova: pagina minima (titolare, nessun cookie di profilazione, contatti) |

Non riproposta: `news_vere.html` (locandine 2023) → 301 su `/it/news/`.
Footer legale: "Parrocchia Santi Giuseppe e Antonio - Via Monsignor Giauni, 14 - 18018 Arma di Taggia (IM) - P.I./C.F. 81002390086".

## Decisioni

- **Stack**: Astro, output statico. Nessun framework UI; JS solo per menu mobile, tendina lingue, lightbox (`<dialog>`), facade mappa/video.
- **Hosting**: Cloudflare Pages (free). Dominio `.it` su IONOS (Cloudflare Registrar non supporta `.it`), nameserver → Cloudflare. Nessun servizio mail.
- **Analytics**: Cloudflare Web Analytics (cookieless) → nessun cookie banner.
- **News**: solo embed Instagram via Taggbox, con link diretti a Instagram/Facebook come fallback.
- **Lingue**: IT default. URL sempre con prefisso: `/it/`, `/en/`, `/fr/`, `/de/`. Slug tradotti.
- **Progetto**: cartella `Parrocchia/site/`, repo git proprio.

## Routing e i18n

Slug per lingua:

| chiave | it | en | fr | de |
|---|---|---|---|---|
| home | `` | `` | `` | `` |
| contatti | contatti | contact | contact | kontakt |
| catechismo | catechismo | catechism | catechisme | katechese |
| matrimonio | matrimonio | marriage | mariage | ehe |
| oratorio | oratorio | oratory | patronage | oratorium |
| grest | grest | grest | grest | grest |
| scout | scout | scouts | scouts | pfadfinder |
| coro | coro | choir | chorale | chor |
| giornalino | giornalino | newsletter | bulletin | pfarrblatt |
| news | news | news | actualites | aktuelles |
| privacy | privacy | privacy | confidentialite | datenschutz |

- Testi in `src/i18n/{it,en,fr,de}.json`; la mappa slug in `src/i18n/routes.ts`.
- Routing: `src/pages/[lang]/index.astro` (home) e `src/pages/[lang]/[slug].astro` che via `getStaticPaths` genera lingua × pagina dalla mappa slug e monta il componente di sezione corrispondente (`src/sections/Catechismo.astro`, ecc.). Ogni sezione riceve `lang` e legge i testi dal JSON.
- `hreflang` per le 4 lingue + `x-default` → it, su ogni pagina. Sitemap multilingua via `@astrojs/sitemap`.
- Root `/`: Pages Function `functions/index.ts`: se cookie `lang` valido → 302 su quella lingua; altrimenti parse `Accept-Language`, prima lingua tra it/en/fr/de → 302; fallback `/it/`.
- Selettore lingua nel footer: bandierina SVG della lingua corrente; click apre tendina con le altre 3; ogni voce porta alla stessa pagina nell'altra lingua e imposta cookie `lang` (1 anno, SameSite=Lax; cookie tecnico, senza consenso).

## Redirect vecchi URL (`public/_redirects`)

```
/index.html        /it/              301
/contatti.html     /it/contatti/     301
/catechismo.html   /it/catechismo/   301
/fidanzati.html    /it/matrimonio/   301
/oratorio.html     /it/oratorio/     301
/GREST.html        /it/grest/        301
/scout.html        /it/scout/        301
/coro.html         /it/coro/         301
/giornalino.html   /it/giornalino/   301
/news.html         /it/news/         301
/news_vere.html    /it/news/         301
/assets/files/*    /files/:splat     301
```

## Design

- Direzione: editoriale caldo. Palette: avorio/pietra (`#f6f1e8` circa) come fondo, terracotta come accento (ripresa dal disegno della chiesa), blu profondo per testi e superfici scure. Font self-hosted: Fraunces (titoli), Instrument Sans (corpo).
- Header sticky minimale: logo `disegno-chiesa` + nome; voci: News, Attività ▾ (Catechismo, Matrimonio, Oratorio, GREST), Gruppi ▾ (Scout, Coro), Giornalino, Contatti. Mobile: menu a tutto schermo.
- Home: hero full-bleed (foto interno chiesa) con card **Orari** sovrapposta al bordo inferiore; toggle orario invernale/estivo deciso da date in `src/config.ts` (estivo: da definire con la parrocchia; finché mancano i dati estivi si mostra solo l'invernale). Poi griglia bento delle 6 sezioni, blocco News/Instagram, blocco Giornalino (ultimo numero), mappa + contatti.
- Pagine interne: hero corto, testo su misura ≤ 70 caratteri, gallery a mosaico con lightbox `<dialog>`, box "Orari e contatti" sticky su desktop.
- PDF come card (icona, titolo, dimensione), `target=_blank`.
- Footer: contatti / navigazione / social; riga finale con dati legali, selettore lingua, "Sito realizzato da **DueBytes** di Paolo Alberti" → https://www.duebytes.it.
- Motion: reveal leggero via CSS + IntersectionObserver minimo; rispetta `prefers-reduced-motion`.
- Accessibilità: contrasto AA, focus visibile, menu e tendina navigabili da tastiera, `alt` tradotti.

## SEO / GEO

- Title/description per pagina e lingua; OG + Twitter card con immagine dedicata (riuso `*-meta.*`).
- JSON-LD `Church` (nome, indirizzo, geo, telefono, email, `openingHoursSpecification` delle Messe) in home; `BreadcrumbList` nelle interne.
- `robots.txt`, `sitemap-index.xml`, `llms.txt` (chi siamo, orari, contatti, elenco pagine), canonical.
- Immagini via `astro:assets` (`<Picture>` AVIF/WebP, `loading=lazy` sotto la piega, dimensioni esplicite). Obiettivo Lighthouse ≥ 95 su tutte le metriche.
- Mappa Google: embed standard senza API key, iframe caricato al click su un'anteprima statica. Video YouTube: facade (thumbnail → iframe al click). Taggbox: script caricato solo in pagina news.

## Deploy e migrazione dominio

1. Repo GitHub → progetto Cloudflare Pages (build `npm run build`, output `dist/`). Verifica su `*.pages.dev`.
2. Trasferimento `parrocchiaarma.it` TopHost → IONOS (AuthCode da pannello TopHost; il vecchio sito resta online durante il trasferimento).
3. Zona DNS su Cloudflare; nameserver Cloudflare impostati su IONOS; dominio custom apex + `www` su Pages, `www` → apex 301.
4. Verifica 301, sitemap in Search Console, Web Analytics attivo. Nessun record MX (Gmail esterno non legato al dominio).

## Verifica

- `astro build` + `astro check` senza errori.
- Script che verifica esistenza di tutti i link interni e dei PDF referenziati.
- Screenshot 375/768/1440 delle 11 pagine IT + home nelle altre 3 lingue.
- Lighthouse su home e una interna (mobile).
- Test manuale redirect `/` con `Accept-Language` diversi via `wrangler pages dev`.

## Fuori scope

Nuove pagine (eventi, storia, ecc.), CMS, form di contatto, orario estivo (dati mancanti), rifacimento locandine.
