GNXSOFT.COM
This commit is contained in:
26
gnx-react/app/about-us/page.tsx
Normal file
26
gnx-react/app/about-us/page.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
"use client";
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import AboutBanner from "@/components/pages/about/AboutBanner";
|
||||
import AboutServiceComponent from "@/components/pages/about/AboutService";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import AboutScrollProgressButton from "@/components/pages/about/AboutScrollProgressButton";
|
||||
import AboutInitAnimations from "@/components/pages/about/AboutInitAnimations";
|
||||
import AboutStarter from "@/components/pages/about/AboutStarter";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="enterprise-about-page">
|
||||
<Header />
|
||||
<main>
|
||||
<AboutBanner />
|
||||
<AboutServiceComponent />
|
||||
<AboutStarter />
|
||||
</main>
|
||||
<Footer />
|
||||
<AboutScrollProgressButton />
|
||||
<AboutInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
23
gnx-react/app/blog/[slug]/page.tsx
Normal file
23
gnx-react/app/blog/[slug]/page.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import BlogSingle from "@/components/pages/blog/BlogSingle";
|
||||
import LatestPost from "@/components/pages/blog/LatestPost";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import BlogScrollProgressButton from "@/components/pages/blog/BlogScrollProgressButton";
|
||||
import BlogInitAnimations from "@/components/pages/blog/BlogInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<BlogSingle />
|
||||
<LatestPost />
|
||||
</main>
|
||||
<Footer />
|
||||
<BlogScrollProgressButton />
|
||||
<BlogInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
21
gnx-react/app/blog/page.tsx
Normal file
21
gnx-react/app/blog/page.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import BlogItems from "@/components/pages/blog/BlogItems";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import BlogScrollProgressButton from "@/components/pages/blog/BlogScrollProgressButton";
|
||||
import BlogInitAnimations from "@/components/pages/blog/BlogInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<BlogItems />
|
||||
</main>
|
||||
<Footer />
|
||||
<BlogScrollProgressButton />
|
||||
<BlogInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
21
gnx-react/app/career/[slug]/page.tsx
Normal file
21
gnx-react/app/career/[slug]/page.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import JobSingle from "@/components/pages/career/JobSingle";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import CareerScrollProgressButton from "@/components/pages/career/CareerScrollProgressButton";
|
||||
import CareerInitAnimations from "@/components/pages/career/CareerInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<JobSingle />
|
||||
</main>
|
||||
<Footer />
|
||||
<CareerScrollProgressButton />
|
||||
<CareerInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
27
gnx-react/app/career/page.tsx
Normal file
27
gnx-react/app/career/page.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import CareerBanner from "@/components/pages/career/CareerBanner";
|
||||
import OpenPosition from "@/components/pages/career/OpenPosition";
|
||||
import Thrive from "@/components/pages/career/Thrive";
|
||||
import MasonryGallery from "@/components/pages/career/MasonryGallery";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import CareerScrollProgressButton from "@/components/pages/career/CareerScrollProgressButton";
|
||||
import CareerInitAnimations from "@/components/pages/career/CareerInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<CareerBanner />
|
||||
<OpenPosition />
|
||||
<Thrive />
|
||||
<MasonryGallery />
|
||||
</main>
|
||||
<Footer />
|
||||
<CareerScrollProgressButton />
|
||||
<CareerInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
25
gnx-react/app/case-study/[slug]/page.tsx
Normal file
25
gnx-react/app/case-study/[slug]/page.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import CaseSingle from "@/components/pages/case-study/CaseSingle";
|
||||
import Process from "@/components/pages/case-study/Process";
|
||||
import RelatedCase from "@/components/pages/case-study/RelatedCase";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import CaseStudyScrollProgressButton from "@/components/pages/case-study/CaseStudyScrollProgressButton";
|
||||
import CaseStudyInitAnimations from "@/components/pages/case-study/CaseStudyInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<CaseSingle />
|
||||
<Process />
|
||||
<RelatedCase />
|
||||
</main>
|
||||
<Footer />
|
||||
<CaseStudyScrollProgressButton />
|
||||
<CaseStudyInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
21
gnx-react/app/case-study/page.tsx
Normal file
21
gnx-react/app/case-study/page.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import CaseItems from "@/components/pages/case-study/CaseItems";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import CaseStudyScrollProgressButton from "@/components/pages/case-study/CaseStudyScrollProgressButton";
|
||||
import CaseStudyInitAnimations from "@/components/pages/case-study/CaseStudyInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<CaseItems />
|
||||
</main>
|
||||
<Footer />
|
||||
<CaseStudyScrollProgressButton />
|
||||
<CaseStudyInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
21
gnx-react/app/contact-us/page.tsx
Normal file
21
gnx-react/app/contact-us/page.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import ContactSection from "@/components/pages/contact/ContactSection";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import ContactScrollProgressButton from "@/components/pages/contact/ContactScrollProgressButton";
|
||||
import ContactInitAnimations from "@/components/pages/contact/ContactInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<ContactSection />
|
||||
</main>
|
||||
<Footer />
|
||||
<ContactScrollProgressButton />
|
||||
<ContactInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
86
gnx-react/app/layout.tsx
Normal file
86
gnx-react/app/layout.tsx
Normal file
@@ -0,0 +1,86 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Inter, Montserrat } from "next/font/google";
|
||||
import "@/public/styles/main.scss";
|
||||
import { CookieConsentProvider } from "@/components/shared/layout/CookieConsentContext";
|
||||
import { CookieConsent } from "@/components/shared/layout/CookieConsent";
|
||||
|
||||
const montserrat = Montserrat({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
|
||||
variable: "--mont",
|
||||
fallback: [
|
||||
"-apple-system",
|
||||
"Segoe UI",
|
||||
"Roboto",
|
||||
"Ubuntu",
|
||||
"Fira Sans",
|
||||
"Arial",
|
||||
"sans-serif",
|
||||
],
|
||||
});
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ["latin"],
|
||||
display: "swap",
|
||||
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
|
||||
variable: "--inter",
|
||||
fallback: [
|
||||
"-apple-system",
|
||||
"Segoe UI",
|
||||
"Roboto",
|
||||
"Ubuntu",
|
||||
"Fira Sans",
|
||||
"Arial",
|
||||
"sans-serif",
|
||||
],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "EnterpriseSoft Solutions | Enterprise Software Development & IT Solutions",
|
||||
description: "Leading enterprise software development company providing custom solutions, system integrations, and digital transformation services for Fortune 500 companies",
|
||||
keywords: [
|
||||
"Enterprise Software",
|
||||
"Custom Development",
|
||||
"System Integration",
|
||||
"Digital Transformation",
|
||||
"Enterprise Solutions",
|
||||
"Software Consulting",
|
||||
"API Development",
|
||||
"Cloud Migration",
|
||||
],
|
||||
authors: [
|
||||
{
|
||||
name: "EnterpriseSoft Solutions",
|
||||
url: "https://enterprisesoft.com",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body className={`${inter.variable} ${montserrat.variable}`}>
|
||||
<CookieConsentProvider
|
||||
config={{
|
||||
companyName: "EnterpriseSoft Solutions",
|
||||
privacyPolicyUrl: "/privacy-policy",
|
||||
cookiePolicyUrl: "/cookie-policy",
|
||||
dataControllerEmail: "privacy@enterprisesoft.com",
|
||||
retentionPeriod: 365,
|
||||
enableAuditLog: true,
|
||||
enableDetailedSettings: true,
|
||||
showPrivacyNotice: true,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
<CookieConsent />
|
||||
</CookieConsentProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
31
gnx-react/app/not-found.tsx
Normal file
31
gnx-react/app/not-found.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
import Link from "next/link";
|
||||
import HomeScrollProgressButton from "@/components/pages/home/HomeScrollProgressButton";
|
||||
import HomeInitAnimations from "@/components/pages/home/HomeInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<div className="tp-error pt-120 pb-120 text-center">
|
||||
<div className="container">
|
||||
<div className="row justify-content-center">
|
||||
<div className="col-12 col-lg-8">
|
||||
<h1 className="fw-7 text-uppercase mt-8">404 ERROR</h1>
|
||||
<p className="text-xl fw-5 mt-12">Page Not Found</p>
|
||||
<div className="mt-40 d-flex justify-content-center">
|
||||
<Link href="/" className="btn-anim btn-anim-light">
|
||||
Go Home
|
||||
<i className="fa-solid fa-arrow-trend-up"></i>
|
||||
<span></span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<HomeScrollProgressButton />
|
||||
<HomeInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
29
gnx-react/app/page.tsx
Normal file
29
gnx-react/app/page.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import HomeBanner from "@/components/pages/home/HomeBanner";
|
||||
import Overview from "@/components/pages/home/Overview";
|
||||
import Story from "@/components/pages/home/Story";
|
||||
import ServiceIntro from "@/components/pages/home/ServiceIntro";
|
||||
import HomeLatestPost from "@/components/pages/home/HomeLatestPost";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import HomeScrollProgressButton from "@/components/pages/home/HomeScrollProgressButton";
|
||||
import HomeInitAnimations from "@/components/pages/home/HomeInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="tp-app">
|
||||
<Header />
|
||||
<main>
|
||||
<HomeBanner />
|
||||
<Overview />
|
||||
<Story />
|
||||
<ServiceIntro />
|
||||
<HomeLatestPost />
|
||||
</main>
|
||||
<Footer />
|
||||
<HomeScrollProgressButton />
|
||||
<HomeInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
85
gnx-react/app/services/[slug]/page.tsx
Normal file
85
gnx-react/app/services/[slug]/page.tsx
Normal file
@@ -0,0 +1,85 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import ServiceDetailsBanner from "@/components/shared/banners/ServiceDetailsBanner";
|
||||
import ServiceDetails from "@/components/pages/services/ServiceDetails";
|
||||
import ServiceFeatures from "@/components/pages/services/ServiceFeatures";
|
||||
import ServiceDeliverables from "@/components/pages/services/ServiceDeliverables";
|
||||
import ServiceProcess from "@/components/pages/services/ServiceProcess";
|
||||
import Transform from "@/components/pages/services/Transform";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import ServicesScrollProgressButton from "@/components/pages/services/ServicesScrollProgressButton";
|
||||
import ServicesInitAnimations from "@/components/pages/services/ServicesInitAnimations";
|
||||
import { serviceService, Service } from "@/lib/api/serviceService";
|
||||
|
||||
interface ServicePageProps {
|
||||
params: Promise<{
|
||||
slug: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
// Generate static params for all services (optional - for better performance)
|
||||
export async function generateStaticParams() {
|
||||
try {
|
||||
const services = await serviceService.getServices();
|
||||
return services.results.map((service: Service) => ({
|
||||
slug: service.slug,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Error generating static params:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
// Generate metadata for each service page
|
||||
export async function generateMetadata({ params }: ServicePageProps) {
|
||||
try {
|
||||
const { slug } = await params;
|
||||
const service = await serviceService.getServiceBySlug(slug);
|
||||
|
||||
return {
|
||||
title: `${service.title} - GNX Services`,
|
||||
description: service.description,
|
||||
openGraph: {
|
||||
title: service.title,
|
||||
description: service.description,
|
||||
images: service.image_url ? [service.image_url] : [],
|
||||
},
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
title: 'Service Not Found - GNX',
|
||||
description: 'The requested service could not be found.',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const ServicePage = async ({ params }: ServicePageProps) => {
|
||||
let service: Service;
|
||||
|
||||
try {
|
||||
const { slug } = await params;
|
||||
service = await serviceService.getServiceBySlug(slug);
|
||||
} catch (error) {
|
||||
console.error('Error fetching service:', error);
|
||||
notFound();
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="enterprise-app">
|
||||
<Header />
|
||||
<main className="enterprise-main">
|
||||
<ServiceDetailsBanner service={service} />
|
||||
<ServiceDetails service={service} />
|
||||
<ServiceFeatures service={service} />
|
||||
<ServiceDeliverables service={service} />
|
||||
<Transform service={service} />
|
||||
<ServiceProcess service={service} />
|
||||
</main>
|
||||
<Footer />
|
||||
<ServicesScrollProgressButton />
|
||||
<ServicesInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default ServicePage;
|
||||
23
gnx-react/app/services/page.tsx
Normal file
23
gnx-react/app/services/page.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import Header from "@/components/shared/layout/header/Header";
|
||||
import ServicesBanner from "@/components/pages/services/ServicesBanner";
|
||||
import ServiceMain from "@/components/pages/services/ServiceMain";
|
||||
import Footer from "@/components/shared/layout/footer/Footer";
|
||||
import ServicesScrollProgressButton from "@/components/pages/services/ServicesScrollProgressButton";
|
||||
import ServicesInitAnimations from "@/components/pages/services/ServicesInitAnimations";
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<div className="enterprise-app">
|
||||
<Header />
|
||||
<main className="enterprise-main">
|
||||
<ServicesBanner />
|
||||
<ServiceMain />
|
||||
</main>
|
||||
<Footer />
|
||||
<ServicesScrollProgressButton />
|
||||
<ServicesInitAnimations />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default page;
|
||||
Reference in New Issue
Block a user