diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx
index 97044bd..b3fdb29 100644
--- a/frontend/src/app/layout.tsx
+++ b/frontend/src/app/layout.tsx
@@ -16,7 +16,38 @@ const ubuntuMono = Ubuntu_Mono({
});
export const metadata: Metadata = {
- title: "MemeGoat",
+ title: {
+ default: "MemeGoat | Partagez vos meilleurs mèmes",
+ template: "%s | MemeGoat",
+ },
+ description:
+ "MemeGoat est la plateforme ultime pour découvrir, créer et partager les mèmes les plus drôles de la communauté des chèvres.",
+ keywords: ["meme", "drôle", "goat", "chèvre", "humour", "partage", "gif"],
+ authors: [{ name: "MemeGoat Team" }],
+ creator: "MemeGoat Team",
+ openGraph: {
+ type: "website",
+ locale: "fr_FR",
+ url: "https://memegoat.local",
+ siteName: "MemeGoat",
+ title: "MemeGoat | Partagez vos meilleurs mèmes",
+ description:
+ "La plateforme ultime pour les mèmes. Rejoignez le troupeau !",
+ images: [
+ {
+ url: "/memegoat-og.png",
+ width: 1200,
+ height: 630,
+ alt: "MemeGoat",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "MemeGoat | Partagez vos meilleurs mèmes",
+ description: "La plateforme ultime pour les mèmes. Rejoignez le troupeau !",
+ images: ["/memegoat-og.png"],
+ },
icons: "/memegoat-color.svg",
};
diff --git a/frontend/src/components/app-sidebar.tsx b/frontend/src/components/app-sidebar.tsx
index c89c51b..ad67847 100644
--- a/frontend/src/components/app-sidebar.tsx
+++ b/frontend/src/components/app-sidebar.tsx
@@ -12,6 +12,7 @@ import {
LogOut,
PlusCircle,
Settings,
+ ShieldCheck,
TrendingUp,
User as UserIcon,
} from "lucide-react";
@@ -186,6 +187,26 @@ export function AppSidebar() {
+
+ {isAuthenticated && user?.role === "admin" && (
+
+ Administration
+
+
+
+
+
+ Admin
+
+
+
+
+
+ )}
@@ -230,7 +251,7 @@ export function AppSidebar() {
{user.displayName || user.username}
- {user.email}
+ {user.role}
diff --git a/frontend/src/components/home-content.tsx b/frontend/src/components/home-content.tsx
index e297093..d0bccee 100644
--- a/frontend/src/components/home-content.tsx
+++ b/frontend/src/components/home-content.tsx
@@ -5,10 +5,14 @@ import * as React from "react";
import { ContentList } from "@/components/content-list";
import { ContentService } from "@/services/content.service";
-export function HomeContent() {
+export function HomeContent({
+ defaultSort = "trend",
+}: {
+ defaultSort?: "trend" | "recent";
+}) {
const searchParams = useSearchParams();
- const sort = (searchParams.get("sort") as "trend" | "recent") || "trend";
+ const sort = (searchParams.get("sort") as "trend" | "recent") || defaultSort;
const category = searchParams.get("category") || undefined;
const tag = searchParams.get("tag") || undefined;
const query = searchParams.get("query") || undefined;
diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx
index 7fa2c18..bd2d173 100644
--- a/frontend/src/components/ui/badge.tsx
+++ b/frontend/src/components/ui/badge.tsx
@@ -15,6 +15,8 @@ const badgeVariants = cva(
"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
destructive:
"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
+ success:
+ "border-transparent bg-emerald-500 text-white [a&]:hover:bg-emerald-500/90",
outline:
"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
},