feat: introduce new app routes with modular structure and enhanced features
Added modular app routes including `login`, `dashboard`, `categories`, `trends`, and `upload`. Introduced reusable components such as `ContentList`, `ContentSkeleton`, and `AppSidebar` for improved UI consistency. Enhanced authentication with `AuthProvider` and implemented lazy loading, dynamic layouts, and infinite scrolling for better performance.
This commit is contained in:
45
frontend/src/app/sitemap.ts
Normal file
45
frontend/src/app/sitemap.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import type { MetadataRoute } from "next";
|
||||
import { ContentService } from "@/services/content.service";
|
||||
import { CategoryService } from "@/services/category.service";
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "https://memegoat.local";
|
||||
|
||||
// Pages statiques
|
||||
const routes = ["", "/trends", "/recent"].map((route) => ({
|
||||
url: `${baseUrl}${route}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "daily" as const,
|
||||
priority: route === "" ? 1 : 0.8,
|
||||
}));
|
||||
|
||||
// Catégories
|
||||
try {
|
||||
const categories = await CategoryService.getAll();
|
||||
const categoryRoutes = categories.map((category) => ({
|
||||
url: `${baseUrl}/category/${category.slug}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "weekly" as const,
|
||||
priority: 0.6,
|
||||
}));
|
||||
routes.push(...categoryRoutes);
|
||||
} catch (error) {
|
||||
console.error("Sitemap: Failed to fetch categories");
|
||||
}
|
||||
|
||||
// Mèmes (limité aux 100 derniers pour éviter un sitemap trop gros d'un coup)
|
||||
try {
|
||||
const contents = await ContentService.getRecent(100, 0);
|
||||
const memeRoutes = contents.data.map((meme) => ({
|
||||
url: `${baseUrl}/meme/${meme.slug}`,
|
||||
lastModified: new Date(meme.updatedAt),
|
||||
changeFrequency: "monthly" as const,
|
||||
priority: 0.5,
|
||||
}));
|
||||
routes.push(...memeRoutes);
|
||||
} catch (error) {
|
||||
console.error("Sitemap: Failed to fetch memes");
|
||||
}
|
||||
|
||||
return routes;
|
||||
}
|
||||
Reference in New Issue
Block a user