Files
afrov2/app/page.tsx
streaper2 16d66c0456
Some checks failed
Build and Push App / build (push) Failing after 11m56s
migration correction et maj
2026-05-03 23:15:14 +02:00

77 lines
2.2 KiB
TypeScript

import React from 'react';
import { prisma } from '@/lib/prisma';
import HomeClient from './HomeClient';
import { Metadata } from 'next';
export async function generateMetadata(): Promise<Metadata> {
const settings = await prisma.siteSetting.findUnique({
where: { id: 'singleton' }
});
const title = settings?.siteName || 'Afroprenariat';
const description = settings?.siteSlogan || "La plateforme de référence pour l'entrepreneuriat africain.";
return {
title: {
default: title,
template: `%s | ${title}`
},
description: description,
openGraph: {
title: title,
description: description,
url: 'https://afroprenariat.com',
siteName: title,
images: [
{
url: 'https://images.unsplash.com/photo-1522071820081-009f0129c71c?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&h=630&q=80',
width: 1200,
height: 630,
alt: title,
},
],
locale: 'fr_FR',
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: title,
description: description,
images: ['https://images.unsplash.com/photo-1522071820081-009f0129c71c?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&h=630&q=80'],
},
};
}
export default async function HomePage() {
// Fetch initial data for faster loading and SEO
const [featuredBusinesses, posts, categories] = await Promise.all([
prisma.business.findMany({
where: { isFeatured: true, isActive: true, isSuspended: false },
take: 4,
include: { categoryRef: true }
}),
prisma.blogPost.findMany({
where: { status: 'PUBLISHED', publishedAt: { lte: new Date() } },
orderBy: { date: 'desc' },
take: 6
}),
prisma.businessCategory.findMany({
where: { isActive: true },
take: 8
})
]);
// Convert to plain objects for client component
const initialFeatured = JSON.parse(JSON.stringify(featuredBusinesses));
const initialPosts = JSON.parse(JSON.stringify(posts));
const initialCategories = JSON.parse(JSON.stringify(categories));
return (
<HomeClient
initialFeatured={initialFeatured}
initialPosts={initialPosts}
initialCategories={initialCategories}
/>
);
}