feat: public marketing site (vitrine)

Adds a (marketing) route group -- Home, Features, About, Privacy,
Terms, Contact -- reusing the app's design system/i18n/deploy
pipeline rather than a separate site. Root page.tsx now branches on
session instead of always redirecting to /recipes: logged-in visitors
still land in the app unchanged, logged-out visitors see the vitrine
home page.

The actual integration point: proxy.ts's PUBLIC_PATHS previously sent
every anonymous "/" request straight to /login before page.tsx's
redirect ever ran. Added the new marketing routes to PUBLIC_PATHS,
plus a separate exact-match list for "/" itself -- it can't go in the
startsWith-matched array, since every path starts with "/" and that
would make the whole app public.

Also adds app/sitemap.ts and app/robots.ts (neither existed before),
disallowing the authenticated app and the unlisted /r/ and /s/ share
routes from crawling while allowing /u/ public profiles.

Pricing page deliberately not included -- waiting on Stripe Checkout
(STRIPE_PLAN.md) so its CTA goes somewhere real. Privacy/Terms are
structural drafts flagged inline as not lawyer-reviewed, per
STRIPE_PLAN.md's own tax-advice caveat -- same spirit here.

Verified with a full production build (pnpm build) -- compiles clean,
all 7 new routes render, since there's no DB in this sandbox to run
the dev server against for a real click-through.

v0.48.0
This commit is contained in:
Arnaud
2026-07-18 09:33:47 +02:00
parent 2a256a8943
commit e71c978e52
19 changed files with 533 additions and 10 deletions
+58
View File
@@ -1,4 +1,62 @@
{
"marketing": {
"nav": {
"features": "Features",
"about": "About",
"openApp": "Open app",
"login": "Log in",
"signup": "Sign up"
},
"footer": {
"about": "About",
"privacy": "Privacy",
"terms": "Terms",
"contact": "Contact",
"copyright": "© {year} Epicure"
},
"home": {
"heroTitle": "Your AI-powered recipe book",
"heroSubtitle": "Generate, organize, and share recipes — plan meals, track your pantry, and cook with an assistant that can act on your behalf.",
"ctaPrimary": "Get started free",
"ctaSecondary": "See features",
"bottomCtaTitle": "Start cooking smarter",
"bottomCtaSubtitle": "Free to start. No credit card required.",
"highlights": {
"ai": { "title": "AI recipe generation", "description": "Generate a full recipe from an idea, a photo, or a URL — vision and text models work together to write the details." },
"assistant": { "title": "Cooking assistant", "description": "Ask cooking questions anytime — it can even draft a recipe or shopping list right in the conversation, for you to review and confirm." },
"mealPlan": { "title": "Meal planning", "description": "Plan your week, generate a plan with AI, and turn it straight into a shopping list." },
"pantry": { "title": "Pantry tracking", "description": "Know what you have on hand — scan it in, and let recipes account for it automatically." },
"social": { "title": "Share & discover", "description": "Follow other cooks, rate and comment on recipes, and control exactly who can see yours." },
"batchCook": { "title": "Batch cooking", "description": "Cook once, eat all week — dedicated batch-cook planning with fridge/freezer guidance." }
}
},
"features": {
"title": "Everything you need to cook smarter",
"subtitle": "From a single idea to a finished, organized recipe collection.",
"cta": "Try it free",
"items": {
"ai": { "title": "AI recipe generation", "description": "Generate a recipe from a short idea, a URL, or a description — dish or drink, automatically detected." },
"photoImport": { "title": "Import from a photo", "description": "A vision model recognizes what's in the photo, then a text model writes the full recipe from that description." },
"assistant": { "title": "Cooking assistant with tool-calling", "description": "A conversational assistant for cooking questions that can also draft a recipe or shopping-list additions for you to confirm — nothing saves without your say." },
"mealPlan": { "title": "AI meal planning", "description": "Generate a week of meals around your preferences, dietary needs, and what's already in your pantry." },
"pantry": { "title": "Pantry tracking", "description": "Track what you have — scan barcodes or photos — and let it inform meal planning and shopping lists." },
"shoppingList": { "title": "Shopping lists", "description": "Multiple lists, shared with others, auto-populated from recipes or meal plans." },
"social": { "title": "Follows, ratings & comments", "description": "A social layer for recipes — follow other cooks, rate and review, with granular visibility controls including followers-only." },
"batchCook": { "title": "Batch cooking", "description": "Plan cook-once-eat-all-week sessions with per-dish fridge/freezer guidance." }
}
},
"about": {
"title": "About Epicure",
"paragraphs": [
"Epicure started as a simple idea: a recipe book that actually keeps up with how you cook — planning, pantry, and AI all in one place instead of five different apps.",
"It's an independent project, built and maintained by one person, growing based on what's actually useful to the people using it."
]
},
"contact": {
"title": "Get in touch",
"subtitle": "Questions, feedback, or something broken — email us and we'll get back to you."
}
},
"nav": {
"menu": "Menu",
"recipes": "Recipes",