diff --git a/public/assets/images/back-side.jfif b/public/assets/images/back-side.jfif new file mode 100644 index 0000000..32c39ab Binary files /dev/null and b/public/assets/images/back-side.jfif differ diff --git a/public/assets/images/banglore-nit-view.mp4 b/public/assets/images/banglore-nit-view.mp4 new file mode 100644 index 0000000..928b199 Binary files /dev/null and b/public/assets/images/banglore-nit-view.mp4 differ diff --git a/public/assets/images/bottom-side.jfif b/public/assets/images/bottom-side.jfif new file mode 100644 index 0000000..4a46008 Binary files /dev/null and b/public/assets/images/bottom-side.jfif differ diff --git a/public/assets/images/front-side.jfif b/public/assets/images/front-side.jfif new file mode 100644 index 0000000..778b0e2 Binary files /dev/null and b/public/assets/images/front-side.jfif differ diff --git a/public/assets/images/left-side.jfif b/public/assets/images/left-side.jfif new file mode 100644 index 0000000..4b4dacd Binary files /dev/null and b/public/assets/images/left-side.jfif differ diff --git a/public/assets/images/right-side.jfif b/public/assets/images/right-side.jfif new file mode 100644 index 0000000..fc345a3 Binary files /dev/null and b/public/assets/images/right-side.jfif differ diff --git a/public/assets/images/top-side.jfif b/public/assets/images/top-side.jfif new file mode 100644 index 0000000..d02fb48 Binary files /dev/null and b/public/assets/images/top-side.jfif differ diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..1f4cea3 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,34 @@ +import Header from "@/components/Header"; +import InnerBanner from "@/components/InnerBanner"; +import About from "@/components/About"; +import WhyChooseUs from "@/components/WhyChooseUs"; +import Testimonials from "@/components/Testimonials"; +import Footer from "@/components/Footer"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "About Us | Sky and Soil Real Estate", + description: "Learn about Sky and Soil's mission to connect you with nature-inspired living spaces. We are authorized partners for Godrej Properties.", +}; + +export default function AboutPage() { + return ( +
+
+ +
+ + + +
+
+ ); +} diff --git a/src/app/compare/page.tsx b/src/app/compare/page.tsx new file mode 100644 index 0000000..99dfc8b --- /dev/null +++ b/src/app/compare/page.tsx @@ -0,0 +1,11 @@ +import CompareClient from "@/components/CompareClient"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Compare Properties | Sky and Soil Real Estate", + description: "Compare up to 4 properties side-by-side to find the perfect home that meets your needs. Analyze price, amenities, and specifications.", +}; + +export default function ComparePage() { + return ; +} diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx new file mode 100644 index 0000000..c378f9a --- /dev/null +++ b/src/app/contact/page.tsx @@ -0,0 +1,30 @@ +import Header from "@/components/Header"; +import InnerBanner from "@/components/InnerBanner"; +import ContactCTA from "@/components/ContactCTA"; +import Footer from "@/components/Footer"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Contact Us | Sky and Soil Real Estate", + description: "Get in touch with Sky and Soil for inquiries about our premium properties in North Bengaluru. We are here to help you find your dream home.", +}; + +export default function ContactPage() { + return ( +
+
+ +
+ +
+
+
+ ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 288ecea..2219019 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -8,11 +8,18 @@ const inter = Inter({ }); export const metadata: Metadata = { - title: "Aurora Springs Realty | Redefining Modern Living", - description: "Premium villas, plots, and apartments in North Bengaluru. Experience luxury living with Aurora Springs Realty.", + title: { + default: "Sky and Soil | Premium Real Estate in North Bengaluru", + template: "%s | Sky and Soil" + }, + description: "Discover luxury apartments, villas, and plots in North Bengaluru. Sky and Soil connects you with nature-inspired living spaces and Godrej Properties.", + keywords: ["Real Estate", "Bengaluru", "Luxury Homes", "Godrej Properties", "North Bengaluru", "Villas", "Apartments"], }; import { ThemeProvider } from "@/components/ThemeProvider"; +import { CompareProvider } from "@/context/CompareContext"; +import CompareBar from "@/components/CompareBar"; +import MouseAnimation from "@/components/MouseAnimation"; export default function RootLayout({ children, @@ -30,7 +37,11 @@ export default function RootLayout({ enableSystem disableTransitionOnChange > - {children} + + {children} + + + diff --git a/src/app/lifestyle/page.tsx b/src/app/lifestyle/page.tsx new file mode 100644 index 0000000..36c44bc --- /dev/null +++ b/src/app/lifestyle/page.tsx @@ -0,0 +1,30 @@ +import Header from "@/components/Header"; +import InnerBanner from "@/components/InnerBanner"; +import Lifestyle from "@/components/Lifestyle"; +import Footer from "@/components/Footer"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Lifestyle | Sky and Soil Real Estate", + description: "Experience the Aurora Lifestyle with Sky and Soil. Discover world-class amenities, green spaces, and a community designed for luxury living.", +}; + +export default function LifestylePage() { + return ( +
+
+ +
+ +
+
+
+ ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index cc58272..367728e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -8,6 +8,14 @@ import Testimonials from "@/components/Testimonials"; import ContactCTA from "@/components/ContactCTA"; import Footer from "@/components/Footer"; +import FAQ from "@/components/FAQ"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Sky and Soil | Luxury Homes & Premium Real Estate", + description: "Find your dream home with Sky and Soil. We offer exclusive listings of apartments, villas, and plots in Bangalore's prime locations.", +}; + export default function Home() { return (
@@ -15,9 +23,10 @@ export default function Home() { - + +
diff --git a/src/app/projects/page.tsx b/src/app/projects/page.tsx new file mode 100644 index 0000000..93e7f16 --- /dev/null +++ b/src/app/projects/page.tsx @@ -0,0 +1,11 @@ +import PropertiesClient from "@/components/PropertiesClient"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Our Properties | Sky and Soil Real Estate", + description: "Browse our exclusive collection of premium apartments, villas, and plots in North Bengaluru. Find your perfect home with Sky and Soil.", +}; + +export default function PropertiesPage() { + return ; +} diff --git a/src/app/properties/[id]/page.tsx b/src/app/properties/[id]/page.tsx index a4078e2..48939b5 100644 --- a/src/app/properties/[id]/page.tsx +++ b/src/app/properties/[id]/page.tsx @@ -1,46 +1,294 @@ -import { notFound } from "next/navigation"; +import { use } from "react"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; +import Image from "next/image"; +import PropertyGallery from "@/components/PropertyGallery"; +import PropertyNav from "@/components/PropertyNav"; +import InnerBanner from "@/components/InnerBanner"; import { properties } from "@/data/properties"; -import PropertyHero from "@/components/property/PropertyHero"; -import PropertyOverview from "@/components/property/PropertyOverview"; -import PropertyAmenities from "@/components/property/PropertyAmenities"; -import PropertyContact from "@/components/property/PropertyContact"; +import { notFound } from "next/navigation"; -// This is required for static site generation with dynamic routes +import { Metadata } from "next"; + +// Required for static site generation with dynamic routes export function generateStaticParams() { return properties.map((property) => ({ id: property.id.toString(), })); } -export default async function PropertyPage({ params }: { params: Promise<{ id: string }> }) { - const { id } = await params; - const property = properties.find((p) => p.id.toString() === id); +export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise { + const resolvedParams = await params; + const property = properties.find(p => p.id === parseInt(resolvedParams.id)); + + if (!property) { + return { + title: "Property Not Found | Sky and Soil", + description: "The requested property could not be found." + }; + } + + return { + title: `${property.title} | Sky and Soil Real Estate`, + description: `Explore ${property.title} in ${property.location}. ${property.overview.bhk} ${property.category} starting at ${property.price}.`, + }; +} + +const sections = [ + { id: "overview", label: "Overview" }, + { id: "about", label: "About" }, + { id: "amenities", label: "Amenities" }, + { id: "floor-plans", label: "Floor Plans" }, + { id: "location", label: "Location" }, + { id: "pricing", label: "Pricing" }, +]; + +export default async function PropertyDetailPage({ params }: { params: Promise<{ id: string }> }) { + const resolvedParams = await params; + const property = properties.find(p => p.id === parseInt(resolvedParams.id)); if (!property) { notFound(); } return ( -
- +
+
-
-
- {/* Main Content */} -
- - + + +
+ + {/* Sticky Navigation */} + + +
+ {/* Property Header */} +
+
+
+
+

{property.title}

+ + {property.status} + +
+
+ + + + {property.location} +
+
+
+
Starting from
+
+ {property.price} +
+
+
+ + {/* Quick Stats */} +
+
+
{property.overview.bhk}
+
Configuration
+
+
+
{property.overview.size}
+
Area
+
+
+
{property.overview.possession}
+
Possession
+
+
+
{property.overview.totalUnits}
+
Total Units
+
+
- {/* Sidebar */} -
- + {/* Image Gallery */} + + +
+ {/* Main Content */} +
+ {/* Overview Section */} +
+

+
+ Overview +

+
+
+
Property Type
+
{property.category}
+
+
+
RERA Status
+
Approved
+
+
+
Availability
+
Available
+
+
+
+ + {/* About Section */} +
+

+
+ About this Property +

+

{property.description}

+
+ + {/* Amenities Section */} +
+

+
+ Amenities +

+
+ {property.amenities.map((amenity, idx) => ( +
+
+ + + +
+ {amenity} +
+ ))} +
+
+ + {/* Floor Plans Section */} +
+

+
+ Floor Plans +

+
+ + + +

Floor plans available on request

+ +
+
+ + {/* Location Section */} +
+

+
+ Location +

+
+ + + +

Interactive map coming soon

+
+
+ + {/* Pricing Section */} +
+

+
+ Pricing Details +

+
+
+ Base Price + {property.price} +
+

* Prices are subject to change. Please contact us for the latest pricing and offers.

+
+
+
+ + {/* Sidebar */} +
+
+ {/* Contact Form */} +
+

Get in Touch

+
+ + + +