Mobile SEO & performance optimization

This commit is contained in:
root 2026-02-15 12:29:17 +05:00
parent 9d02c62292
commit bfd858ca62
6 changed files with 33 additions and 8 deletions

View File

@ -56,5 +56,11 @@
"tailwindcss": "^4", "tailwindcss": "^4",
"tsx": "^4.21.0", "tsx": "^4.21.0",
"typescript": "^5" "typescript": "^5"
} },
} "browserslist": [
"last 2 versions",
"not dead",
"> 0.5%",
"not ie 11"
]
}

10
public/noise.svg Normal file
View File

@ -0,0 +1,10 @@
<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'>
<filter id='noiseFilter'>
<feTurbulence
type='fractalNoise'
baseFrequency='0.65'
numOctaves='3'
stitchTiles='stitch' />
</filter>
<rect width='100%' height='100%' filter='url(#noiseFilter)' />
</svg>

After

Width:  |  Height:  |  Size: 301 B

View File

@ -176,7 +176,7 @@ html {
/* Optimize backdrop blur performance during scroll */ /* Optimize backdrop blur performance during scroll */
[data-scroll-container] .backdrop-blur-xl { [data-scroll-container] .backdrop-blur-xl {
will-change: auto; will-change: transform;
} }
/* Smooth transitions for interactive elements */ /* Smooth transitions for interactive elements */
@ -220,7 +220,7 @@ button, a, input, select, textarea {
/* Optimize backdrop blur performance */ /* Optimize backdrop blur performance */
.backdrop-blur-xl { .backdrop-blur-xl {
will-change: backdrop-filter; will-change: transform;
transform: translateZ(0); transform: translateZ(0);
} }

View File

@ -5,16 +5,19 @@ import "./globals.css";
const geistSans = Geist({ const geistSans = Geist({
variable: "--font-geist-sans", variable: "--font-geist-sans",
subsets: ["latin"], subsets: ["latin"],
display: "swap",
}); });
const geistMono = Geist_Mono({ const geistMono = Geist_Mono({
variable: "--font-geist-mono", variable: "--font-geist-mono",
subsets: ["latin"], subsets: ["latin"],
display: "swap",
}); });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "JUNOHUB", title: "JUNOHUB | Modern Commerce Infrastructure",
description: "JUNOHUB - Your dropshipping and e-commerce management platform", description: "The world's most advanced encrypted ecosystem for vendors and suppliers.",
viewport: "width=device-width, initial-scale=1, maximum-scale=5",
}; };
export const viewport = { export const viewport = {

View File

@ -4,11 +4,17 @@ import { useMediaQuery } from "@/hooks/useMediaQuery"
import { LandingNavbar } from "@/components/landing/LandingNavbar" import { LandingNavbar } from "@/components/landing/LandingNavbar"
import { LandingHero } from "@/components/landing/LandingHero" import { LandingHero } from "@/components/landing/LandingHero"
import { LandingFeatures } from "@/components/landing/LandingFeatures" import { LandingFeatures } from "@/components/landing/LandingFeatures"
import { LandingSolutions } from "@/components/landing/LandingSolutions"
import { LandingFooter } from "@/components/landing/LandingFooter" import { LandingFooter } from "@/components/landing/LandingFooter"
import { MobileHero } from "@/components/landing/mobile/MobileHero" import { MobileHero } from "@/components/landing/mobile/MobileHero"
import { MobileFeatures } from "@/components/landing/mobile/MobileFeatures" import { MobileFeatures } from "@/components/landing/mobile/MobileFeatures"
import dynamic from "next/dynamic"
const LandingSolutions = dynamic(() => import("@/components/landing/LandingSolutions").then(mod => mod.LandingSolutions), {
ssr: true,
loading: () => <div className="min-h-[400px] bg-[#0a0e1a]" />
})
export default function HomePage() { export default function HomePage() {
const isMobile = useMediaQuery("(max-width: 768px)") const isMobile = useMediaQuery("(max-width: 768px)")

View File

@ -28,7 +28,7 @@ export function LandingHero() {
</div> </div>
{/* Grid Pattern */} {/* Grid Pattern */}
<div className="absolute inset-0 z-0 opacity-[0.03] bg-[url('https://grainy-gradients.vercel.app/noise.svg')] pointer-events-none" /> <div className="absolute inset-0 z-0 opacity-[0.03] bg-[url('/noise.svg')] pointer-events-none" />
<div <div
className="absolute inset-0 z-0 opacity-[0.4]" className="absolute inset-0 z-0 opacity-[0.4]"
style={{ style={{