diff --git a/frontEnd/app/career/[slug]/page.tsx b/frontEnd/app/career/[slug]/page.tsx index f46f6e05..9ffd042b 100644 --- a/frontEnd/app/career/[slug]/page.tsx +++ b/frontEnd/app/career/[slug]/page.tsx @@ -15,17 +15,51 @@ interface JobPageProps { }>; } +// Generate static params for all job positions at build time (optional - for better performance) +// This pre-generates known pages, but new pages can still be generated on-demand +export async function generateStaticParams() { + try { + // Use internal API URL for server-side requests + const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; + const response = await fetch( + `${apiUrl}/api/career/jobs`, + { + method: 'GET', + headers: getApiHeaders(), + next: { revalidate: 60 }, // Revalidate every minute + } + ); + + if (!response.ok) { + console.error('Error fetching jobs for static params:', response.status); + return []; + } + + const data = await response.json(); + const jobs = data.results || data; + + return jobs.map((job: JobPosition) => ({ + slug: job.slug, + })); + } catch (error) { + console.error('Error generating static params for jobs:', error); + return []; + } +} + // Generate metadata for each job page export async function generateMetadata({ params }: JobPageProps): Promise { const { slug } = await params; try { + // Use internal API URL for server-side requests + const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; const response = await fetch( - `${API_CONFIG.BASE_URL}/api/career/jobs/${slug}/`, + `${apiUrl}/api/career/jobs/${slug}`, { method: 'GET', headers: getApiHeaders(), - next: { revalidate: 3600 }, // Revalidate every hour + next: { revalidate: 60 }, // Revalidate every minute } ); @@ -55,12 +89,14 @@ const JobPage = async ({ params }: JobPageProps) => { const { slug } = await params; try { + // Use internal API URL for server-side requests + const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; const response = await fetch( - `${API_CONFIG.BASE_URL}/api/career/jobs/${slug}/`, + `${apiUrl}/api/career/jobs/${slug}`, { method: 'GET', headers: getApiHeaders(), - next: { revalidate: 3600 }, // Revalidate every hour + next: { revalidate: 60 }, // Revalidate every minute } ); diff --git a/frontEnd/app/services/[slug]/page.tsx b/frontEnd/app/services/[slug]/page.tsx index 5a4ca70c..5b5802db 100644 --- a/frontEnd/app/services/[slug]/page.tsx +++ b/frontEnd/app/services/[slug]/page.tsx @@ -12,7 +12,7 @@ import ServicesInitAnimations from "@/components/pages/services/ServicesInitAnim import { Service } from "@/lib/api/serviceService"; import { generateServiceMetadata } from "@/lib/seo/metadata"; import { ServiceSchema, BreadcrumbSchema } from "@/components/shared/seo/StructuredData"; -import { API_CONFIG, getApiHeaders } from "@/lib/config/api"; +import { API_CONFIG } from "@/lib/config/api"; interface ServicePageProps { params: Promise<{ @@ -24,13 +24,13 @@ interface ServicePageProps { // This pre-generates known pages, but new pages can still be generated on-demand export async function generateStaticParams() { try { - // Use internal API URL for server-side requests - const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; const response = await fetch( - `${apiUrl}/api/services/`, + `${API_CONFIG.BASE_URL}/api/services/`, { method: 'GET', - headers: getApiHeaders(), + headers: { + 'Content-Type': 'application/json', + }, next: { revalidate: 60 }, // Revalidate every minute for faster image updates } ); @@ -57,13 +57,13 @@ export async function generateMetadata({ params }: ServicePageProps) { const { slug } = await params; try { - // Use internal API URL for server-side requests - const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; const response = await fetch( - `${apiUrl}/api/services/${slug}/`, + `${API_CONFIG.BASE_URL}/api/services/${slug}/`, { method: 'GET', - headers: getApiHeaders(), + headers: { + 'Content-Type': 'application/json', + }, next: { revalidate: 60 }, // Revalidate every minute for faster image updates } ); @@ -87,13 +87,13 @@ const ServicePage = async ({ params }: ServicePageProps) => { const { slug } = await params; try { - // Use internal API URL for server-side requests - const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:1086'; const response = await fetch( - `${apiUrl}/api/services/${slug}/`, + `${API_CONFIG.BASE_URL}/api/services/${slug}/`, { method: 'GET', - headers: getApiHeaders(), + headers: { + 'Content-Type': 'application/json', + }, next: { revalidate: 60 }, // Revalidate every minute for faster image updates } ); diff --git a/frontEnd/components/pages/career/Thrive.tsx b/frontEnd/components/pages/career/Thrive.tsx index e2770e81..fce67f7d 100644 --- a/frontEnd/components/pages/career/Thrive.tsx +++ b/frontEnd/components/pages/career/Thrive.tsx @@ -1,8 +1,4 @@ import Image from "next/legacy/image"; -import time from "@/public/images/time.png"; -import trans from "@/public/images/trans.png"; -import support from "@/public/images/support.png"; -import skill from "@/public/images/skill.png"; const Thrive = () => { return ( @@ -20,7 +16,7 @@ const Thrive = () => {
- Image + Image

