feat: page hub « Contribuer » avec lien dans le header

Remplace le lien « Mode d'emploi » par « Contribuer » dans la navigation. La page /contribuer présente le fonctionnement de la plateforme, la réputation du contributeur connecté, et un renvoi vers le mode d'emploi et le dépôt source.
This commit is contained in:
Jalil Arfaoui 2026-02-28 08:46:12 +01:00
parent e945c77469
commit 875e14a781
3 changed files with 145 additions and 2 deletions

View file

@ -0,0 +1,68 @@
.container {
max-width: 700px;
margin: 0 auto;
padding: 40px 20px;
}
.reputation {
font-family: var(--font-gotham-book);
font-size: 15px;
color: var(--text-dark);
background-color: #f8f8f8;
padding: 12px 16px;
border-radius: 4px;
margin-bottom: 32px;
}
.intro {
font-family: var(--font-gotham-book);
font-size: 15px;
line-height: 1.6;
color: var(--text-dark);
margin-bottom: 32px;
}
.intro a {
color: var(--debats-red);
text-decoration: underline;
}
.intro a:hover {
color: #d11635;
}
.sectionTitle {
font-family: var(--font-gotham-bold);
font-size: 18px;
color: var(--text-dark);
margin: 0 0 16px;
}
.steps {
font-family: var(--font-gotham-book);
font-size: 15px;
line-height: 1.6;
color: var(--text-dark);
padding-left: 20px;
margin: 0 0 32px;
display: flex;
flex-direction: column;
gap: 12px;
}
.guideLinkWrapper {
margin: 0 0 32px;
}
.guideLink,
.guideLink:link,
.guideLink:visited {
font-family: var(--font-gotham-bold);
font-size: 15px;
color: var(--debats-red);
text-decoration: none;
}
.guideLink:hover {
text-decoration: underline;
}

75
app/contribuer/page.tsx Normal file
View file

@ -0,0 +1,75 @@
import { Metadata } from 'next'
import Link from 'next/link'
import PageTitle from '../../components/ui/PageTitle'
import { getAuthenticatedContributor } from '../actions/get-authenticated-contributor'
import { getRank } from '../../domain/reputation/permissions'
import styles from './contribuer.module.css'
export const metadata: Metadata = {
title: 'Contribuer',
description:
'Contribuez à Débats.co : ajoutez des prises de position, des sujets et des personnalités publiques.',
}
export default async function ContribuerPage() {
const contributor = await getAuthenticatedContributor()
return (
<div className={styles.container}>
<PageTitle>Contribuer</PageTitle>
<p className={styles.intro}>
Débats.co est une plateforme collaborative. Les contributeurs ne donnent pas leur avis : ils
recherchent, collectent et recensent les positions exprimées par des personnalités publiques
sur des sujets de société.
</p>
<h2 className={styles.sectionTitle}>Comment contribuer ?</h2>
<ul className={styles.steps}>
<li>
<strong>Recenser une prise de position</strong> : trouvez une déclaration publique
d&apos;une personnalité sur un sujet et ajoutez-la avec sa source.
</li>
<li>
<strong>Ajouter un sujet ou une personnalité</strong> : à partir d&apos;un certain niveau
de réputation, vous pouvez enrichir la base.
</li>
<li>
<strong>Sourcer</strong> : chaque prise de position doit être appuyée par au moins une
source vérifiable (article, vidéo, livre).
</li>
</ul>
{contributor && (
<p className={styles.reputation}>
Votre réputation : {contributor.reputation}. Vous êtes un{' '}
{getRank(contributor.reputation)}.
</p>
)}
<h2 className={styles.sectionTitle}>Qu&apos;est-ce que la réputation ?</h2>
<p className={styles.intro}>
Chaque contribution vous rapporte des points de réputation. Plus votre réputation augmente,
plus vous débloquez de fonctionnalités : ajouter des sujets, des personnalités, inviter
d&apos;autres contributeurs, et modérer le contenu existant.
</p>
<p className={styles.guideLinkWrapper}>
<Link href="/guide" className={styles.guideLink}>
Lire le mode d&apos;emploi complet
</Link>
</p>
<h2 className={styles.sectionTitle}>Contribuer autrement</h2>
<p className={styles.intro}>
Débats.co est un projet open source. Vous pouvez aussi contribuer en améliorant le code, en
signalant des bugs ou en proposant de nouvelles fonctionnalités sur{' '}
<a href="https://forge.tiqa.fr/debats/debats">le dépôt source</a>. Toute aide est la
bienvenue : développement, design, traduction, documentation.
</p>
</div>
)
}

View file

@ -47,8 +47,8 @@ export default function Header() {
<Link href="/p" className={styles.navLink} onClick={closeMenu}>
Personnalités
</Link>
<Link href="/guide" className={styles.navLink} onClick={closeMenu}>
Mode d&apos;emploi
<Link href="/contribuer" className={styles.navLink} onClick={closeMenu}>
Contribuer
</Link>
</nav>