feat: post-signup onboarding wizard (dietary/allergen prefs, notifications, skippable) (v0.77.0)

New accounts land on a 3-step wizard after signup — welcome, dietary preferences & allergens, notification opt-in — skippable at every step, shown once via a users.onboardingCompletedAt gate in the (app) layout. Existing accounts are backfilled as already-onboarded.

Also gives the allergen-preferences step a real write path: user_allergens previously only had a GDPR-export read.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-24 11:46:07 +02:00
parent 003e8abe22
commit 4aa47ca61d
17 changed files with 6628 additions and 6 deletions
+32 -1
View File
@@ -766,7 +766,10 @@
"surpriseMe": "Surprise me",
"generatingContent": "Generating recipe content…",
"decrease": "Decrease",
"increase": "Increase"
"increase": "Increase",
"skip": "Skip",
"continue": "Continue",
"finish": "Finish"
},
"auth": {
"signIn": "Sign in",
@@ -1642,5 +1645,33 @@
"previous": "Previous",
"next": "Next",
"pageOf": "Page {page} of {total}"
},
"onboarding": {
"stepOf": "Step {step} of {total}",
"welcomeTitle": "Welcome to Epicure",
"welcomeBody": "A couple of quick questions to tailor recipes and meal plans to you — takes under a minute, and you can skip any step.",
"dietaryTitle": "Dietary preferences & allergens",
"dietaryBody": "We'll use these to steer AI recipe generation and flag matching recipes — you can always change them later in Settings.",
"dietaryTagsLabel": "Diet",
"allergensLabel": "Allergens to avoid",
"dietVegan": "Vegan",
"dietVegetarian": "Vegetarian",
"dietGlutenFree": "Gluten-free",
"dietDairyFree": "Dairy-free",
"dietNutFree": "Nut-free",
"dietHalal": "Halal",
"dietKosher": "Kosher",
"allergenPeanuts": "Peanuts",
"allergenTreeNuts": "Tree nuts",
"allergenDairy": "Dairy",
"allergenEggs": "Eggs",
"allergenShellfish": "Shellfish",
"allergenFish": "Fish",
"allergenSoy": "Soy",
"allergenGluten": "Gluten",
"notificationsTitle": "Stay in the loop",
"notificationsBody": "Get notified about comments, follows, and shopping list reminders. You can fine-tune categories anytime in Settings → Notifications.",
"finishFailed": "Something went wrong — you can finish setup later from Settings",
"goToRecipes": "Go to recipes"
}
}
+32 -1
View File
@@ -766,7 +766,10 @@
"surpriseMe": "Surprends-moi",
"generatingContent": "Génération du contenu de la recette…",
"decrease": "Diminuer",
"increase": "Augmenter"
"increase": "Augmenter",
"skip": "Passer",
"continue": "Continuer",
"finish": "Terminer"
},
"auth": {
"signIn": "Se connecter",
@@ -1633,5 +1636,33 @@
"previous": "Précédent",
"next": "Suivant",
"pageOf": "Page {page} sur {total}"
},
"onboarding": {
"stepOf": "Étape {step} sur {total}",
"welcomeTitle": "Bienvenue sur Epicure",
"welcomeBody": "Quelques questions rapides pour adapter les recettes et les plans de repas à vos besoins — moins d'une minute, et chaque étape peut être passée.",
"dietaryTitle": "Préférences alimentaires & allergènes",
"dietaryBody": "Nous les utiliserons pour orienter la génération de recettes par l'IA et repérer les recettes correspondantes — vous pourrez toujours les modifier plus tard dans les Réglages.",
"dietaryTagsLabel": "Régime",
"allergensLabel": "Allergènes à éviter",
"dietVegan": "Végan",
"dietVegetarian": "Végétarien",
"dietGlutenFree": "Sans gluten",
"dietDairyFree": "Sans lactose",
"dietNutFree": "Sans fruits à coque",
"dietHalal": "Halal",
"dietKosher": "Kasher",
"allergenPeanuts": "Arachides",
"allergenTreeNuts": "Fruits à coque",
"allergenDairy": "Produits laitiers",
"allergenEggs": "Œufs",
"allergenShellfish": "Crustacés",
"allergenFish": "Poisson",
"allergenSoy": "Soja",
"allergenGluten": "Gluten",
"notificationsTitle": "Restez informé",
"notificationsBody": "Recevez des notifications pour les commentaires, les abonnements et les rappels de liste de courses. Vous pourrez affiner les catégories à tout moment dans Réglages → Notifications.",
"finishFailed": "Une erreur est survenue — vous pourrez terminer la configuration plus tard dans les Réglages",
"goToRecipes": "Aller aux recettes"
}
}