diff --git a/public/sitemap.xml b/public/sitemap.xml index fac4670..39237fb 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1 +1 @@ -https://metatroncubesolutions.com/daily1.0https://metatroncubesolutions.com/services-digital-solutions/daily0.7https://metatroncubesolutions.com/about-us/weekly0.7https://metatroncubesolutions.com/careers/weekly0.7https://metatroncubesolutions.com/portfolio/weekly0.7https://metatroncubesolutions.com/blog/weekly0.7https://metatroncubesolutions.com/contact/monthly0.5https://metatroncubesolutions.com/faq/monthly0.5https://metatroncubesolutions.com/services-digital-solutions/erp-development-implementation/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/website-development-company/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/mobile-application-development/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/graphic-designing-company/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/ui-ux-designing/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/search-engine-optimization-seo-content-writing/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/digital-marketing-agency-in-canada/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/app-development-waterloo/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/kitchener-waterloo-website-design-services/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/professional-website-designers-in-waterloo/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/waterloo-seo-services/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/web-design-toronto-custom-website-creation-by-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/services-digital-solutions/web-page-design-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/5-tips-to-create-viral-content-that-drives-engagement/weekly0.6https://metatroncubesolutions.com/blog/instagram-vs-facebook-choosing-the-right-platform-for-your-business/weekly0.6https://metatroncubesolutions.com/blog/how-local-seo-can-drive-more-foot-traffic-to-your-business/weekly0.6https://metatroncubesolutions.com/blog/on-page-vs-off-page-seo-what-every-business-owner-needs-to-know/weekly0.6https://metatroncubesolutions.com/blog/how-to-create-a-winning-digital-marketing-strategy-for-your-business/weekly0.6https://metatroncubesolutions.com/blog/white-hat-vs-black-hat-seo-an-in-depth-link-building-guide/weekly0.6https://metatroncubesolutions.com/blog/how-to-boost-your-small-business-with-effective-digital-marketing-strategies/weekly0.6https://metatroncubesolutions.com/blog/the-importance-of-local-seo-for-real-estate-agents/weekly0.6https://metatroncubesolutions.com/blog/how-to-optimize-your-website-for-voice-search/weekly0.6https://metatroncubesolutions.com/blog/how-ai-is-revolutionizing-web-development-and-seo/weekly0.6https://metatroncubesolutions.com/blog/top-digital-marketing-agency-in-canada-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/best-digital-marketing-company-in-canada-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/web-designers-for-small-business/weekly0.6https://metatroncubesolutions.com/blog/mobile-commerce-2024-web-app-development-evolution/weekly0.6https://metatroncubesolutions.com/blog/how-to-personalize-cold-emails-without-spending-hours-on-research/weekly0.6https://metatroncubesolutions.com/blog/how-to-overcome-the-biggest-challenges-in-cold-emailing-b2b-success/weekly0.6https://metatroncubesolutions.com/blog/9-powerful-free-google-tools-to-grow-your-business/weekly0.6https://metatroncubesolutions.com/blog/5-digital-marketing-mistakes-every-small-business-must-avoid/weekly0.6https://metatroncubesolutions.com/blog/how-digital-solutions-drove-success-for-a-local-business/weekly0.6https://metatroncubesolutions.com/blog/ai-driven-seo-how-to-future-proof-your-search-strategy/weekly0.6https://metatroncubesolutions.com/blog/mastering-omnichannel-marketing-strategies-for-2026/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-software-solutions-improve-local-seo-waterloo/weekly0.6https://metatroncubesolutions.com/blog/why-metatroncube-software-solutions-top-choice-social-media-marketing-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-does-metatroncube-software-solutions-help-businesses-get-more-local-customers-through-search-engines/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-optimize-my-google-business-profile/weekly0.6https://metatroncubesolutions.com/blog/seo-services-waterloo-small-businesses-metatroncube/weekly0.6https://metatroncubesolutions.com/blog/boost-google-maps-ranking-waterloo-metatroncube/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-software-solutions-uses-ai-tools-to-boost-your-marketing-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/what-types-of-social-media-ads-does-metatroncube-software-solutions-recommend-for-small-businesses-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/should-i-run-facebook-or-google-ads-for-my-business-and-can-metatroncube-software-solutions-manage-them/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-the-best-ppc-agency-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-metatroncube-software-solutions-help-me-get-more-followers-for-my-local-business/weekly0.6https://metatroncubesolutions.com/blog/how-to-track-roi-from-your-website-and-marketing-campaigns-with-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/does-metatroncube-software-solutions-provide-ai-powered-marketing-solutions-for-local-businesses-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-i-track-roi-from-my-website-and-marketing-campaigns-with-metatroncube-software-solutions-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-manage-my-social-media-campaigns-from-start-to-finish/weekly0.6https://metatroncubesolutions.com/blog/does-metatroncube-software-solutions-provide-website-audits-for-small-businesses/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-handle-both-seo-and-ppc-campaigns-for-my-business-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/what-types-of-social-media-ads-does-metatroncube-software-solutions-recommend-for-small-businesses-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/driving-digital-growth-with-metatroncubes-performance-focused-marketing-strategies/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-helps-businesses-scale-faster-with-smart-digital-solutions/weekly0.6https://metatroncubesolutions.com/blog/building-powerful-digital-brands-with-metatroncube-creative-technical-expertise/weekly0.6https://metatroncubesolutions.com/blog/professional-digital-marketing-services-in-canada-for-sustainable-business-growth/weekly0.6https://metatroncubesolutions.com/blog/custom-website-development-solutions-in-canada-for-modern-businesses/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-the-top-choice-for-social-media-marketing-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-metatroncube-software-solutions-improve-mobile-ux-for-my-business-website/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-a-good-agency-for-website-redesign-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/seo-for-small-businesses-waterloo/weekly0.6https://metatroncubesolutions.com/blog/modern-business-website-features-waterloo/weekly0.6https://metatroncubesolutions.com/blog/why-social-media-management-important-business/weekly0.6https://metatroncubesolutions.com/blog/why-you-need-digital-marketing-agency-business-growth/weekly0.6https://metatroncubesolutions.com/blog/how-much-does-it-cost-to-hire-a-small-business-digital-marketing-agency-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/digital-marketing-agency-pricing-models-explained/weekly0.6https://metatroncubesolutions.com/blog/how-custom-software-development-helps-businesses-scale-faster/weekly0.6https://metatroncubesolutions.com/blog/top-benefits-of-choosing-custom-software-over-off-the-shelf-solutions/weekly0.6 \ No newline at end of file +https://metatroncubesolutions.com/daily1.0https://metatroncubesolutions.com/services-digital-solutions/daily0.7https://metatroncubesolutions.com/about-us/weekly0.7https://metatroncubesolutions.com/careers/weekly0.7https://metatroncubesolutions.com/portfolio/weekly0.7https://metatroncubesolutions.com/blog/weekly0.7https://metatroncubesolutions.com/contact/monthly0.5https://metatroncubesolutions.com/faq/monthly0.5https://metatroncubesolutions.com/service/erp-development-implementation/weekly0.6https://metatroncubesolutions.com/service/website-development-company/weekly0.6https://metatroncubesolutions.com/service/mobile-application-development/weekly0.6https://metatroncubesolutions.com/service/graphic-designing-company/weekly0.6https://metatroncubesolutions.com/service/ui-ux-designing/weekly0.6https://metatroncubesolutions.com/service/search-engine-optimization-seo-content-writing/weekly0.6https://metatroncubesolutions.com/service/digital-marketing-agency-in-canada/weekly0.6https://metatroncubesolutions.com/service/app-development-waterloo/weekly0.6https://metatroncubesolutions.com/service/kitchener-waterloo-website-design-services/weekly0.6https://metatroncubesolutions.com/service/professional-website-designers-in-waterloo/weekly0.6https://metatroncubesolutions.com/service/waterloo-seo-services/weekly0.6https://metatroncubesolutions.com/service/web-design-toronto-custom-website-creation-by-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/service/web-page-design-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/5-tips-to-create-viral-content-that-drives-engagement/weekly0.6https://metatroncubesolutions.com/blog/instagram-vs-facebook-choosing-the-right-platform-for-your-business/weekly0.6https://metatroncubesolutions.com/blog/how-local-seo-can-drive-more-foot-traffic-to-your-business/weekly0.6https://metatroncubesolutions.com/blog/on-page-vs-off-page-seo-what-every-business-owner-needs-to-know/weekly0.6https://metatroncubesolutions.com/blog/how-to-create-a-winning-digital-marketing-strategy-for-your-business/weekly0.6https://metatroncubesolutions.com/blog/white-hat-vs-black-hat-seo-an-in-depth-link-building-guide/weekly0.6https://metatroncubesolutions.com/blog/how-to-boost-your-small-business-with-effective-digital-marketing-strategies/weekly0.6https://metatroncubesolutions.com/blog/the-importance-of-local-seo-for-real-estate-agents/weekly0.6https://metatroncubesolutions.com/blog/how-to-optimize-your-website-for-voice-search/weekly0.6https://metatroncubesolutions.com/blog/how-ai-is-revolutionizing-web-development-and-seo/weekly0.6https://metatroncubesolutions.com/blog/top-digital-marketing-agency-in-canada-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/best-digital-marketing-company-in-canada-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/web-designers-for-small-business/weekly0.6https://metatroncubesolutions.com/blog/mobile-commerce-2024-web-app-development-evolution/weekly0.6https://metatroncubesolutions.com/blog/how-to-personalize-cold-emails-without-spending-hours-on-research/weekly0.6https://metatroncubesolutions.com/blog/how-to-overcome-the-biggest-challenges-in-cold-emailing-b2b-success/weekly0.6https://metatroncubesolutions.com/blog/9-powerful-free-google-tools-to-grow-your-business/weekly0.6https://metatroncubesolutions.com/blog/5-digital-marketing-mistakes-every-small-business-must-avoid/weekly0.6https://metatroncubesolutions.com/blog/how-digital-solutions-drove-success-for-a-local-business/weekly0.6https://metatroncubesolutions.com/blog/ai-driven-seo-how-to-future-proof-your-search-strategy/weekly0.6https://metatroncubesolutions.com/blog/mastering-omnichannel-marketing-strategies-for-2026/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-software-solutions-improve-local-seo-waterloo/weekly0.6https://metatroncubesolutions.com/blog/why-metatroncube-software-solutions-top-choice-social-media-marketing-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-does-metatroncube-software-solutions-help-businesses-get-more-local-customers-through-search-engines/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-optimize-my-google-business-profile/weekly0.6https://metatroncubesolutions.com/blog/seo-services-waterloo-small-businesses-metatroncube/weekly0.6https://metatroncubesolutions.com/blog/boost-google-maps-ranking-waterloo-metatroncube/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-software-solutions-uses-ai-tools-to-boost-your-marketing-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/what-types-of-social-media-ads-does-metatroncube-software-solutions-recommend-for-small-businesses-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/should-i-run-facebook-or-google-ads-for-my-business-and-can-metatroncube-software-solutions-manage-them/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-the-best-ppc-agency-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-metatroncube-software-solutions-help-me-get-more-followers-for-my-local-business/weekly0.6https://metatroncubesolutions.com/blog/how-to-track-roi-from-your-website-and-marketing-campaigns-with-metatroncube-software-solutions/weekly0.6https://metatroncubesolutions.com/blog/does-metatroncube-software-solutions-provide-ai-powered-marketing-solutions-for-local-businesses-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-i-track-roi-from-my-website-and-marketing-campaigns-with-metatroncube-software-solutions-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-manage-my-social-media-campaigns-from-start-to-finish/weekly0.6https://metatroncubesolutions.com/blog/does-metatroncube-software-solutions-provide-website-audits-for-small-businesses/weekly0.6https://metatroncubesolutions.com/blog/can-metatroncube-software-solutions-handle-both-seo-and-ppc-campaigns-for-my-business-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/what-types-of-social-media-ads-does-metatroncube-software-solutions-recommend-for-small-businesses-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/driving-digital-growth-with-metatroncubes-performance-focused-marketing-strategies/weekly0.6https://metatroncubesolutions.com/blog/how-metatroncube-helps-businesses-scale-faster-with-smart-digital-solutions/weekly0.6https://metatroncubesolutions.com/blog/building-powerful-digital-brands-with-metatroncube-creative-technical-expertise/weekly0.6https://metatroncubesolutions.com/blog/professional-digital-marketing-services-in-canada-for-sustainable-business-growth/weekly0.6https://metatroncubesolutions.com/blog/custom-website-development-solutions-in-canada-for-modern-businesses/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-the-top-choice-for-social-media-marketing-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/how-can-metatroncube-software-solutions-improve-mobile-ux-for-my-business-website/weekly0.6https://metatroncubesolutions.com/blog/is-metatroncube-software-solutions-a-good-agency-for-website-redesign-in-waterloo/weekly0.6https://metatroncubesolutions.com/blog/seo-for-small-businesses-waterloo/weekly0.6https://metatroncubesolutions.com/blog/modern-business-website-features-waterloo/weekly0.6https://metatroncubesolutions.com/blog/why-social-media-management-important-business/weekly0.6https://metatroncubesolutions.com/blog/why-you-need-digital-marketing-agency-business-growth/weekly0.6https://metatroncubesolutions.com/blog/how-much-does-it-cost-to-hire-a-small-business-digital-marketing-agency-in-toronto/weekly0.6https://metatroncubesolutions.com/blog/digital-marketing-agency-pricing-models-explained/weekly0.6https://metatroncubesolutions.com/blog/how-custom-software-development-helps-businesses-scale-faster/weekly0.6https://metatroncubesolutions.com/blog/top-benefits-of-choosing-custom-software-over-off-the-shelf-solutions/weekly0.6 \ No newline at end of file diff --git a/scripts/generate-sitemap.cjs b/scripts/generate-sitemap.cjs index 46e7bb2..b6b38ba 100644 --- a/scripts/generate-sitemap.cjs +++ b/scripts/generate-sitemap.cjs @@ -43,19 +43,19 @@ const staticLinks = [ { url: '/blog/', changefreq: 'weekly', priority: 0.7 }, { url: '/contact/', changefreq: 'monthly', priority: 0.5 }, { url: '/faq/', changefreq: 'monthly', priority: 0.5 }, - { url: '/services-digital-solutions/erp-development-implementation/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/website-development-company/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/mobile-application-development/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/graphic-designing-company/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/ui-ux-designing/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/search-engine-optimization-seo-content-writing/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/digital-marketing-agency-in-canada/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/app-development-waterloo/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/kitchener-waterloo-website-design-services/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/professional-website-designers-in-waterloo/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/waterloo-seo-services/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/web-design-toronto-custom-website-creation-by-metatroncube-software-solutions/', changefreq: 'weekly', priority: 0.6 }, - { url: '/services-digital-solutions/web-page-design-in-waterloo/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/erp-development-implementation/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/website-development-company/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/mobile-application-development/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/graphic-designing-company/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/ui-ux-designing/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/search-engine-optimization-seo-content-writing/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/digital-marketing-agency-in-canada/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/app-development-waterloo/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/kitchener-waterloo-website-design-services/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/professional-website-designers-in-waterloo/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/waterloo-seo-services/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/web-design-toronto-custom-website-creation-by-metatroncube-software-solutions/', changefreq: 'weekly', priority: 0.6 }, + { url: '/service/web-page-design-in-waterloo/', changefreq: 'weekly', priority: 0.6 }, ]; // ✅ Dynamic blog posts diff --git a/src/app/globals.css b/src/app/globals.css index 94013d4..f7e83f5 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -9342,8 +9342,8 @@ body { .form-textarea-custom-global, .form-textarea { - min-height: 100px; - height: auto; + min-height: 110px; + /* height: auto; */ resize: vertical; } @@ -10875,7 +10875,7 @@ body { height: 100%; border: none; background: transparent; - filter: grayscale(1); + /* filter: grayscale(1); */ } /* Contact Section Styles (Root) */ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5d84419..58534bc 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -10,12 +10,34 @@ import Offcanvas from "@/components/common/Offcanvas"; export const metadata: Metadata = { metadataBase: new URL("https://metatroncubesolutions.com"), - title: "Metatroncube: Leaders in Web & Mobile Dev, SEO, Digital Marketing", - description: "Metatroncube Software Solution: Your go-to agency for cutting-edge web & app development, SEO, digital marketing, and graphic design services", + title: "Metatroncube: Leaders in Web & Mobile Dev, SEO, Digital Marketing", + description: "Metatroncube Software Solution: Your go-to agency for cutting-edge web & app development, SEO, digital marketing, and graphic design services.", + keywords: "web development, mobile apps, SEO, digital marketing, graphic design, Waterloo Ontario", + openGraph: { + title: "Metatroncube: Leaders in Web & Mobile Dev", + description: "Cutting-edge web & app development, SEO, and digital marketing services.", + url: "https://metatroncubesolutions.com", + siteName: "Metatroncube Software Solution", + images: [ + { + url: "/assets/images/logo/og-image.jpg", + width: 1200, + height: 630, + }, + ], + locale: "en_US", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "Metatroncube: Leaders in Web & Mobile Dev", + description: "Cutting-edge web & app development, SEO, and digital marketing services.", + images: ["/assets/images/logo/og-image.jpg"], + }, robots: { index: true, follow: true, - }, + } }; export default function RootLayout({ diff --git a/src/app/page.tsx b/src/app/page.tsx index 0fb167c..04a1021 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,10 +2,8 @@ import React from "react"; import type { Metadata } from "next"; import Header1 from "@/components/layout/Header1"; import Footer1 from "@/components/layout/Footer1"; - import BannerSection from "@/components/home/home-1/BannerSection"; import AboutSection from "@/components/home/home-1/AboutSection"; -import ServiceThreeSlider from "@/components/home/home-1/ServiceThreeSlider"; import CtaSection from "@/components/home/home-1/CtaSection"; import ChooseSection from "@/components/home/home-1/ChooseSection"; import TestimonialsSection from "@/components/home/home-1/TestimonialsSection"; diff --git a/src/app/service/[slug]/page.tsx b/src/app/service/[slug]/page.tsx new file mode 100644 index 0000000..a684ca0 --- /dev/null +++ b/src/app/service/[slug]/page.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import type { Metadata } from "next"; +import Header1 from "@/components/layout/Header1"; +import Footer1 from "@/components/layout/Footer1"; +import PageHeader from "@/components/common/PageHeader"; +import ServiceDetails from "@/components/services-digital-solutions/ServiceDetails"; +import { ourServices } from "@/utils/data"; +import { notFound } from "next/navigation"; + +export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { + const { slug } = await params; + const service = ourServices.find((s) => s.slug === slug); + + if (!service) { + return { + title: "Service Not Found", + }; + } + + return { + title: service.metatitle || `${service.title} | Metatroncube Software Solution`, + description: service.metaDesc || service.description, + alternates: { + canonical: `/service/${slug}`, + }, + }; +} + +export async function generateStaticParams() { + return ourServices.map((service) => ({ + slug: service.slug, + })); +} + +export default async function ServiceDetailsPage({ params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params; + + const service = ourServices.find((s) => s.slug === slug); + + if (!service) { + notFound(); + } + + return ( + <> + +
+ + +
+ + + ); +} diff --git a/src/app/services-digital-solutions/[slug]/page.tsx b/src/app/services-digital-solutions/[slug]/page.tsx index 11c8763..1646b8d 100644 --- a/src/app/services-digital-solutions/[slug]/page.tsx +++ b/src/app/services-digital-solutions/[slug]/page.tsx @@ -1,30 +1,5 @@ -import React from "react"; -import type { Metadata } from "next"; -import Header1 from "@/components/layout/Header1"; -import Footer1 from "@/components/layout/Footer1"; -import PageHeader from "@/components/common/PageHeader"; -import ServiceDetails from "@/components/services-digital-solutions/ServiceDetails"; +import { permanentRedirect } from "next/navigation"; import { ourServices } from "@/utils/data"; -import { notFound } from "next/navigation"; - -export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { - const { slug } = await params; - const service = ourServices.find((s) => s.slug === slug); - - if (!service) { - return { - title: "Service Not Found", - }; - } - - return { - title: service.metatitle || `${service.title} | Metatroncube Software Solution`, - description: service.metaDesc || service.description, - alternates: { - canonical: `/services-digital-solutions/${slug}`, - }, - }; -} export async function generateStaticParams() { return ourServices.map((service) => ({ @@ -35,24 +10,5 @@ export async function generateStaticParams() { export default async function ServiceDetailsPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; - const service = ourServices.find((s) => s.slug === slug); - - if (!service) { - notFound(); - } - - return ( - <> - -
- - -
- - - ); + permanentRedirect(`/service/${slug}`); } diff --git a/src/app/services-digital-solutions/page.tsx b/src/app/services-digital-solutions/page.tsx index 41a15c5..7e23ae5 100644 --- a/src/app/services-digital-solutions/page.tsx +++ b/src/app/services-digital-solutions/page.tsx @@ -2,7 +2,6 @@ import React from "react"; import type { Metadata } from "next"; import Header1 from "@/components/layout/Header1"; import Footer1 from "@/components/layout/Footer1"; -import FeaturesSection from "@/components/home/home-1/FeaturesSection"; import ChooseSection from "@/components/home/home-3/ChooseSection"; import WorkProcessSection from "@/components/home/home-2/WorkProcessSection"; import ServiceSection2 from "@/components/careers/ServiceSection"; @@ -32,7 +31,6 @@ export default function Home3() { bannerLeftImage="/assets/images/innerbanner/left/left-services.webp" bannerRightImage="/assets/images/innerbanner/right/right-services.webp" /> - {/* */} diff --git a/src/components/about/Results.tsx b/src/components/about/Results.tsx index e1dca54..ac5c819 100644 --- a/src/components/about/Results.tsx +++ b/src/components/about/Results.tsx @@ -18,7 +18,7 @@ const ResultsSection = () => { Delve into Metatroncube’s unique approach to delivering exceptional results. Our ‘Discover Our Process’ section illuminates the meticulous steps we take in transforming your digital vision into tangible success.

- From the initial consultation to the final launch and beyond, we blend strategic planning, innovative design, and cutting-edge technology to craoft digital solutions that stand out. This journey is not just about reaching yur goals; it’s about exceeding them and setting new standards in the digital world. Explore our proven process that combines expertise, creativity, and client collaboration to achieve extraordinary outcomes. + From the initial consultation to the final launch and beyond, we blend strategic planning, innovative design, and cutting-edge technology to craft digital solutions that stand out. This journey is not just about reaching your goals; it’s about exceeding them and setting new standards in the digital world. Explore our proven process that combines expertise, creativity, and client collaboration to achieve extraordinary outcomes.

diff --git a/src/components/about/WhyChooseUs.tsx b/src/components/about/WhyChooseUs.tsx index ab19964..1aea7f2 100644 --- a/src/components/about/WhyChooseUs.tsx +++ b/src/components/about/WhyChooseUs.tsx @@ -27,7 +27,6 @@ const WhyChooseUs = () => {
Guided by Purpose, Driven by Passion

Our Vision

- {/* */}

Join us in shaping the future of technology and delivering meaningful solutions.

@@ -41,7 +40,7 @@ const WhyChooseUs = () => {
- At Metatroncube, we’re driven by the idea that technology can bridge gaps, empower businesses, and simplify lives. + If you’re ready for a journey of growth, innovation, and collaboration, we’d love to have you. Explore our openings below.
diff --git a/src/components/blog/BlogSidebar.tsx b/src/components/blog/BlogSidebar.tsx index c1e660d..92f6e56 100644 --- a/src/components/blog/BlogSidebar.tsx +++ b/src/components/blog/BlogSidebar.tsx @@ -127,7 +127,7 @@ const BlogSidebar = ({
setSearchTerm(e.target.value)} /> diff --git a/src/components/cards/BlogCard.tsx b/src/components/cards/BlogCard.tsx deleted file mode 100644 index c86eb03..0000000 --- a/src/components/cards/BlogCard.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import Link from 'next/link'; -import { BlogType } from '@/types'; - -interface BlogCardProps { - blog: BlogType; -} - -const BlogCard: React.FC = ({ blog }) => { - return ( -
-
- {blog.title} -
-
- -
-

- {blog.title} -

-
-

{blog.description}

-
- - - -
-
-
- ); -}; - -export default BlogCard; diff --git a/src/components/cards/CaseStudyCard.tsx b/src/components/cards/CaseStudyCard.tsx deleted file mode 100644 index b90a481..0000000 --- a/src/components/cards/CaseStudyCard.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import Link from 'next/link'; -import { CaseStudyType } from '@/types'; - -interface CaseStudyCardProps { - caseStudy: CaseStudyType; -} - -const CaseStudyCard: React.FC = ({ caseStudy }) => { - return ( -
-
- {caseStudy.title} -
-
-

{caseStudy.tag}

-
- {caseStudy.title} -
- -
-
-
- ); -}; - -export default CaseStudyCard; diff --git a/src/components/cards/MemberCard.tsx b/src/components/cards/MemberCard.tsx deleted file mode 100644 index 59a4859..0000000 --- a/src/components/cards/MemberCard.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import Link from 'next/link'; -import { TeamMemberType } from '@/types'; - -interface MemberCardProps { - member: TeamMemberType; -} - -const MemberCard: React.FC = ({ member }) => { - return ( -
-
- {member.name} -
-
-
- {member.name} -
-

{member.role}

-
-
- -
-
-
    -
  • -
  • -
  • -
  • -
-
- ); -}; - -export default MemberCard; diff --git a/src/components/careers/AboutOneSection.tsx b/src/components/careers/AboutOneSection.tsx deleted file mode 100644 index 0fdacda..0000000 --- a/src/components/careers/AboutOneSection.tsx +++ /dev/null @@ -1,148 +0,0 @@ -"use client"; - -import React, { useEffect, useRef } from "react"; -import Link from "next/link"; -import Image from "next/image"; - -const AboutOneSection = () => { - const imagesRef = useRef(null); - const wrapperRef = useRef(null); - - useEffect(() => { - const observer = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - const el = entry.target as HTMLElement; - const elements = el.querySelectorAll(".wow"); - elements.forEach((child) => { - const childEl = child as HTMLElement; - const delay = childEl.dataset.wowDelay || "0ms"; - setTimeout(() => { - childEl.classList.add("animated", "fadeInUp"); - childEl.style.visibility = "visible"; - }, parseInt(delay)); - }); - observer.unobserve(el); - } - }); - }, - { threshold: 0.1 } - ); - - if (imagesRef.current) observer.observe(imagesRef.current); - if (wrapperRef.current) observer.observe(wrapperRef.current); - - return () => observer.disconnect(); - }, []); - - return ( -
-
-
-
-
-
-
-
-
-
-
- About Careers -
-
- Careers Team -
-
- Logo -
- {/*
*/} -
-
-
-
-
-
-
-
- - About us -
-

- Discover the Marketing Agency -

-
-
- There are many variations of passages of Lorem Ipsum avalab but the majority have - suffered alteration in some form, by injected humour, or randomised words which - don't -
-
-
- Free Consultation -
-
-

- Free Consultation -

-

- There are many variations of passages of Lorem Ipsum avalab but -

-
-
-
    -
  • - - Many variations of passages of lorem -
  • -
  • - - Many variations of passages of lorem -
  • -
  • - - Expert many variations teacher -
  • -
-
- - Discover More - -
-
-
-
-
-
-
- ); -}; - -export default AboutOneSection; diff --git a/src/components/careers/ContactSection.tsx b/src/components/careers/ContactSection.tsx index f520655..265f39b 100644 --- a/src/components/careers/ContactSection.tsx +++ b/src/components/careers/ContactSection.tsx @@ -171,7 +171,7 @@ const ContactSection = () => {

- Get free Business touch Customers me. + Get in touch for a free business consultation.

@@ -237,6 +237,7 @@ const ContactSection = () => { + {formErrors.service && {formErrors.service}} diff --git a/src/components/careers/ProcessSection.tsx b/src/components/careers/ProcessSection.tsx deleted file mode 100644 index 74d3acd..0000000 --- a/src/components/careers/ProcessSection.tsx +++ /dev/null @@ -1,123 +0,0 @@ -"use client"; - -import React, { useEffect, useRef } from "react"; -import Image from "next/image"; - -const ProcessSection = () => { - const sectionRef = useRef(null); - - useEffect(() => { - const observer = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - const elements = entry.target.querySelectorAll(".wow"); - elements.forEach((el) => { - const htmlEl = el as HTMLElement; - const delay = htmlEl.dataset.wowDelay || "0ms"; - const duration = htmlEl.dataset.wowDuration || "1500ms"; - - setTimeout(() => { - htmlEl.classList.add("animated", "fadeInUp"); - htmlEl.style.visibility = "visible"; - htmlEl.style.animationDuration = duration; - }, parseInt(delay)); - }); - observer.unobserve(entry.target); - } - }); - }, - { threshold: 0.1 } - ); - - if (sectionRef.current) { - observer.observe(sectionRef.current); - } - - return () => observer.disconnect(); - }, []); - - const processItems = [ - { - num: "01", - title: "Share Your Concept", - desc: "that a reader will be distracted by the readable content of a page when He is looking", - delay: "0ms", - left: false, - }, - { - num: "02", - title: "Analyze Your Concept", - desc: "that a reader will be distracted by the readable content of a page when He is looking", - delay: "200ms", - left: true, - }, - { - num: "03", - title: "Let’s Start Development", - desc: "that a reader will be distracted by the readable content of a page when He is looking", - delay: "300ms", - left: false, - }, - { - num: "04", - title: "Read to Launch", - desc: "that a reader will be distracted by the readable content of a page when He is looking", - delay: "400ms", - left: true, - }, - ]; - - return ( -
-
-
-
-
-
-
- - Step Process -
-

Our works Process

-
-
-
-
-
- Process Line -
-
- {processItems.map((item, index) => ( -
- {item.num} -

{item.title}

-

{item.desc}

-
- ))} -
-
-
-
- ); -}; - -export default ProcessSection; diff --git a/src/components/careers/ServiceSection.tsx b/src/components/careers/ServiceSection.tsx index 3a9e0f1..278e87f 100644 --- a/src/components/careers/ServiceSection.tsx +++ b/src/components/careers/ServiceSection.tsx @@ -80,7 +80,7 @@ const ServiceSection2 = () => {

--

- {service.title} + {service.title}

{service.description.substring(0, 100)}... @@ -89,7 +89,7 @@ const ServiceSection2 = () => {

{service.title}
- +
diff --git a/src/components/careers/WhyChooseSection.tsx b/src/components/careers/WhyChooseSection.tsx deleted file mode 100644 index 77a4d41..0000000 --- a/src/components/careers/WhyChooseSection.tsx +++ /dev/null @@ -1,111 +0,0 @@ -"use client"; - -import React, { useEffect, useRef } from "react"; -import Link from "next/link"; - -const WhyChooseSection = () => { - const sectionRef = useRef(null); - - useEffect(() => { - const observer = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - const elements = entry.target.querySelectorAll(".wow"); - elements.forEach((el) => { - const htmlEl = el as HTMLElement; - const delay = htmlEl.dataset.wowDelay || "0ms"; - setTimeout(() => { - htmlEl.classList.add("animated"); - - if (htmlEl.classList.contains("slideInLeft")) { - htmlEl.classList.add("slideInLeft"); - } else { - htmlEl.classList.add("fadeInUp"); - } - - htmlEl.style.visibility = "visible"; - }, parseInt(delay)); - }); - observer.unobserve(entry.target); - } - }); - }, - { threshold: 0.1 } - ); - - if (sectionRef.current) { - observer.observe(sectionRef.current); - } - - return () => observer.disconnect(); - }, []); - - const listItems = [ - { - iconClass: "fa-solid fa-globe", - title: "Accelerate Innovation Tech Teams", - link: "/team", - }, - { - iconClass: "fa-solid fa-network-wired", - title: "Network Infrastructure software", - link: "/about", - }, - { - iconClass: "fa-solid fa-gears", - title: "We Provide This Solution Business", - link: "/services", - }, - ]; - - return ( -
-
-
-
-
-
- Why Choose Us -
-
-
-
-
-
- - Why Choose Us - -
-

- Choose The Best IT Service For Company Solution -

-
-

- Business tailored design, management & support services Business business agency elit, sed do eiusmod tempor - majority have in some we form, by injected humour solution. -

-
    - {listItems.map((item, index) => ( -
  • - - - - - {item.title} - -
  • - ))} -
-
-
-
-
-
- ); -}; - -export default WhyChooseSection; diff --git a/src/components/careers/WorkProcessSection.tsx b/src/components/careers/WorkProcessSection.tsx index a3a8a38..6a9ae5d 100644 --- a/src/components/careers/WorkProcessSection.tsx +++ b/src/components/careers/WorkProcessSection.tsx @@ -73,7 +73,6 @@ const WorkProcessSection2 = () => {
digital transformation journey

Embark on a digital transformation journey with Metatroncube

- {/* */}

Our process begins with consultation and strategy development, where we understand your vision and create a customized plan aligned with your goals. We then move into design and development, combining creativity and technology to build functional and visually appealing solutions. Next, we implement and optimize the strategy to ensure efficiency, performance, and measurable impact. After thorough testing, we launch your project smoothly with a focus on quality and reliability. Finally, we provide ongoing support, continuous analysis, and client feedback integration to ensure long-term growth and sustained digital success. diff --git a/src/components/common/CircularProgress/CircularProgress.tsx b/src/components/common/CircularProgress/CircularProgress.tsx deleted file mode 100644 index 18c1202..0000000 --- a/src/components/common/CircularProgress/CircularProgress.tsx +++ /dev/null @@ -1,53 +0,0 @@ -"use client"; -import React from 'react'; - -interface CircularProgressProps { - percent: number; - radius: number; - strokeColor: string; - strokeWidth: number; -} - -const CircularProgress: React.FC = ({ percent, radius, strokeColor, strokeWidth }) => { - const normalizedRadius = radius - strokeWidth * 2; - const circumference = normalizedRadius * 2 * Math.PI; - const strokeDashoffset = circumference - (percent / 100) * circumference; - - return ( - - - - - {percent}% - - - ); -}; - -export default CircularProgress; diff --git a/src/components/common/Offcanvas.tsx b/src/components/common/Offcanvas.tsx index 2912ee9..926f165 100644 --- a/src/components/common/Offcanvas.tsx +++ b/src/components/common/Offcanvas.tsx @@ -8,13 +8,13 @@ const mobileNavItems = [ title: "Service", link: "/services-digital-solutions", children: [ - { title: "Website Development", link: "/services-digital-solutions/website-development-company" }, - { title: "Mobile Application Development", link: "/services-digital-solutions/mobile-application-development" }, - { title: "Graphic Designing", link: "/services-digital-solutions/graphic-designing-company" }, - { title: "UI / UX Designing", link: "/services-digital-solutions/ui-ux-designing" }, - { title: "SEO & Content Writing", link: "/services-digital-solutions/search-engine-optimization-seo-content-writing" }, - { title: "Digital Marketing", link: "/services-digital-solutions/digital-marketing-agency-in-canada" }, - { title: 'ERP Development & Implementation', link: '/services-digital-solutions/erp-development-implementation' }, + { title: "Website Development", link: "/service/website-development-company" }, + { title: "Mobile Application Development", link: "/service/mobile-application-development" }, + { title: "Graphic Designing", link: "/service/graphic-designing-company" }, + { title: "UI / UX Designing", link: "/service/ui-ux-designing" }, + { title: "SEO & Content Writing", link: "/service/search-engine-optimization-seo-content-writing" }, + { title: "Digital Marketing", link: "/service/digital-marketing-agency-in-canada" }, + { title: 'ERP Development & Implementation', link: '/service/erp-development-implementation' }, ], }, { title: "Portfolio", link: "/portfolio" }, diff --git a/src/components/common/PageHeader.tsx b/src/components/common/PageHeader.tsx index b02c2ef..e198759 100644 --- a/src/components/common/PageHeader.tsx +++ b/src/components/common/PageHeader.tsx @@ -9,8 +9,8 @@ interface PageHeaderProps { } const PageHeader: React.FC = ({ title, breadcrumbItems, bannerLeftImage, bannerRightImage }) => { - const defaultRightImage = "https://bracketweb.com/pelocishtml/assets/images/backgrounds/page-header-img-1.png"; - const defaultLeftImage = "https://bracketweb.com/pelocishtml/assets/images/shapes/bannar-shape-2.png"; + const defaultRightImage = "/assets/images/innerbanner/right/right-blog.webp"; + const defaultLeftImage = "/assets/images/innerbanner/left/left-blog.webp"; return (

diff --git a/src/components/common/SearchOverlay.tsx b/src/components/common/SearchOverlay.tsx index b83f4e8..56061e3 100644 --- a/src/components/common/SearchOverlay.tsx +++ b/src/components/common/SearchOverlay.tsx @@ -33,13 +33,6 @@ const SearchOverlay = () => { - diff --git a/src/components/common/SectionTitle.tsx b/src/components/common/SectionTitle.tsx index 83330f8..09bb870 100644 --- a/src/components/common/SectionTitle.tsx +++ b/src/components/common/SectionTitle.tsx @@ -26,13 +26,6 @@ const SectionTitle: React.FC = ({ dangerouslySetInnerHTML={{ __html: title }} /> - {/* {showShape && ( - - )} */} ); }; diff --git a/src/components/contact/ContactSection.tsx b/src/components/contact/ContactSection.tsx index f04650d..3a7a2f7 100644 --- a/src/components/contact/ContactSection.tsx +++ b/src/components/contact/ContactSection.tsx @@ -101,7 +101,6 @@ const ContactSection = () => {

Drop us a Line.

Whether you have a question, a project idea, or just want to chat about your digital needs, our team is here to listen and provide tailored solutions. Reach out to Metatroncube Software Solution and start your journey towards innovative digital success.

- {/* */}
@@ -200,6 +199,7 @@ const ContactSection = () => { + {formErrors.service && {formErrors.service}}
diff --git a/src/components/contact/MapSection.tsx b/src/components/contact/MapSection.tsx index 8afdeb4..14f5b94 100644 --- a/src/components/contact/MapSection.tsx +++ b/src/components/contact/MapSection.tsx @@ -7,7 +7,7 @@ const MapSection = () => {