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:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user