Merge pull request #14 from Denshooter/d-branch-1

feat(sitemap): update base URL and add build environment handling
This commit is contained in:
Denshooter
2025-02-12 17:59:58 +01:00
committed by GitHub
3 changed files with 30 additions and 4 deletions

View File

@@ -13,9 +13,15 @@ RUN npm install
# Copy the application code # Copy the application code
COPY . . COPY . .
# Set IS_BUILD environment variable for build process
ENV IS_BUILD=true
# Build the Next.js application # Build the Next.js application
RUN npm run build RUN npm run build
# Unset IS_BUILD environment variable for runtime
ENV IS_BUILD=false
# Set environmental variable for production mode # Set environmental variable for production mode
ENV NODE_ENV=production ENV NODE_ENV=production
@@ -23,4 +29,4 @@ ENV NODE_ENV=production
EXPOSE 3000 EXPOSE 3000
# Run the app with the start script # Run the app with the start script
CMD ["npm", "start"] CMD ["npm", "start"]s

View File

@@ -1,3 +1,4 @@
// portfolio/app/api/sitemap/route.tsx
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
interface Project { interface Project {
@@ -13,7 +14,7 @@ interface SitemapRoute {
lastModified: string; lastModified: string;
} }
const baseUrl = "http://localhost:3000"; const baseUrl = "https://dki.one";
const generateSitemap = async (): Promise<SitemapRoute[]> => { const generateSitemap = async (): Promise<SitemapRoute[]> => {
try { try {
@@ -30,6 +31,25 @@ const generateSitemap = async (): Promise<SitemapRoute[]> => {
}, },
]; ];
// Check if running in build environment
if (process.env.IS_BUILD) {
// Use mock data during build
const mockProjectsData: ProjectsData = {
posts: [
{ slug: "project-1" },
{ slug: "project-2" },
{ slug: "project-3" },
],
};
const projectRoutes: SitemapRoute[] = mockProjectsData.posts.map(
(project) => ({
url: `${baseUrl}/projects/${project.slug}`,
lastModified: new Date().toISOString(),
}),
);
return [...staticRoutes, ...projectRoutes];
}
// Fetch project data from your API // Fetch project data from your API
console.log("Fetching project data from API..."); console.log("Fetching project data from API...");
const response = await fetch(`${baseUrl}/api/fetchAllProjects`); const response = await fetch(`${baseUrl}/api/fetchAllProjects`);

View File

@@ -15,9 +15,9 @@ interface SitemapRoute {
} }
export default async function sitemap(): Promise<MetadataRoute.Sitemap> { export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const baseUrl = "http://localhost:3000"; const baseUrl = "https://dki.one";
// Fetch the sitemap data from the dynamic API route // Fetch the sitemap data from the dynamic API routes
const response = await fetch(`${baseUrl}/api/sitemap`); const response = await fetch(`${baseUrl}/api/sitemap`);
if (!response.ok) { if (!response.ok) {
throw new Error(`Failed to fetch sitemap: ${response.statusText}`); throw new Error(`Failed to fetch sitemap: ${response.statusText}`);