15 Commits

Author SHA1 Message Date
0f279f4129 Update src/app/page.tsx 2026-03-05 15:05:05 +00:00
423fb75254 Update src/app/page.tsx 2026-03-05 15:03:33 +00:00
e49a0145f4 Update src/app/layout.tsx 2026-03-05 15:03:33 +00:00
86177f9f22 Merge version_2 into main
Merge version_2 into main
2026-03-05 14:58:53 +00:00
2cdc5ce56a Update src/components/3d/IDMSLogo3D.tsx 2026-03-05 14:58:48 +00:00
5c08968a14 Merge version_2 into main
Merge version_2 into main
2026-03-05 14:57:44 +00:00
cb01018995 Add src/components/3d/IDMSLogo3D.tsx 2026-03-05 14:57:39 +00:00
edb1d0ad41 Update src/app/page.tsx 2026-03-05 14:57:39 +00:00
12eb98f058 Update src/app/layout.tsx 2026-03-05 14:57:39 +00:00
b89cd239ca Merge version_1 into main
Merge version_1 into main
2026-03-05 13:56:53 +00:00
a3b8df847b Merge version_1 into main
Merge version_1 into main
2026-03-05 13:56:02 +00:00
d8d141d1ce Merge version_1 into main
Merge version_1 into main
2026-03-05 13:36:30 +00:00
463ee75c9b Merge version_1 into main
Merge version_1 into main
2026-03-05 13:35:34 +00:00
cce73c1367 Merge version_1 into main
Merge version_1 into main
2026-03-05 13:34:09 +00:00
002a525bbc Merge version_1 into main
Merge version_1 into main
2026-03-05 13:32:48 +00:00
3 changed files with 226 additions and 49 deletions

View File

