Ajout du système d'administration avec token unique et QR code

- Implémentation complète du système d'administration (/admin)
- Gestion des clients avec base de données JSON
- Génération de token unique et QR code pour chaque client
- Intégration des données client dans l'application (bungalow, WiFi, message)
- Amélioration du composant WifiCard avec fallback de copie
- Optimisation du hook useClientData pour chargement immédiat
- Ajout de la variable d'environnement ADMIN_PASSWORD
This commit is contained in:
2025-11-23 08:55:50 +01:00
parent 444a2729ee
commit f633dbb1c0
19 changed files with 1076 additions and 22 deletions

View File

@ -1,8 +1,10 @@
"use client";
import dynamic from "next/dynamic";
import Layout from "@/components/layout/Layout";
import { config } from "@/lib/config";
import WifiCard from "@/components/accueil/WifiCard";
import Logo from "@/components/Logo";
import { useClientData } from "@/lib/hooks/useClientData";
const WeatherWidget = dynamic(() => import("@/components/accueil/WeatherWidget"), {
loading: () => <div className="h-32 bg-gray-100 rounded-2xl animate-pulse" />,
@ -10,6 +12,18 @@ const WeatherWidget = dynamic(() => import("@/components/accueil/WeatherWidget")
});
export default function AccueilPage() {
const { bungalowNumber, gerantMessage, loading } = useClientData();
if (loading) {
return (
<Layout>
<div className="px-4 py-6 space-y-6">
<div className="h-32 bg-gray-100 rounded-2xl animate-pulse" />
</div>
</Layout>
);
}
return (
<Layout>
<div className="px-4 py-6 space-y-6">
@ -19,7 +33,7 @@ export default function AccueilPage() {
Ia Ora Na
</h1>
<p className="text-lg text-gray-700">
Bienvenue au Bungalow {config.bungalowNumber}
Bienvenue au Bungalow {bungalowNumber}
</p>
</header>
@ -32,7 +46,7 @@ export default function AccueilPage() {
Le mot du gérant
</h2>
<p className="text-gray-700 leading-relaxed">
{config.gerantMessage}
{gerantMessage}
</p>
</section>
</div>