New /fasting route. Editorial layout matching the rest of the app
("CAPITOLO VII / Digiuno intermittente.").
When no active session:
- "Pronto a iniziare" eyebrow + italic call-to-action
- Protocol Select (16:8 default; full set FASTING_PROTOCOLS, hours derived
from PROTOCOL_DEFAULT_MINUTES)
- "Avvia digiuno" CTA → server action that POSTs to /me/fast-events
- Right column: Roman-numeral guide (I-IV) for the four most common protocols
with title + description from messages.json
When a session is active (status=IN_PROGRESS, no endedAt):
- Live timer in massive monospace clamp(3rem,9vw,6.25rem), tabular numerals,
ticking once per second via setInterval
- Italic remaining-time line ("Mancano HH:MM:SS") or "Obiettivo raggiunto."
once the protocol target is reached
- Hairline progress bar; ink while running, pomodoro after target
- "Concludi adesso" / "Concludi" CTA → PATCH with status=COMPLETED
- "Annulla sessione" ghost link → PATCH with status=ABORTED (with confirm())
- Right column: "FASE METABOLICA" with current phase title in pomodoro and
italic description (postprandial 0-4h / glycogenolysis 4-12h / lipolysis
12-18h / ketogenesis 18-24h / autophagy 24h+, PRD §5.3)
- "INIZIATO" and "OBIETTIVO" stats in mono
History below:
- Three big mono stats: completed sessions count, total hours, total sessions
- Last 12 events listed with protocol label in pomodoro italic, italian
short date, status eyebrow, duration in mono
Home gains a fourth NavItem ("Digiuno — Digiuno intermittente").
Verified end-to-end in Chrome: started a 16:8 → live ticking timer at
00:00:04, "Mancano 15:59:55", "Post-prandiale" phase shown.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
226 lines
9.3 KiB
JSON
226 lines
9.3 KiB
JSON
{
|
||
"Home": {
|
||
"title": "Una keto italiana, sostenibile",
|
||
"tagline": "Il sentiero che ti accompagna dalla prima settimana di adattamento al mantenimento — settimana dopo settimana, piatto dopo piatto.",
|
||
"ctaPrimary": "Iscriviti",
|
||
"ctaSecondary": "Accedi",
|
||
"disclaimer": "KetoPath è uno strumento di stile di vita: suggerisce, non prescrive. Le indicazioni nutrizionali non sostituiscono il parere del tuo medico.",
|
||
"signedInAs": "Accesso effettuato come {name}",
|
||
"signOut": "Esci",
|
||
"completeProfile": "Profilo & calcoli",
|
||
"viewPlan": "Piano della settimana",
|
||
"viewTracking": "Pesata & misure",
|
||
"viewFasting": "Digiuno intermittente",
|
||
"lettura": "Continua la lettura",
|
||
"inizia": "Inizia",
|
||
"greeting": "Buongiorno, <name>{name}</name>.",
|
||
"principle1": "Personalizzazione totale: ciò che vedi è solo ciò che ti riguarda.",
|
||
"principle2": "Cucina italiana e mediterranea: ingredienti veri, di stagione, reperibili.",
|
||
"principle3": "Progressività: dalla fase intensiva al mantenimento, senza strappi."
|
||
},
|
||
"Welcome": {
|
||
"title": "Prima di iniziare",
|
||
"subtitle": "KetoPath è uno strumento di stile di vita, non un dispositivo medico. Quattro punti, prima di proseguire.",
|
||
"point1": "L'app fornisce solo suggerimenti di stile di vita basati sui parametri che inserisci.",
|
||
"point2": "Non diagnostica patologie, non prescrive trattamenti, non sostituisce il parere del tuo medico.",
|
||
"point3": "Se hai diabete di tipo 1, sei in gravidanza o allattamento, hai disturbi alimentari, problemi cardiaci o renali — parla prima con il tuo medico.",
|
||
"point4": "Prima di iniziare ti consigliamo esami di base: glicemia, colesterolo, profilo lipidico, funzionalità renale ed epatica.",
|
||
"checkAdult": "Confermo di essere maggiorenne.",
|
||
"checkAware": "Dichiaro di non avere condizioni mediche escludenti, oppure di averle discusse con il mio medico.",
|
||
"checkAccepts": "Accetto che KetoPath non sostituisce il parere medico professionale.",
|
||
"submit": "Accetto e proseguo",
|
||
"submitting": "Salvataggio…",
|
||
"legalNote": "Il consenso è registrato con data e ora come previsto dall'art. 7 GDPR."
|
||
},
|
||
"CookieBanner": {
|
||
"aria": "Informativa cookie",
|
||
"message": "Usiamo solo cookie essenziali per autenticazione e sessione. Niente analytics o tracker di terze parti.",
|
||
"dismiss": "Ho capito"
|
||
},
|
||
"Metadata": {
|
||
"title": "KetoPath — Chetogenica e digiuno intermittente, personalizzati",
|
||
"description": "Una keto italiana, sostenibile. Piani adattivi, tracking e lista della spesa automatica — settimana dopo settimana."
|
||
},
|
||
"Auth": {
|
||
"SignIn": {
|
||
"title": "Accedi",
|
||
"subtitle": "Bentornato. Riprendi da dove avevi lasciato.",
|
||
"emailLabel": "Email",
|
||
"passwordLabel": "Password",
|
||
"submit": "Accedi",
|
||
"submitting": "Accesso in corso…",
|
||
"google": "Continua con Google",
|
||
"or": "oppure",
|
||
"noAccount": "Non hai ancora un account? <link>Iscriviti</link>",
|
||
"error": "Credenziali non valide. Riprova."
|
||
},
|
||
"SignUp": {
|
||
"title": "Iscriviti",
|
||
"subtitle": "Crea il tuo profilo KetoPath in meno di un minuto.",
|
||
"nameLabel": "Come ti chiami",
|
||
"emailLabel": "Email",
|
||
"passwordLabel": "Password",
|
||
"passwordHint": "Almeno 8 caratteri",
|
||
"submit": "Crea account",
|
||
"submitting": "Creazione…",
|
||
"google": "Continua con Google",
|
||
"or": "oppure",
|
||
"haveAccount": "Hai già un account? <link>Accedi</link>",
|
||
"error": "Non è stato possibile completare la registrazione. Riprova.",
|
||
"disclaimer": "Procedendo accetti che i tuoi dati siano trattati come descritto nell'informativa sulla privacy. KetoPath non sostituisce il parere medico."
|
||
}
|
||
},
|
||
"Fasting": {
|
||
"title": "Digiuno intermittente",
|
||
"subtitle": "Una finestra alimentare e una di riposo. Il timer scandisce il ritmo, il corpo fa il resto.",
|
||
"historyTitle": "Storico sessioni",
|
||
"activeBadge": "Sessione in corso",
|
||
"inactiveBadge": "Pronto a iniziare",
|
||
"startCallToAction": "Scegli un protocollo e parti. Il timer continua a scorrere anche se chiudi l'app.",
|
||
"chooseProtocol": "Protocollo",
|
||
"start": "Avvia digiuno",
|
||
"starting": "Avvio…",
|
||
"saving": "Salvataggio…",
|
||
"remaining": "Mancano {time}",
|
||
"reached": "Obiettivo raggiunto. Puoi rompere il digiuno o proseguire.",
|
||
"completeReached": "Concludi",
|
||
"completeEarly": "Concludi adesso",
|
||
"abort": "Annulla sessione",
|
||
"confirmAbort": "Sei sicuro di voler annullare questa sessione?",
|
||
"phaseTitle": "Fase metabolica",
|
||
"phases": {
|
||
"postprandial": {
|
||
"label": "Post-prandiale",
|
||
"description": "Digestione in corso. Insulina alta, glicemia in salita."
|
||
},
|
||
"glycogenolysis": {
|
||
"label": "Glicogenolisi",
|
||
"description": "Il fegato libera glucosio dalle scorte di glicogeno. L'insulina cala."
|
||
},
|
||
"lipolysis": {
|
||
"label": "Lipolisi",
|
||
"description": "Le scorte di grasso iniziano a essere mobilitate per produrre energia."
|
||
},
|
||
"ketogenesis": {
|
||
"label": "Chetogenesi",
|
||
"description": "Il fegato produce corpi chetonici. Le sensazioni mentali si fanno più nitide."
|
||
},
|
||
"autophagy": {
|
||
"label": "Autofagia",
|
||
"description": "Le cellule riciclano componenti danneggiati. Pulizia interna profonda."
|
||
}
|
||
},
|
||
"startedAt": "Iniziato",
|
||
"target": "Obiettivo",
|
||
"protocolGuideTitle": "Guida ai protocolli",
|
||
"protocolHints": {
|
||
"FOURTEEN_TEN": {
|
||
"title": "Inizio dolce",
|
||
"description": "Adatto in fase di mantenimento o per chi inizia. 10 ore di alimentazione."
|
||
},
|
||
"SIXTEEN_EIGHT": {
|
||
"title": "Lo standard",
|
||
"description": "Il protocollo più diffuso. Equilibrio tra sostenibilità e benefici metabolici."
|
||
},
|
||
"EIGHTEEN_SIX": {
|
||
"title": "Più aggressivo",
|
||
"description": "Inizia a sollecitare la chetogenesi. Per chi è già adattato."
|
||
},
|
||
"TWENTY_FOUR": {
|
||
"title": "Avanzato",
|
||
"description": "Solo 4 ore di alimentazione. Da praticare con regolarità ma non quotidianamente."
|
||
}
|
||
},
|
||
"emptyHistory": "Nessuna sessione registrata. Avvia il primo digiuno per iniziare a costruire la serie.",
|
||
"statCompleted": "Sessioni concluse",
|
||
"statTotal": "Ore totali",
|
||
"statSessions": "Sessioni totali",
|
||
"status": {
|
||
"IN_PROGRESS": "In corso",
|
||
"COMPLETED": "Completata",
|
||
"ABORTED": "Annullata"
|
||
}
|
||
},
|
||
"Tracking": {
|
||
"title": "Pesata e misure",
|
||
"subtitle": "Pochi numeri, una volta a settimana. La tendenza emerge dalla regolarità — non dalla pesata di oggi.",
|
||
"newEntry": "Nuova rilevazione",
|
||
"history": "Storico",
|
||
"date": "Data",
|
||
"weightKg": "Peso (kg)",
|
||
"measurements": "Misure (cm) — opzionali",
|
||
"waist": "Girovita",
|
||
"hips": "Fianchi",
|
||
"thigh": "Coscia",
|
||
"arm": "Braccio",
|
||
"subjective": "Indicatori soggettivi (1–10)",
|
||
"energy": "Energia",
|
||
"sleep": "Sonno",
|
||
"hunger": "Fame",
|
||
"save": "Registra",
|
||
"saving": "Salvataggio…",
|
||
"saved": "Registrato.",
|
||
"current": "Peso attuale",
|
||
"delta": "Variazione",
|
||
"emptyHistory": "Nessuna rilevazione registrata. Inserisci la prima a destra: la tendenza apparirà dopo due o tre pesate."
|
||
},
|
||
"Plan": {
|
||
"title": "Il tuo piano",
|
||
"weekOf": "Settimana del {date}",
|
||
"noPlan": "Non hai ancora un piano. Generalo: l'algoritmo sceglie le ricette adatte alla tua fase e ai tuoi macros.",
|
||
"generate": "Genera piano",
|
||
"regenerate": "Rigenera",
|
||
"noRecipe": "Nessuna ricetta selezionata",
|
||
"showAlternatives": "Vedi {n} alternative",
|
||
"hideAlternatives": "Nascondi",
|
||
"swap": "Scegli",
|
||
"dayTotal": "{kcal} kcal totali",
|
||
"meals": {
|
||
"COLAZIONE": "Colazione",
|
||
"PRANZO": "Pranzo",
|
||
"SPUNTINO": "Spuntino",
|
||
"CENA": "Cena"
|
||
},
|
||
"days": {
|
||
"monday": "Lunedì",
|
||
"tuesday": "Martedì",
|
||
"wednesday": "Mercoledì",
|
||
"thursday": "Giovedì",
|
||
"friday": "Venerdì",
|
||
"saturday": "Sabato",
|
||
"sunday": "Domenica"
|
||
}
|
||
},
|
||
"Profile": {
|
||
"title": "Il tuo profilo",
|
||
"subtitle": "I dati che ci servono per calcolare BMR, TDEE e i target di macros della settimana.",
|
||
"age": "Età",
|
||
"gender": "Sesso",
|
||
"heightCm": "Altezza (cm)",
|
||
"weightStartKg": "Iniziale",
|
||
"weightCurrentKg": "Attuale",
|
||
"weightGoalKg": "Obiettivo",
|
||
"activityLevel": "Livello di attività",
|
||
"selectPlaceholder": "Seleziona…",
|
||
"save": "Salva profilo",
|
||
"saving": "Salvataggio…",
|
||
"summary": "Calcolo personalizzato",
|
||
"emptySummary": "Salva il profilo per ricevere il tuo BMR, il TDEE e il target calorico giornaliero.",
|
||
"bmr": "Metabolismo basale",
|
||
"tdee": "Fabbisogno totale",
|
||
"activityMultiplier": "Moltiplicatore attività",
|
||
"hint": "Valori stimati con la formula Mifflin-St Jeor. Non sostituiscono il parere di un nutrizionista.",
|
||
"genderOptions": {
|
||
"MALE": "Maschio",
|
||
"FEMALE": "Femmina",
|
||
"OTHER": "Altro / preferisco non specificare"
|
||
},
|
||
"activityOptions": {
|
||
"SEDENTARY": "Sedentario · lavoro d'ufficio",
|
||
"LIGHT": "Leggero · sport 1–3 volte / settimana",
|
||
"MODERATE": "Moderato · sport 3–5 volte / settimana",
|
||
"INTENSE": "Intenso · sport 6+ volte / settimana"
|
||
}
|
||
}
|
||
}
|