@@ -1,58 +1,17 @@
import type { Metadata } from "next";
import { Halant } from "next/font/google";
import { Inter } from "next/font/google";
import { Nunito_Sans } from "next/font/google";
import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag";
const halant = Halant({
variable: "--font-halant", subsets: ["latin"],
weight: ["300", "400", "500", "600", "700"],
});
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
const nunitoSans = Nunito_Sans({
variable: "--font-nunito-sans", subsets: ["latin"],
});
import "@/styles/globals.css";
export const metadata: Metadata = {
title: "Smart ERP Driving Intelligent Growth | Enterprise Platform", description: "Smart ERP unifies operations, finance, and decision-making across your organization. Transform fragmented business systems into a connected ecosystem with real-time intelligence and data-driven insights.", keywords: "ERP software, enterprise resource planning, manufacturing ERP, business intelligence, operations management, supply chain, finance integration, smart manufacturing", metadataBase: new URL("https://smarterp.example.com"),
alternates: {
canonical: "https://smarterp.example.com"},
openGraph: {
title: "Smart ERP Driving Intelligent Growth", description: "Unified business platform for manufacturing, operations, finance, and intelligent decision-making.", url: "https://smarterp.example.com", siteName: "Smart ERP", images: [
{
url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AWn4ywnX9oOwYiN1Z30Ju8qMH6/a-modern-sleek-software-dashboard-interf-1772717506288-13ddd917.png", alt: "Smart ERP unified dashboard"},
],
type: "website"},
twitter: {
card: "summary_large_image", title: "Smart ERP Driving Intelligent Growth", description: "Transform your fragmented business operations into a unified, intelligent ecosystem.", images: [
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AWn4ywnX9oOwYiN1Z30Ju8qMH6/a-modern-sleek-software-dashboard-interf-1772717506288-13ddd917.png"],
},
robots: {
index: true,
follow: true,
},
};
title: "Smart ERP | Enterprise Intelligence Platform", description: "Transform fragmented business operations into a unified ecosystem with real-time intelligence. Smart ERP powers intelligent growth for enterprises."};
export default function RootLayout({
children,
}: Readonly<{
}: {
children: React.ReactNode;
}>) {
}) {
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body
className={`${halant.variable} ${inter.variable} ${nunitoSans.variable} antialiased`}
>
<Tag />
{children}
<html lang="en">
<body>{children}
<script
dangerouslySetInnerHTML={{
__html: `
@@ -1420,7 +1379,6 @@ export default function RootLayout({
}}
/>
</body>
</ServiceWrapper>
</html>
);
}

View File

@@ -72,7 +72,7 @@ export default function LandingPage() {
<TextAbout
tag="The Challenge"
tagIcon={AlertCircle}
title="Why Businesses Struggle to Scale: The Silo Problem. Most businesses don't struggle because of lack of effort—they struggle because their systems and departments operate in silos. Sales teams work hard with one set of data. Production monitors efficiency with isolated metrics. Stores manages inventory separately. Quality tracks compliance independently. Finance operates in its own world. Each department works diligently, but on disconnected data and workflows. The result? Fragmented visibility, delayed decisions, operational misalignment, and missed growth opportunities."
title="Most Businesses Operate in Silos"
useInvertedBackground={true}
buttons={[
{ text: "Learn How We Solve This", href: "#solution" },

View File

@@ -0,0 +1,219 @@
"use client";
import React, { useEffect, useRef } from "react";
import * as THREE from "three";
const IDMSLogo3D = () => {
const containerRef = useRef<HTMLDivElement>(null);
const sceneRef = useRef<THREE.Scene | null>(null);
const cameraRef = useRef<THREE.PerspectiveCamera | null>(null);
const rendererRef = useRef<THREE.WebGLRenderer | null>(null);
const groupRef = useRef<THREE.Group | null>(null);
useEffect(() => {
// Scene setup
if (!containerRef.current) return;
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x000000);
sceneRef.current = scene;
const camera = new THREE.PerspectiveCamera(
75,
containerRef.current.clientWidth / containerRef.current.clientHeight,
0.1,
1000
);
camera.position.z = 8;
cameraRef.current = camera;
const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
renderer.setSize(
containerRef.current.clientWidth,
containerRef.current.clientHeight
);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
containerRef.current.appendChild(renderer.domElement);
rendererRef.current = renderer;
// Create group for rotation
const group = new THREE.Group();
scene.add(group);
groupRef.current = group;
// Lighting
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
scene.add(ambientLight);
const pointLight1 = new THREE.PointLight(0x00ffff, 2, 100);
pointLight1.position.set(10, 10, 10);
scene.add(pointLight1);
const pointLight2 = new THREE.PointLight(0xff00ff, 2, 100);
pointLight2.position.set(-10, -10, 10);
scene.add(pointLight2);
const pointLight3 = new THREE.PointLight(0xff1493, 1.5, 100);
pointLight3.position.set(0, 10, -10);
scene.add(pointLight3);
// Create interconnected geometric shapes representing IDMS systems
const geometry1 = new THREE.IcosahedronGeometry(1.5, 3);
const geometry2 = new THREE.OctahedronGeometry(1.2, 2);
const geometry3 = new THREE.TetrahedronGeometry(1, 1);
// Chrome metallic material with chromatic reflections
const chromeMatPrimary = new THREE.MeshStandardMaterial({
color: 0xcccccc,
metalness: 0.95,
roughness: 0.05,
emissive: 0x0066ff,
emissiveIntensity: 0.3,
});
const chromeMatSecondary = new THREE.MeshStandardMaterial({
color: 0xdddddd,
metalness: 0.92,
roughness: 0.08,
emissive: 0xff00ff,
emissiveIntensity: 0.25,
});
const chromeMatTertiary = new THREE.MeshStandardMaterial({
color: 0xbbbbbb,
metalness: 0.93,
roughness: 0.06,
emissive: 0xff1493,
emissiveIntensity: 0.2,
});
const mesh1 = new THREE.Mesh(geometry1, chromeMatPrimary);
mesh1.position.set(0, 0, 0);
mesh1.castShadow = true;
mesh1.receiveShadow = true;
const mesh2 = new THREE.Mesh(geometry2, chromeMatSecondary);
mesh2.position.set(2, 1, 0);
mesh2.scale.set(0.7, 0.7, 0.7);
mesh2.castShadow = true;
mesh2.receiveShadow = true;
const mesh3 = new THREE.Mesh(geometry3, chromeMatTertiary);
mesh3.position.set(-1.5, -1.2, 0);
mesh3.scale.set(0.6, 0.6, 0.6);
mesh3.castShadow = true;
mesh3.receiveShadow = true;
group.add(mesh1);
group.add(mesh2);
group.add(mesh3);
// Create connecting lines (edges) with glow
const lineMaterial = new THREE.LineBasicMaterial({
color: 0x00ffff,
linewidth: 2,
});
const linePoints = [
new THREE.Vector3(0, 0, 0),
new THREE.Vector3(2, 1, 0),
new THREE.Vector3(-1.5, -1.2, 0),
new THREE.Vector3(0, 0, 0),
];
const lineGeometry = new THREE.BufferGeometry().setFromPoints(linePoints);
const lines = new THREE.Line(lineGeometry, lineMaterial);
group.add(lines);
// Glow effect around objects
const glowGeometry = new THREE.IcosahedronGeometry(1.8, 3);
const glowMaterial = new THREE.MeshBasicMaterial({
color: 0x00ffff,
transparent: true,
opacity: 0.15,
side: THREE.BackSide,
});
const glowMesh = new THREE.Mesh(glowGeometry, glowMaterial);
glowMesh.position.set(0, 0, 0);
group.add(glowMesh);
// Secondary glow with pink/purple
const glowGeometry2 = new THREE.OctahedronGeometry(1.5, 2);
const glowMaterial2 = new THREE.MeshBasicMaterial({
color: 0xff00ff,
transparent: true,
opacity: 0.1,
side: THREE.BackSide,
});
const glowMesh2 = new THREE.Mesh(glowGeometry2, glowMaterial2);
glowMesh2.position.set(0, 0, 0);
group.add(glowMesh2);
// Animation loop
const animate = () => {
requestAnimationFrame(animate);
// Slow ambient rotation
if (groupRef.current) {
groupRef.current.rotation.x += 0.0008;
groupRef.current.rotation.y += 0.001;
groupRef.current.rotation.z += 0.0005;
}
// Subtle mesh movements for dynamic effect
mesh1.rotation.x += 0.002;
mesh1.rotation.y += 0.003;
mesh2.rotation.x -= 0.001;
mesh2.rotation.z += 0.0025;
mesh3.rotation.y -= 0.0015;
mesh3.rotation.z += 0.001;
// Pulsing glow effect
const pulse = Math.sin(Date.now() * 0.001) * 0.05 + 0.15;
glowMaterial.opacity = pulse;
glowMaterial2.opacity = pulse * 0.65;
if (rendererRef.current) {
rendererRef.current.render(scene, camera);
}
};
animate();
// Handle resize
const handleResize = () => {
if (!containerRef.current || !cameraRef.current || !rendererRef.current)
return;
const width = containerRef.current.clientWidth;
const height = containerRef.current.clientHeight;
cameraRef.current.aspect = width / height;
cameraRef.current.updateProjectionMatrix();
rendererRef.current.setSize(width, height);
};
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
if (containerRef.current && rendererRef.current) {
containerRef.current.removeChild(rendererRef.current.domElement);
}
};
}, []);
return (
<div
ref={containerRef}
className="w-full h-full rounded-lg overflow-hidden border border-cyan-500/30 shadow-lg shadow-cyan-500/20"
style={{
background:
"radial-gradient(circle at center, rgba(0, 255, 255, 0.1) 0%, rgba(139, 0, 139, 0.05) 100%)"}}
/>
);
};
export default IDMSLogo3D;