@@ -35,7 +31,7 @@ const Thrive = () => {

- Image + Image

@@ -50,7 +46,7 @@ const Thrive = () => {

- Image + Image

Support

@@ -63,7 +59,7 @@ const Thrive = () => {
- Image + Image

diff --git a/frontEnd/components/pages/case-study/CaseItems.tsx b/frontEnd/components/pages/case-study/CaseItems.tsx index 544da055..60ac8964 100644 --- a/frontEnd/components/pages/case-study/CaseItems.tsx +++ b/frontEnd/components/pages/case-study/CaseItems.tsx @@ -3,7 +3,6 @@ import Image from "next/legacy/image"; import Link from "next/link"; import { useCaseStudies } from "@/lib/hooks/useCaseStudy"; import { getImageUrl } from "@/lib/imageUtils"; -import one from "@/public/images/case/one.png"; const CaseItems = () => { const { caseStudies, loading: casesLoading } = useCaseStudies(); @@ -56,7 +55,7 @@ const CaseItems = () => {
{caseStudy.title} {
{relatedCase.title} { diff --git a/frontEnd/components/pages/home/Overview.tsx b/frontEnd/components/pages/home/Overview.tsx index ec36c9d7..1ab33629 100644 --- a/frontEnd/components/pages/home/Overview.tsx +++ b/frontEnd/components/pages/home/Overview.tsx @@ -5,14 +5,15 @@ import Link from "next/link"; import { useMemo } from "react"; import { useServices } from "@/lib/hooks/useServices"; import { serviceUtils } from "@/lib/api/serviceService"; -import one from "@/public/images/overview/one.png"; -import two from "@/public/images/overview/two.png"; -import three from "@/public/images/overview/three.png"; -import four from "@/public/images/overview/four.png"; -import five from "@/public/images/overview/five.png"; -// Default images array for fallback -const defaultImages = [one, two, three, four, five]; +// Default images array for fallback - use string paths +const defaultImages = [ + "/images/overview/one.png", + "/images/overview/two.png", + "/images/overview/three.png", + "/images/overview/four.png", + "/images/overview/five.png" +]; const Overview = () => { // Memoize the parameters to prevent infinite re-renders diff --git a/frontEnd/components/pages/home/ServiceIntro.tsx b/frontEnd/components/pages/home/ServiceIntro.tsx index a1f81fc9..63abe7ed 100644 --- a/frontEnd/components/pages/home/ServiceIntro.tsx +++ b/frontEnd/components/pages/home/ServiceIntro.tsx @@ -1,6 +1,5 @@ import Image from "next/legacy/image"; import Link from "next/link"; -import thumb from "@/public/images/leading.jpg"; const ServiceIntro = () => { return ( @@ -11,7 +10,7 @@ const ServiceIntro = () => {
Enterprise Software Solutions {
{service.title}
- Image + Image