diff --git a/cantiletture.md b/cantiletture.md
new file mode 100644
index 0000000..a42be59
--- /dev/null
+++ b/cantiletture.md
@@ -0,0 +1,224 @@
+# Piano di Azione: Suggerimento Canti con AI (cantiletture.json)
+
+## Obiettivo
+
+Generare automaticamente, una volta a settimana, un file JSON con i canti suggeriti per ogni messa della settimana, analizzati da Gemini Flash a partire dalle letture liturgiche. La PWA scarica questo file statico e mostra i suggerimenti istantaneamente, senza alcun calcolo lato client.
+
+---
+
+## Architettura
+
+```
+CRON Settimanale (Lunedì ore 6:00)
+ │
+ ├─ 1. Fetch RSS liturgia.silvestrini.org/rss
+ │ → Estrae le letture di tutta la settimana (7 giorni)
+ │
+ ├─ 2. Fetch canti.json dal server
+ │ → Carica il database completo dei canti con testi e momenti liturgici
+ │
+ ├─ 3. Chiamata API Gemini Flash
+ │ → Invia prompt strutturato con letture + lista canti
+ │ → Riceve suggerimenti ragionati con score e motivazione
+ │
+ └─ 4. Salva cantiletture.json
+ → Upload sul server web (stessa posizione di canti.json)
+```
+
+---
+
+## Struttura del File cantiletture.json
+
+```json
+{
+ "generated_at": "2026-05-19T06:00:00Z",
+ "week_start": "2026-05-17",
+ "week_end": "2026-05-24",
+ "masses": {
+ "2026-05-17": {
+ "title": "Ascensione del Signore",
+ "day": "Domenica",
+ "moments": {
+ "Ingresso": [
+ {
+ "id_canti": 42,
+ "titolo": "Cristo è risorto veramente",
+ "score": 95,
+ "motivo": "Il tema dell'ascensione e della gloria di Cristo risorto è centrale in questo canto."
+ },
+ {
+ "id_canti": 118,
+ "titolo": "Alleluia, è risorto",
+ "score": 88,
+ "motivo": "Il tono gioioso e la proclamazione pasquale si collegano al mistero celebrato."
+ },
+ {
+ "id_canti": 205,
+ "titolo": "Canto di lode al Signore",
+ "score": 82,
+ "motivo": "Richiama il tema della lode che accompagna l'ascensione di Gesù."
+ }
+ ],
+ "Offertorio": [
+ { "...": "3 canti suggeriti" }
+ ],
+ "Comunione": [
+ { "...": "3 canti suggeriti" }
+ ],
+ "Finale": [
+ { "...": "3 canti suggeriti" }
+ ]
+ }
+ },
+ "2026-05-18": {
+ "title": "Lunedì della VII settimana di Pasqua",
+ "day": "Lunedì",
+ "moments": { "...": "stessa struttura" }
+ }
+ }
+}
+```
+
+### Campi per ogni canto suggerito:
+| Campo | Tipo | Descrizione |
+|-------|------|-------------|
+| `id_canti` | number | ID del canto nel database (per collegamento diretto al player) |
+| `titolo` | string | Titolo del canto (per visualizzazione rapida) |
+| `score` | number (0-100) | Grado di affinità/affidabilità del suggerimento |
+| `motivo` | string | Spiegazione testuale del perché il canto è adatto |
+
+---
+
+## Componenti da Sviluppare
+
+### 1. Script di Generazione (`scripts/generate-cantiletture.ts`)
+
+Script Node.js/TypeScript che:
+
+- **Input**: RSS feed + canti.json
+- **Elaborazione**:
+ 1. Parsing XML del feed RSS (estrazione letture per data)
+ 2. Preparazione del prompt per Gemini con: testo letture + lista canti (id, titolo, testo, momenti liturgici)
+ 3. Chiamata API Gemini Flash con output JSON strutturato
+ 4. Validazione della risposta (verifica che gli ID canti esistano, score nel range)
+- **Output**: File `cantiletture.json`
+
+**Prompt di esempio per Gemini:**
+```
+Sei un esperto liturgista cattolico. Ti fornisco le letture della messa
+e un database di canti liturgici con i relativi momenti (Ingresso,
+Offertorio, Comunione, Finale, ecc.).
+
+Per ogni giorno della settimana e per ogni momento liturgico, suggerisci
+i 3 canti più adatti. Per ogni suggerimento indica:
+- L'ID del canto (id_canti)
+- Uno score da 0 a 100 che indica il grado di attinenza
+- Una breve motivazione (max 1 frase)
+
+Considera: temi teologici, periodo liturgico, tono emotivo,
+corrispondenze tra letture e testi dei canti.
+
+LETTURE DELLA SETTIMANA:
+[...testo letture...]
+
+DATABASE CANTI:
+[...lista canti con id, titolo, testo, momenti...]
+
+Rispondi SOLO con JSON valido nel formato specificato.
+```
+
+### 2. Configurazione API Key
+
+- Ottenere API Key gratuita da [Google AI Studio](https://aistudio.google.com/apikey)
+- Salvarla come variabile d'ambiente `GEMINI_API_KEY`
+- Non committarla nel repository (usare `.env` in `.gitignore`)
+
+### 3. Aggiornamento PWA
+
+#### 3.1 Nuovo Service: `CantiLettureService`
+```typescript
+// Logica semplificata:
+// - Scarica cantiletture.json dal server (con cache)
+// - Espone i suggerimenti per data selezionata
+// - Fallback al keyword matching se il JSON non è disponibile
+```
+
+#### 3.2 Aggiornamento LiturgiaPage
+- Rimuovere il tasto "Analizza e Suggerisci Canti" (non serve più)
+- Rimuovere la sezione "Parole Chiave Rilevate" (non serve più)
+- Mostrare automaticamente i suggerimenti raggruppati per momento liturgico
+- Ogni card mostra: titolo, score (barra o badge), motivazione dell'AI
+- Click sulla card → apre il canto nel player
+
+#### 3.3 Fallback
+Se `cantiletture.json` non è disponibile o la data non è coperta:
+- Mostrare un messaggio "Suggerimenti AI non disponibili per questa data"
+- Opzionalmente, offrire il keyword matching come alternativa
+
+### 4. Automazione (CRON)
+
+#### Opzione A: Script locale con crontab
+```bash
+# Ogni lunedì alle 6:00
+0 6 * * 1 cd /path/to/canti && node scripts/generate-cantiletture.js
+```
+
+#### Opzione B: GitHub Action (se il repo viene messo su GitHub)
+```yaml
+# .github/workflows/generate-suggestions.yml
+name: Generate Canti Suggestions
+on:
+ schedule:
+ - cron: '0 6 * * 1' # Ogni lunedì alle 6:00 UTC
+ workflow_dispatch: # Esecuzione manuale
+```
+
+#### Opzione C: Script manuale
+```bash
+# Eseguibile a mano quando si vuole aggiornare
+./scripts/generate-cantiletture.sh
+```
+
+---
+
+## Stima Costi
+
+| Voce | Valore |
+|------|--------|
+| Chiamate API/settimana | 1 (una sola chiamata copre tutta la settimana) |
+| Token input (letture + ~500 canti) | ~15.000 token |
+| Token output (JSON suggerimenti) | ~3.000 token |
+| Costo per chiamata (Gemini Flash) | ~0.001€ |
+| **Costo mensile stimato** | **< 0.01€** |
+| Rientra nell'abbonamento Google One | ✅ Sì |
+
+---
+
+## Piano di Esecuzione (Step by Step)
+
+### Fase 1: Script di Generazione
+1. [ ] Creare `scripts/generate-cantiletture.ts`
+2. [ ] Implementare il parsing RSS
+3. [ ] Implementare la chiamata Gemini con prompt ottimizzato
+4. [ ] Testare con le letture della settimana corrente
+5. [ ] Validare il JSON generato
+
+### Fase 2: Integrazione PWA
+6. [ ] Creare `CantiLettureService` che scarica e gestisce il JSON
+7. [ ] Aggiornare `LiturgiaPage` per mostrare i suggerimenti AI
+8. [ ] Implementare il fallback al keyword matching
+9. [ ] Testare l'interfaccia completa
+
+### Fase 3: Automazione
+10. [ ] Configurare il cron/script di esecuzione automatica
+11. [ ] Testare il ciclo completo (generazione → upload → visualizzazione)
+12. [ ] Documentare la procedura nel README
+
+---
+
+## Note Tecniche
+
+- **Dimensione stimata del JSON**: ~50-100 KB per settimana (7 giorni × 4-5 momenti × 3 canti)
+- **Cache**: Il JSON viene cachato in localStorage con TTL di 24 ore
+- **Compatibilità**: Il file viene servito dallo stesso server HTTP della PWA, nessun problema CORS
+- **Retrocompatibilità**: Se il file non esiste, la PWA continua a funzionare con il keyword matching
diff --git a/liturgia_strategy.md b/liturgia_strategy.md
new file mode 100644
index 0000000..e4b9b56
--- /dev/null
+++ b/liturgia_strategy.md
@@ -0,0 +1,40 @@
+# Strategia di Suggerimento Canti Liturgici
+
+Questo documento descrive l'approccio tecnico utilizzato per suggerire i canti attinenti alle letture del giorno nella PWA "CantiCristiani".
+
+## 1. Algoritmo di Analisi (Keyword Matching)
+
+Al momento **non viene utilizzata un'Intelligenza Artificiale generativa (LLM)** per due motivi principali:
+- **Performance**: L'analisi avviene istantaneamente sul dispositivo dell'utente senza chiamate API esterne lente.
+- **Privacy e Offline**: Il sistema può funzionare anche con una connettività limitata una volta scaricato il testo delle letture.
+
+### Fasi dell'Algoritmo:
+
+1. **Keyword Extraction**:
+ - Il testo di tutte le letture (Prima, Salmo, Seconda, Vangelo) viene normalizzato in minuscolo.
+ - Vengono rimosse le "stop words" (parole comuni come articoli, preposizioni, congiunzioni).
+ - Vengono estratte solo le parole con lunghezza superiore a 3 caratteri per evitare rumore.
+2. **Ponderazione e Scoring**:
+ - Ogni canto nel database viene analizzato cercando le keyword estratte.
+ - **Titolo (Peso 10)**: Se una parola chiave appare nel titolo, il punteggio del canto aumenta drasticamente.
+ - **Testo/Lyrics (Peso 1)**: Ogni occorrenza di una parola chiave nel testo del canto aggiunge 1 punto al punteggio totale.
+3. **Classificazione per Momento Liturgico**:
+ - I canti vengono raggruppati in base alle categorie liturgiche (Ingresso, Gloria, Offertorio, Comunione, ecc.) definite nel database.
+ - Il sistema seleziona i migliori 3 canti per ogni categoria per offrire una scelta bilanciata.
+
+## 2. Selezione della Data Predefinita
+
+L'applicazione calcola automaticamente la **prossima domenica** come data di default. Questo perché la maggior parte degli utenti utilizza la funzione per preparare la liturgia festiva imminente.
+
+## 3. Sviluppi Futuri: Ricerca Semantica (Embeddings)
+
+Per superare i limiti del matching testuale, la strategia futura prevede l'integrazione di tecniche di **Semantic Search** che possono essere eseguite direttamente nella PWA:
+
+### Architettura Proposta:
+- **Pre-calcolo dei Vettori**: Generazione dei vettori (embeddings) per l'intero database dei canti. Questi dati verrebbero inclusi in una versione estesa del file `canti.json`.
+- **Analisi On-Device**: Utilizzo di librerie matematiche leggere (come `similarity-js`) per calcolare la "distanza del coseno" tra il vettore della lettura e quelli dei canti.
+- **Vantaggi**: Il sistema identificherebbe correlazioni concettuali (es. "Luce" -> "Mondo", "Pane" -> "Eucarestia") anche in assenza di corrispondenze testuali esatte.
+
+### Implementazione Tecnica:
+1. Integrazione di un modello di embedding (es. `all-MiniLM-L6-v2`) via Web Workers per non bloccare l'interfaccia.
+2. Memorizzazione locale dei vettori tramite IndexedDB per garantire performance elevate dopo il primo caricamento.
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index cd6f74a..64a0fa4 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -27,6 +27,10 @@ const routes: Routes = [
path: 'propose-canto',
loadComponent: () => import('./pages/propose-canto/propose-canto.page').then( m => m.ProposeCantoPage)
},
+ {
+ path: 'liturgia',
+ loadChildren: () => import('./pages/liturgia/liturgia.module').then( m => m.LiturgiaPageModule)
+ },
];
@NgModule({
diff --git a/src/app/pages/liturgia/liturgia.module.ts b/src/app/pages/liturgia/liturgia.module.ts
new file mode 100644
index 0000000..0828855
--- /dev/null
+++ b/src/app/pages/liturgia/liturgia.module.ts
@@ -0,0 +1,22 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { IonicModule } from '@ionic/angular';
+import { RouterModule } from '@angular/router';
+import { LiturgiaPage } from './liturgia.page';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ IonicModule,
+ RouterModule.forChild([
+ {
+ path: '',
+ component: LiturgiaPage
+ }
+ ])
+ ],
+ declarations: [LiturgiaPage]
+})
+export class LiturgiaPageModule {}
diff --git a/src/app/pages/liturgia/liturgia.page.html b/src/app/pages/liturgia/liturgia.page.html
new file mode 100644
index 0000000..3b1360e
--- /dev/null
+++ b/src/app/pages/liturgia/liturgia.page.html
@@ -0,0 +1,71 @@
+ Caricamento letture... Non è stato possibile caricare le letture per oggi.
Abilita aggiunta e gestione "Miei"
-Letture e suggerimenti canti
+