Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 22d2603a11 | |||
| b244452e7e | |||
| 879b3639e0 | |||
| 553ea4848b | |||
| 0949125dd7 | |||
| cb39383e83 | |||
| 5a26c1d079 | |||
| a03f120761 | |||
| 51ddf5f7f7 | |||
| f74ede57a9 | |||
| fd4199bc60 | |||
| 3d32598eda |
20
next.config.js
Normal file
20
next.config.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
images: {
|
||||||
|
remotePatterns: [
|
||||||
|
{
|
||||||
|
protocol: 'https',
|
||||||
|
hostname: 'webuild-dev.s3.eu-north-1.amazonaws.com',
|
||||||
|
pathname: '/**',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
protocol: 'https',
|
||||||
|
hostname: '**.amazonaws.com',
|
||||||
|
pathname: '/**',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
unoptimized: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = nextConfig;
|
||||||
@@ -15,6 +15,12 @@ export default function RootLayout({
|
|||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<script
|
||||||
|
async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/next-images@1.0.0/dist/index.js"
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
<body className={inter.className}>
|
<body className={inter.className}>
|
||||||
{children}
|
{children}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import {
|
|||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
||||||
const [showOnboarding, setShowOnboarding] = useState(false);
|
const [showOnboarding, setShowOnboarding] = useState(false);
|
||||||
const [mounted, setMounted] = useState(true);
|
|
||||||
|
|
||||||
const handleCompleteOnboarding = () => {
|
const handleCompleteOnboarding = () => {
|
||||||
try {
|
try {
|
||||||
@@ -53,9 +52,10 @@ export default function LandingPage() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!mounted) {
|
const handleSignIn = () => {
|
||||||
return null;
|
setIsAuthenticated(true);
|
||||||
}
|
setShowOnboarding(true);
|
||||||
|
};
|
||||||
|
|
||||||
if (isAuthenticated && showOnboarding) {
|
if (isAuthenticated && showOnboarding) {
|
||||||
return (
|
return (
|
||||||
@@ -92,12 +92,12 @@ export default function LandingPage() {
|
|||||||
{
|
{
|
||||||
id: "step1", title: "Welcome Screen - Understand Your Cooking Goals", tags: ["Step 1", "Introduction"],
|
id: "step1", title: "Welcome Screen - Understand Your Cooking Goals", tags: ["Step 1", "Introduction"],
|
||||||
imageSrc:
|
imageSrc:
|
||||||
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-premium-mobile-app-welcome-screen-with-1772651576151-a759364c.png", imageAlt: "Welcome onboarding screen"
|
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-premium-mobile-app-welcome-screen-with-1772651576151-a759364c.png", imageAlt: "Welcome onboarding screen", onFeatureClick: () => console.log("Feature 1 clicked")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "step2", title: "Preferences Setup - Choose Your Cuisine & Skill", tags: ["Step 2", "Personalization"],
|
id: "step2", title: "Preferences Setup - Choose Your Cuisine & Skill", tags: ["Step 2", "Personalization"],
|
||||||
imageSrc:
|
imageSrc:
|
||||||
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-mobile-app-preferences-setup-screen-wi-1772651576088-c40d1a91.png", imageAlt: "Preferences setup interface"
|
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-mobile-app-preferences-setup-screen-wi-1772651576088-c40d1a91.png", imageAlt: "Preferences setup interface", onFeatureClick: () => console.log("Feature 2 clicked")
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
animationType="slide-up"
|
animationType="slide-up"
|
||||||
@@ -140,7 +140,7 @@ export default function LandingPage() {
|
|||||||
{ name: "Settings", id: "settings" },
|
{ name: "Settings", id: "settings" },
|
||||||
]}
|
]}
|
||||||
button={{
|
button={{
|
||||||
text: isAuthenticated ? "Sign Out" : "Sign In", href: isAuthenticated ? "#" : "#auth", onClick: isAuthenticated ? handleSignOut : undefined,
|
text: isAuthenticated ? "Sign Out" : "Sign In", href: isAuthenticated ? "#" : "#auth", onClick: isAuthenticated ? handleSignOut : handleSignIn,
|
||||||
}}
|
}}
|
||||||
animateOnLoad={true}
|
animateOnLoad={true}
|
||||||
className="backdrop-blur-md bg-white/30 border border-white/20"
|
className="backdrop-blur-md bg-white/30 border border-white/20"
|
||||||
@@ -158,7 +158,7 @@ export default function LandingPage() {
|
|||||||
tagIcon={Sparkles}
|
tagIcon={Sparkles}
|
||||||
tagAnimation="slide-up"
|
tagAnimation="slide-up"
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Get Started", href: "#auth" },
|
{ text: "Get Started", href: "#auth", onClick: handleSignIn },
|
||||||
{ text: "Learn More", href: "#features" },
|
{ text: "Learn More", href: "#features" },
|
||||||
]}
|
]}
|
||||||
buttonAnimation="slide-up"
|
buttonAnimation="slide-up"
|
||||||
@@ -226,15 +226,15 @@ export default function LandingPage() {
|
|||||||
products={[
|
products={[
|
||||||
{
|
{
|
||||||
id: "ingredient-input", name: "Smart Ingredient Input", price: "Voice & Camera Scanning", imageSrc:
|
id: "ingredient-input", name: "Smart Ingredient Input", price: "Voice & Camera Scanning", imageSrc:
|
||||||
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-mobile-app-ingredient-input-screen-wit-1772651575762-1165d0de.png?_wi=2", imageAlt: "Ingredient input interface"
|
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-mobile-app-ingredient-input-screen-wit-1772651575762-1165d0de.png?_wi=2", imageAlt: "Ingredient input interface", onProductClick: () => console.log("Product 1 clicked")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "recipe-generation", name: "AI Recipe Generation", price: "Instant Suggestions", imageSrc:
|
id: "recipe-generation", name: "AI Recipe Generation", price: "Instant Suggestions", imageSrc:
|
||||||
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/beautiful-recipe-result-cards-with-glass-1772651576068-e357f495.png?_wi=2", imageAlt: "Recipe cards display"
|
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/beautiful-recipe-result-cards-with-glass-1772651576068-e357f495.png?_wi=2", imageAlt: "Recipe cards display", onProductClick: () => console.log("Product 2 clicked")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "music-system", name: "Cultural Music System", price: "Immersive Experience", imageSrc:
|
id: "music-system", name: "Cultural Music System", price: "Immersive Experience", imageSrc:
|
||||||
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-cultural-music-player-interface-showin-1772651576437-2be31020.png?_wi=2", imageAlt: "Music player interface"
|
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUcMfqJIbBXtBhmBEoWXMLyB4X/a-cultural-music-player-interface-showin-1772651576437-2be31020.png?_wi=2", imageAlt: "Music player interface", onProductClick: () => console.log("Product 3 clicked")
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
animationType="slide-up"
|
animationType="slide-up"
|
||||||
@@ -285,21 +285,21 @@ export default function LandingPage() {
|
|||||||
plans={[
|
plans={[
|
||||||
{
|
{
|
||||||
id: "starter", badge: "Great for Beginners", badgeIcon: Zap,
|
id: "starter", badge: "Great for Beginners", badgeIcon: Zap,
|
||||||
price: "Free", subtitle: "Perfect for exploring recipes", buttons: [{ text: "Get Started", href: "#auth" }],
|
price: "Free", subtitle: "Perfect for exploring recipes", buttons: [{ text: "Get Started", href: "#auth", onClick: handleSignIn }],
|
||||||
features: [
|
features: [
|
||||||
"50 AI-generated recipes/month", "Basic ingredient input", "Standard cooking instructions", "Cultural music system"
|
"50 AI-generated recipes/month", "Basic ingredient input", "Standard cooking instructions", "Cultural music system"
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "pro", badge: "Most Popular", badgeIcon: Sparkles,
|
id: "pro", badge: "Most Popular", badgeIcon: Sparkles,
|
||||||
price: "$9.99/mo", subtitle: "For serious home cooks", buttons: [{ text: "Start Free Trial", href: "#auth" }],
|
price: "$9.99/mo", subtitle: "For serious home cooks", buttons: [{ text: "Start Free Trial", href: "#auth", onClick: handleSignIn }],
|
||||||
features: [
|
features: [
|
||||||
"Unlimited AI recipes", "Voice & camera ingredient scanning", "Smart pantry management", "Personalized cooking suggestions", "Advanced nutritional info", "Priority support"
|
"Unlimited AI recipes", "Voice & camera ingredient scanning", "Smart pantry management", "Personalized cooking suggestions", "Advanced nutritional info", "Priority support"
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "chef", badge: "For Enthusiasts", badgeIcon: Award,
|
id: "chef", badge: "For Enthusiasts", badgeIcon: Award,
|
||||||
price: "$19.99/mo", subtitle: "Master your culinary skills", buttons: [{ text: "Upgrade Now", href: "#auth" }],
|
price: "$19.99/mo", subtitle: "Master your culinary skills", buttons: [{ text: "Upgrade Now", href: "#auth", onClick: handleSignIn }],
|
||||||
features: [
|
features: [
|
||||||
"Everything in Pro", "Professional cooking techniques", "Meal planning & grocery lists", "Weekly recipe curation", "Family sharing (up to 5 members)", "Exclusive chef interviews"
|
"Everything in Pro", "Professional cooking techniques", "Meal planning & grocery lists", "Weekly recipe curation", "Family sharing (up to 5 members)", "Exclusive chef interviews"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user