diff --git a/Apple download.svg b/Apple download.svg
new file mode 100644
index 0000000..dc84313
--- /dev/null
+++ b/Apple download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Dlivery Map.svg b/Dlivery Map.svg
new file mode 100644
index 0000000..0da0f36
--- /dev/null
+++ b/Dlivery Map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Food.svg b/Food.svg
new file mode 100644
index 0000000..1849a6e
--- /dev/null
+++ b/Food.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/artificial intelligence booting.svg b/artificial intelligence booting.svg
new file mode 100644
index 0000000..bf5315a
--- /dev/null
+++ b/artificial intelligence booting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/customer.svg b/customer.svg
new file mode 100644
index 0000000..20b9a99
--- /dev/null
+++ b/customer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/platfrom.png b/platfrom.png
new file mode 100644
index 0000000..d4b5e31
Binary files /dev/null and b/platfrom.png differ
diff --git a/play 1.svg b/play 1.svg
new file mode 100644
index 0000000..8b9a021
--- /dev/null
+++ b/play 1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/Food.svg b/public/Food.svg
new file mode 100644
index 0000000..1849a6e
--- /dev/null
+++ b/public/Food.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/apple-download.svg b/public/apple-download.svg
new file mode 100644
index 0000000..dc84313
--- /dev/null
+++ b/public/apple-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/customers.svg b/public/customers.svg
new file mode 100644
index 0000000..20b9a99
--- /dev/null
+++ b/public/customers.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/location.svg b/public/location.svg
new file mode 100644
index 0000000..0da0f36
--- /dev/null
+++ b/public/location.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/platform.png b/public/platform.png
new file mode 100644
index 0000000..d4b5e31
Binary files /dev/null and b/public/platform.png differ
diff --git a/public/play-download.svg b/public/play-download.svg
new file mode 100644
index 0000000..8b9a021
--- /dev/null
+++ b/public/play-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/playstore.svg b/public/playstore.svg
new file mode 100644
index 0000000..69f976c
--- /dev/null
+++ b/public/playstore.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/superhero.png b/public/superhero.png
new file mode 100644
index 0000000..55be89d
Binary files /dev/null and b/public/superhero.png differ
diff --git a/public/trust.svg b/public/trust.svg
new file mode 100644
index 0000000..f8d2ebe
--- /dev/null
+++ b/public/trust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/why-nearle.png b/public/why-nearle.png
new file mode 100644
index 0000000..ae63651
Binary files /dev/null and b/public/why-nearle.png differ
diff --git a/src/app/brands/page.tsx b/src/app/brands/page.tsx
index a482f3f..5d738e3 100644
--- a/src/app/brands/page.tsx
+++ b/src/app/brands/page.tsx
@@ -22,6 +22,7 @@ export const metadata: Metadata = {
"Partner with Nearle to get your brand into neighbourhood stores. Distribution, retail visibility, marketing campaigns, and real-time analytics, all in one platform.",
url: "https://nearle.in/brands",
},
+ alternates: { canonical: "/brands" },
};
const WHAT_WE_OFFER = [
@@ -35,7 +36,7 @@ const WHAT_WE_OFFER = [
{
icon: "storefront",
title: "Retail Shelf Visibility",
- desc: "Premium placement in Nearle's digital catalogue and in-store QR listings. Customers browsing nearby stores see your brand first, creating daily brand touchpoints at zero extra cost.",
+ desc: "Premium placement in Nearle's AI catalogue by ProductLLM and in-store QR listings. Customers browsing nearby stores see your brand first, creating daily brand touchpoints at zero extra cost.",
tone: "bg-secondary/8 text-secondary",
badge: "Visibility",
},
diff --git a/src/app/businesses/page.tsx b/src/app/businesses/page.tsx
index cf3e065..5cbe117 100644
--- a/src/app/businesses/page.tsx
+++ b/src/app/businesses/page.tsx
@@ -14,8 +14,23 @@ export const metadata: Metadata = {
title: "Nearle for Business",
description:
"Grow your local business with Nearle. Get discovered by nearby customers, manage online orders, run local offers, and build repeat sales, all from one simple hyperlocal platform.",
+ openGraph: {
+ title: "Nearle for Business — MerchantOS for Neighbourhood Stores",
+ description:
+ "Bring your store online with MerchantOS: a free POS, an AI catalog by ProductLLM, QR ordering, and local discovery. Keep your customers — add the technology.",
+ url: "https://nearle.in/businesses",
+ },
+ alternates: { canonical: "/businesses" },
};
+const GROWTH_STEPS = [
+ { icon: "storefront", title: "Merchant", desc: "Onboard your store in minutes with a free POS." },
+ { icon: "auto_awesome", title: "AI Catalog", desc: "ProductLLM builds your catalog from a photo." },
+ { icon: "receipt_long", title: "Orders", desc: "Take QR and online orders from nearby customers." },
+ { icon: "analytics", title: "Analytics", desc: "See what sells and who's buying, in real time." },
+ { icon: "trending_up", title: "Growth", desc: "Turn local demand into repeat business." },
+];
+
function PhoneMapVisual() {
@@ -235,6 +250,56 @@ export default function BusinessesPage() {
{/* ─── Our Features / Business Grid ─── */}
+ {/* ─── Business Growth Workflow ─── */}
+
+
+
+
+
+ Growth Workflow
+
+
+ From shelf to steady growth
+
+
+ Every step on Nearle builds on the last — powered by MerchantOS and
+ an AI catalog from ProductLLM.
+
diff --git a/src/app/page.tsx b/src/app/page.tsx
index ea3891a..5169fa1 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,3 +1,4 @@
+import type { Metadata } from "next";
import { PremiumPageShell } from "@/components/layout/PremiumPageShell";
import { Hero } from "@/components/home/Hero";
import { ServiceCategories } from "@/components/home/ServiceCategories";
@@ -5,8 +6,22 @@ import { WhyNearle } from "@/components/home/WhyNearle";
import { HowItWorks } from "@/components/home/HowItWorks";
import { HyperlocalFeatures } from "@/components/home/HyperlocalFeatures";
import { BusinessSection } from "@/components/home/BusinessSection";
+import { WhyAICommerceWins } from "@/components/home/WhyAICommerceWins";
import { StoreQRSection } from "@/components/home/StoreQRSection";
+export const metadata: Metadata = {
+ title: "AI Commerce Platform for Neighbourhood Stores",
+ description:
+ "Nearle is the AI Commerce platform that digitizes neighbourhood stores instead of replacing them. AI catalogs by ProductLLM, QR ordering, and local discovery — commerce that runs on your neighbourhood.",
+ openGraph: {
+ title: "Nearle — AI Commerce Platform for Neighbourhood Stores",
+ description:
+ "Not another delivery app. Nearle adds AI, a digital storefront, and ordering to the local stores you already trust.",
+ url: "https://nearle.in",
+ },
+ alternates: { canonical: "/" },
+};
+
export default function HomePage() {
return (
@@ -16,6 +31,7 @@ export default function HomePage() {
+
);
diff --git a/src/app/people/page.tsx b/src/app/people/page.tsx
index 6945a26..91711dc 100644
--- a/src/app/people/page.tsx
+++ b/src/app/people/page.tsx
@@ -5,6 +5,7 @@ import { PremiumPageShell } from "@/components/layout/PremiumPageShell";
import { PeopleHero } from "@/components/heroes/PeopleHero";
import { AnimatedSection } from "@/components/motion/AnimatedSection";
import { AnimatedGrid, AnimatedCard } from "@/components/motion/AnimatedGrid";
+import { AnimatedTimeline } from "@/components/delivery/AnimatedTimeline";
import { siteContent } from "@/config/site-content";
import type { Metadata } from "next";
@@ -12,8 +13,65 @@ export const metadata: Metadata = {
title: "Nearle for People",
description:
"Discover verified local stores, save your favourite merchants, and order everyday essentials with superfast local delivery from shops within your neighbourhood.",
+ openGraph: {
+ title: "Nearle for People — Shop Your Neighbourhood",
+ description:
+ "Find verified local stores near you, with accurate AI-generated listings by ProductLLM. Discover, order, and reorder from the shops you already trust.",
+ url: "https://nearle.in/people",
+ },
+ alternates: { canonical: "/people" },
};
+const HOW_IT_WORKS = [
+ {
+ step: "01",
+ title: "Discover stores near you",
+ desc: "Open the app and see verified neighbourhood shops within walking distance — not warehouses across town.",
+ time: "Discover",
+ },
+ {
+ step: "02",
+ title: "Order in a few taps",
+ desc: "Browse live catalogs built by ProductLLM, add what you need, and check out. Prices and stock stay accurate.",
+ time: "Order",
+ },
+ {
+ step: "03",
+ title: "Pickup or local delivery",
+ desc: "Grab it on your way past, or get a short local delivery straight from the store to your door.",
+ time: "Fulfil",
+ },
+ {
+ step: "04",
+ title: "Reorder in one tap",
+ desc: "Your favourite stores and usuals stay saved, so buying again is instant.",
+ time: "Reorder",
+ },
+];
+
+const TRUST_POINTS = [
+ {
+ icon: "verified_user",
+ title: "Verified Merchants",
+ desc: "Every store on Nearle is a real, verified neighbourhood business.",
+ },
+ {
+ icon: "auto_awesome",
+ title: "Accurate AI Listings",
+ desc: "Product listings are generated by ProductLLM, so details and prices stay right.",
+ },
+ {
+ icon: "storefront",
+ title: "Real Neighbourhood Stores",
+ desc: "You shop the shops on your street — the ones your community already trusts.",
+ },
+ {
+ icon: "lock",
+ title: "Safe Ordering",
+ desc: "Order with confidence, from discovery to doorstep.",
+ },
+];
+
const OFFERINGS = [
{
title: "Elegant Living",
@@ -224,6 +282,59 @@ export default function PeoplePage() {
+ {/* ─── How It Works ─── */}
+
+
+
+
+ How It Works
+
+
+ From your street to your doorstep
+
+
+ Shopping your neighbourhood on Nearle takes just a few taps.
+
+
+
+
+
+
+ {/* ─── Trust Section ─── */}
+
+
+
+
+ Trust & Safety
+
+
+ Every Store is Verified
+
+
+ Real shops, accurate listings, and safe ordering — so you always know
+ exactly who you’re buying from.
+
+
+
+
+
+ {TRUST_POINTS.map((t) => (
+
+
+
+
+
+ {t.title}
+
+
{t.desc}
+
+ ))}
+
+
+
{/* ─── Ready to Download Section ─── */}
diff --git a/src/app/platform/page.tsx b/src/app/platform/page.tsx
new file mode 100644
index 0000000..5f8fc82
--- /dev/null
+++ b/src/app/platform/page.tsx
@@ -0,0 +1,78 @@
+import type { Metadata } from "next";
+import { PremiumPageShell } from "@/components/layout/PremiumPageShell";
+import { PlatformHero } from "@/components/platform/PlatformHero";
+import { PlatformArchitecture } from "@/components/platform/PlatformArchitecture";
+import { ProductFeatureGrid } from "@/components/platform/ProductFeatureGrid";
+import { ProductLLMWorkflow } from "@/components/platform/ProductLLMWorkflow";
+import { CTABanner } from "@/components/ui/CTABanner";
+
+export const metadata: Metadata = {
+ title: "Platform — MerchantOS, ConsumerOS & ProductLLM",
+ description:
+ "The Nearle platform: MerchantOS runs the store, ProductLLM builds the catalog from a shelf photo, and ConsumerOS brings the neighbourhood to shop. AI infrastructure for local retail.",
+ openGraph: {
+ title: "The Nearle Platform | MerchantOS · ProductLLM · ConsumerOS",
+ description:
+ "AI infrastructure behind every neighbourhood store — a free POS and AI catalog for merchants, and local discovery, ordering, and rewards for shoppers.",
+ url: "https://nearle.in/platform",
+ },
+ alternates: { canonical: "/platform" },
+};
+
+const MERCHANT_OS = [
+ { icon: "point_of_sale", title: "Free POS", desc: "A complete point-of-sale, free for every merchant." },
+ { icon: "wifi_off", title: "Offline Billing", desc: "Keep billing customers even when the network drops." },
+ { icon: "inventory_2", title: "Inventory", desc: "Live stock counts that stay accurate across channels." },
+ { icon: "analytics", title: "Analytics", desc: "See what sells, when, and to whom — in real time." },
+ { icon: "loyalty", title: "Loyalty", desc: "Reward regulars and bring them back more often." },
+ { icon: "auto_awesome", title: "AI Catalog", desc: "A shoppable catalog built by ProductLLM from a photo." },
+ { icon: "qr_code", title: "QR Ordering", desc: "Customers scan, browse, and order in seconds." },
+ { icon: "dashboard", title: "Store Dashboard", desc: "Run the whole store from one simple screen." },
+];
+
+const CONSUMER_OS = [
+ { icon: "explore", title: "Local Discovery", desc: "Find the stores and products right around you." },
+ { icon: "photo_camera", title: "Camera Search", desc: "Point your camera to find a product nearby." },
+ { icon: "favorite", title: "Favorites", desc: "Save the stores and items you buy again and again." },
+ { icon: "storefront", title: "Nearby Stores", desc: "Shop shops within walking distance, not warehouses." },
+ { icon: "shopping_bag", title: "Pickup", desc: "Order ahead and grab it on your way past." },
+ { icon: "local_shipping", title: "Delivery", desc: "Short, local trips from the store to your door." },
+ { icon: "redeem", title: "Rewards", desc: "Earn as you shop your neighbourhood." },
+ { icon: "history", title: "Fast Reordering", desc: "Re-buy your usuals in a single tap." },
+];
+
+export default function PlatformPage() {
+ return (
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/robots.ts b/src/app/robots.ts
new file mode 100644
index 0000000..a0f9c99
--- /dev/null
+++ b/src/app/robots.ts
@@ -0,0 +1,14 @@
+import type { MetadataRoute } from "next";
+
+const BASE_URL = "https://nearle.in";
+
+export default function robots(): MetadataRoute.Robots {
+ return {
+ rules: {
+ userAgent: "*",
+ allow: "/",
+ },
+ sitemap: `${BASE_URL}/sitemap.xml`,
+ host: BASE_URL,
+ };
+}
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
new file mode 100644
index 0000000..2b3c518
--- /dev/null
+++ b/src/app/sitemap.ts
@@ -0,0 +1,30 @@
+import type { MetadataRoute } from "next";
+
+const BASE_URL = "https://nearle.in";
+
+export default function sitemap(): MetadataRoute.Sitemap {
+ const now = new Date();
+
+ const routes: { path: string; priority: number; changeFrequency: MetadataRoute.Sitemap[number]["changeFrequency"] }[] = [
+ { path: "/", priority: 1, changeFrequency: "weekly" },
+ { path: "/why-nearle", priority: 0.9, changeFrequency: "monthly" },
+ { path: "/platform", priority: 0.9, changeFrequency: "monthly" },
+ { path: "/businesses", priority: 0.8, changeFrequency: "monthly" },
+ { path: "/people", priority: 0.8, changeFrequency: "monthly" },
+ { path: "/brands", priority: 0.8, changeFrequency: "monthly" },
+ { path: "/merchants", priority: 0.6, changeFrequency: "monthly" },
+ { path: "/delivery-partners", priority: 0.6, changeFrequency: "monthly" },
+ { path: "/about", priority: 0.5, changeFrequency: "monthly" },
+ { path: "/contact", priority: 0.5, changeFrequency: "monthly" },
+ { path: "/privacy", priority: 0.2, changeFrequency: "yearly" },
+ { path: "/terms", priority: 0.2, changeFrequency: "yearly" },
+ { path: "/cookies", priority: 0.2, changeFrequency: "yearly" },
+ ];
+
+ return routes.map((route) => ({
+ url: `${BASE_URL}${route.path}`,
+ lastModified: now,
+ changeFrequency: route.changeFrequency,
+ priority: route.priority,
+ }));
+}
diff --git a/src/app/why-nearle/page.tsx b/src/app/why-nearle/page.tsx
new file mode 100644
index 0000000..1644b74
--- /dev/null
+++ b/src/app/why-nearle/page.tsx
@@ -0,0 +1,61 @@
+import type { Metadata } from "next";
+import { PremiumPageShell } from "@/components/layout/PremiumPageShell";
+import { WhyNearleHero } from "@/components/why-nearle/WhyNearleHero";
+import { CommerceEvolution } from "@/components/why-nearle/CommerceEvolution";
+import { AICommerceExplainer } from "@/components/why-nearle/AICommerceExplainer";
+import { BeforeAfterFlow } from "@/components/why-nearle/BeforeAfterFlow";
+import { NeighborhoodStores } from "@/components/why-nearle/NeighborhoodStores";
+import { EcosystemDiagram } from "@/components/why-nearle/EcosystemDiagram";
+import { ProductLLMPipeline } from "@/components/why-nearle/ProductLLMPipeline";
+import { ProductLLMCompare } from "@/components/why-nearle/ProductLLMCompare";
+import { AICommerceComparison } from "@/components/ui/AICommerceComparison";
+import { FutureVision } from "@/components/why-nearle/FutureVision";
+import { PullQuote } from "@/components/ui/PullQuote";
+import { AICommerceCTA } from "@/components/why-nearle/AICommerceCTA";
+
+export const metadata: Metadata = {
+ title: "What is AI Commerce?",
+ description:
+ "AI Commerce starts where quick commerce stops. Nearle digitizes neighbourhood stores with AI, digital storefronts, and ordering — instead of replacing them. Learn how AI Commerce works.",
+ openGraph: {
+ title: "What is AI Commerce? | Nearle",
+ description:
+ "Neighbourhood stores already have trust, customers, and location. Nearle adds AI, a digital storefront, inventory, and ordering. This is AI Commerce.",
+ url: "https://nearle.in/why-nearle",
+ },
+ alternates: { canonical: "/why-nearle" },
+};
+
+export default function WhyNearlePage() {
+ return (
+
+
+ {/* 1 · Why AI Commerce — evolution timeline */}
+
+ {/* 2 · The Problem — stores already have vs Nearle adds */}
+
+ {/* 3 · Before vs After — traditional vs AI commerce flow */}
+
+ {/* 4 · Why neighborhood stores matter */}
+
+ {/* 5 · The AI Commerce ecosystem */}
+
+ {/* 6 · ProductLLM workflow pipeline */}
+
+ {/* 7 · Why ProductLLM — manual vs AI catalogs */}
+
+ {/* Supporting comparison — AI Commerce vs Quick Commerce */}
+
+
+ {/* 8 · Future vision roadmap */}
+
+ {/* 9 · Premium closing CTA */}
+
+
+ );
+}
diff --git a/src/components/businesses/BusinessFeaturesGrid.tsx b/src/components/businesses/BusinessFeaturesGrid.tsx
index cae5ecd..420f237 100644
--- a/src/components/businesses/BusinessFeaturesGrid.tsx
+++ b/src/components/businesses/BusinessFeaturesGrid.tsx
@@ -1,6 +1,7 @@
"use client";
import React from "react";
+import Image from "next/image";
import { motion } from "framer-motion";
import { MaterialIcon } from "@/components/ui/MaterialIcon";
import { fadeUp, scaleIn, staggerContainer, staggerSlow, viewport } from "@/lib/animations";
@@ -415,12 +416,29 @@ const CARDS = [
export function BusinessFeaturesGrid() {
return (
+ {/* Decorative mascot watermark — left side only, never crosses into the feature cards */}
+
+
+
+
+
+
{/* Centered page container */}
{/* Main two-column grid */}
@@ -439,7 +457,7 @@ export function BusinessFeaturesGrid() {
{/* Badge + Heading */}
- Our features
+ MerchantOS
diff --git a/src/components/home/WhyAICommerceWins.tsx b/src/components/home/WhyAICommerceWins.tsx
new file mode 100644
index 0000000..33540d7
--- /dev/null
+++ b/src/components/home/WhyAICommerceWins.tsx
@@ -0,0 +1,102 @@
+"use client";
+
+import Link from "next/link";
+import { motion } from "framer-motion";
+import { MaterialIcon } from "@/components/ui/MaterialIcon";
+import { fadeUp, fadeIn, staggerContainer, viewport } from "@/lib/animations";
+
+const CARDS = [
+ {
+ title: "Neighbourhood Trust",
+ desc: "Every order is fulfilled by a real local shop your street already knows — not an anonymous warehouse.",
+ icon: "handshake",
+ color: "bg-primary/5 text-primary border-primary/10",
+ },
+ {
+ title: "AI-Powered Catalog",
+ desc: "ProductLLM turns a shelf into a live, shoppable catalog in minutes — so any store can go online without the busywork.",
+ icon: "auto_awesome",
+ color: "bg-secondary/5 text-secondary border-secondary/10",
+ },
+ {
+ title: "Offline-First Commerce",
+ desc: "Billing and inventory keep working even when the network drops. Built for how neighbourhood stores really run.",
+ icon: "wifi_off",
+ color: "bg-[#de96f9]/10 text-primary border-[#de96f9]/20",
+ },
+];
+
+export function WhyAICommerceWins() {
+ return (
+
+
+
+
+ AI Commerce
+
+
+ Why AI Commerce Wins
+
+
+ Nearle isn’t another delivery app. It’s the AI layer that brings
+ neighbourhood stores online — without replacing them.
+