rework home page, fichier config pour l'url , ajout de liens en bas des pages publiques

This commit is contained in:
Yannick Le Duc
2025-08-27 11:10:26 +02:00
parent 5c5c5d11e3
commit 28df167fee
5 changed files with 151 additions and 20 deletions

View File

@@ -12,6 +12,7 @@ import { Badge } from '@/components/ui/badge';
import { ArrowLeft, FileText, User, Mail, CheckCircle, AlertCircle } from 'lucide-react';
import { MarkdownContent } from '@/components/MarkdownContent';
import { MarkdownEditor } from '@/components/MarkdownEditor';
import { PROJECT_CONFIG } from '@/lib/project.config';
export const dynamic = 'force-dynamic';
@@ -302,6 +303,22 @@ export default function PublicProposePage() {
</form>
</CardContent>
</Card>
{/* Footer discret */}
<div className="text-center mt-16 pb-8">
<p className="text-slate-400 dark:text-slate-500 text-sm">
Développé avec pour faciliter la démocratie participative -{' '}
<a
href={PROJECT_CONFIG.repository.url}
target="_blank"
rel="noopener noreferrer"
className="text-slate-500 dark:text-slate-400 hover:text-slate-700 dark:hover:text-slate-300 underline"
>
Logiciel libre
</a>{' '}
et transparent pour tous
</p>
</div>
</div>
</div>
);

View File

@@ -6,6 +6,7 @@ import Link from 'next/link';
import { Campaign, Proposition, Participant, Vote, PropositionWithVote } from '@/types';
import { campaignService, participantService, propositionService, voteService, settingsService } from '@/lib/services';
import { MarkdownContent } from '@/components/MarkdownContent';
import { PROJECT_CONFIG } from '@/lib/project.config';
// Force dynamic rendering to avoid SSR issues with Supabase
export const dynamic = 'force-dynamic';
@@ -536,6 +537,22 @@ export default function PublicVotePage() {
{error}
</div>
)}
{/* Footer discret */}
<div className="text-center mt-16 pb-20">
<p className="text-gray-400 text-sm">
Développé avec pour faciliter la démocratie participative -{' '}
<a
href={PROJECT_CONFIG.repository.url}
target="_blank"
rel="noopener noreferrer"
className="text-gray-500 hover:text-gray-700 underline"
>
Logiciel libre
</a>{' '}
et transparent pour tous
</p>
</div>
</div>
{/* Barre fixe en bas */}

View File

@@ -2,6 +2,7 @@ import Link from 'next/link';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
import { PROJECT_CONFIG } from '@/lib/project.config';
export default function HomePage() {
return (
@@ -19,22 +20,10 @@ export default function HomePage() {
Participez aux décisions budgétaires de vos collectifs.
Votez pour les projets qui vous tiennent à cœur et façonnez ensemble l'avenir de votre communauté.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<Button asChild size="lg" className="text-lg px-8 py-6">
<Link href="/admin">
🔐 Espace Administration
</Link>
</Button>
<Button asChild variant="outline" size="lg" className="text-lg px-8 py-6">
<Link href="#features">
📋 Découvrir les fonctionnalités
</Link>
</Button>
</div>
</div>
{/* Features Section */}
<div id="features" className="grid md:grid-cols-3 gap-8 mb-16">
<div id="features" className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 mb-16">
<Card className="border-0 shadow-lg hover:shadow-xl transition-shadow duration-300">
<CardHeader className="text-center">
<div className="w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mx-auto mb-4">
@@ -57,7 +46,7 @@ export default function HomePage() {
<div className="w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<span className="text-2xl">🗳️</span>
</div>
<CardTitle className="text-xl">Vote</CardTitle>
<CardTitle className="text-xl">Vote Intelligent</CardTitle>
<CardDescription>
Votez pour les projets qui vous semblent prioritaires
</CardDescription>
@@ -74,9 +63,9 @@ export default function HomePage() {
<div className="w-12 h-12 bg-purple-100 dark:bg-purple-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<span className="text-2xl">📊</span>
</div>
<CardTitle className="text-xl">Résultats</CardTitle>
<CardTitle className="text-xl">Résultats en Temps Réel</CardTitle>
<CardDescription>
Suivez en temps réel l'évolution des votes
Suivez l'évolution des votes et visualisez les tendances
</CardDescription>
</CardHeader>
<CardContent className="text-center">
@@ -85,24 +74,91 @@ export default function HomePage() {
</p>
</CardContent>
</Card>
<Card className="border-0 shadow-lg hover:shadow-xl transition-shadow duration-300">
<CardHeader className="text-center">
<div className="w-12 h-12 bg-orange-100 dark:bg-orange-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<span className="text-2xl">👥</span>
</div>
<CardTitle className="text-xl">Gestion des Participants</CardTitle>
<CardDescription>
Gérez facilement les membres de votre collectif
</CardDescription>
</CardHeader>
<CardContent className="text-center">
<p className="text-slate-600 dark:text-slate-300">
Invitez, gérez et suivez la participation de votre communauté
</p>
</CardContent>
</Card>
<Card className="border-0 shadow-lg hover:shadow-xl transition-shadow duration-300">
<CardHeader className="text-center">
<div className="w-12 h-12 bg-indigo-100 dark:bg-indigo-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<span className="text-2xl"></span>
</div>
<CardTitle className="text-xl">Administration Complète</CardTitle>
<CardDescription>
Interface d'administration intuitive et puissante
</CardDescription>
</CardHeader>
<CardContent className="text-center">
<p className="text-slate-600 dark:text-slate-300">
Créez des campagnes, gérez les emails et analysez les statistiques
</p>
</CardContent>
</Card>
<Card className="border-0 shadow-lg hover:shadow-xl transition-shadow duration-300">
<CardHeader className="text-center">
<div className="w-12 h-12 bg-emerald-100 dark:bg-emerald-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<span className="text-2xl">🔓</span>
</div>
<CardTitle className="text-xl">Open Source</CardTitle>
<CardDescription>
Logiciel libre et transparent pour tous
</CardDescription>
</CardHeader>
<CardContent className="text-center">
<p className="text-slate-600 dark:text-slate-300">
Code source ouvert, modifiable et adaptable à vos besoins
</p>
</CardContent>
</Card>
</div>
{/* Administration Button */}
<div className="text-center mb-16">
<Button asChild size="lg" className="text-lg px-8 py-6">
<Link href="/admin">
🔐 Espace Administration
</Link>
</Button>
</div>
{/* CTA Section */}
<Card className="border-0 shadow-xl bg-gradient-to-r from-blue-600 to-purple-600 text-white">
<CardContent className="p-8 text-center">
<h2 className="text-3xl font-bold mb-4">
Prêt à participer ?
Envie de participer ?
</h2>
<p className="text-xl mb-6 opacity-90">
Rejoignez votre collectif et prenez part aux décisions qui vous concernent
Dotez votre collectif d'outils pour prendre des décisions budgétaires en utilisant l'intelligence collective
</p>
<Button asChild size="lg" variant="secondary" className="text-lg px-8 py-6">
<Link href="/admin">
Commencer maintenant
<Link href={PROJECT_CONFIG.repository.url} target="_blank" rel="noopener noreferrer">
Obtenir l'outil
</Link>
</Button>
</CardContent>
</Card>
{/* Footer */}
<div className="text-center mt-16 pb-8">
<p className="text-slate-600 dark:text-slate-400 text-lg">
Développé avec pour faciliter la démocratie participative
</p>
</div>
</div>
</div>
);