188 lines
7.3 KiB
TypeScript

import Head from 'next/head'
import Link from 'next/link'
import { PageHeader } from '@/components/PageHeader'
function TermsSection({ title, children }: { title: string; children: React.ReactNode }) {
return (
<section>
<h2 className="text-2xl font-semibold text-cyber-accent mb-3">{title}</h2>
{children}
</section>
)
}
function ObjectSection() {
return (
<TermsSection title="1. Objet">
<p className="text-cyber-accent">
Les présentes Conditions Générales d&apos;Utilisation (CGU) régissent l&apos;utilisation de la plateforme zapwall.fr,
service de publication décentralisé basé sur le protocole Nostr.
</p>
</TermsSection>
)
}
function AcceptanceSection() {
return (
<TermsSection title="2. Acceptation des CGU">
<p className="text-cyber-accent">
L&apos;utilisation de la plateforme implique l&apos;acceptation pleine et entière des présentes CGU. En cas de refus,
l&apos;utilisateur ne doit pas utiliser le service.
</p>
</TermsSection>
)
}
function ServiceDescriptionSection() {
return (
<TermsSection title="3. Description du service">
<p className="text-cyber-accent mb-2">
zapwall.fr est une plateforme permettant :
</p>
<ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
<li>La publication d&apos;articles scientifiques et de science-fiction</li>
<li>La vente d&apos;articles via le protocole Lightning Network (800 sats, moins 100 sats et frais de transaction)</li>
<li>Le sponsoring d&apos;auteurs (0.046 BTC, moins 0.004 BTC et frais de transaction)</li>
<li>La rémunération des avis (70 sats, moins 21 sats et frais de transaction)</li>
</ul>
</TermsSection>
)
}
function UserObligationsSection() {
return (
<TermsSection title="4. Obligations de l&apos;utilisateur">
<p className="text-cyber-accent mb-2">L&apos;utilisateur s&apos;engage à :</p>
<ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
<li>Respecter les lois et réglementations en vigueur</li>
<li>Ne pas publier de contenus illicites, diffamatoires ou contraires aux bonnes mœurs</li>
<li>Ne pas utiliser le service à des fins frauduleuses</li>
<li>Respecter les droits de propriété intellectuelle d&apos;autrui</li>
<li>Maintenir la confidentialité de ses clés privées Nostr</li>
</ul>
</TermsSection>
)
}
function ResponsibilitySection() {
return (
<TermsSection title="5. Responsabilité">
<p className="text-cyber-accent mb-2">
La plateforme zapwall.fr est un service décentralisé. Chaque utilisateur est responsable :
</p>
<ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
<li>Du contenu qu&apos;il publie</li>
<li>De la sécurité de ses clés privées</li>
<li>Des transactions qu&apos;il effectue via le protocole Lightning Network</li>
</ul>
<p className="text-cyber-accent mt-2">
La plateforme ne peut être tenue responsable des pertes résultant de la perte de clés privées ou d&apos;erreurs
de transaction.
</p>
</TermsSection>
)
}
function FinancialTransactionsSection() {
return (
<TermsSection title="6. Transactions financières">
<p className="text-cyber-accent mb-2">
Les transactions sont effectuées via le protocole Lightning Network. Les frais de transaction sont à la charge
de l&apos;utilisateur.
</p>
<p className="text-cyber-accent mb-2">
Les montants indiqués sont nets des frais de plateforme. Les frais de transaction du réseau Lightning sont
additionnels.
</p>
<p className="text-cyber-accent mb-2">
<strong className="text-neon-cyan">Fonctionnement des transactions :</strong>
</p>
<ul className="list-disc list-inside text-cyber-accent space-y-1 ml-4">
<li>Les paiements d&apos;articles sont opérés et visibles comme les zaps sur le réseau Nostr</li>
<li>Les rewards (récompenses pour les avis) sont opérés et récupérés sur Bitcoin</li>
<li>Les articles avant validation du paiement sont des notes privées entre l&apos;auteur et le compte de la plateforme, opérées par Nostr</li>
<li>La plateforme suit les transactions car elle est systématiquement partie prenante</li>
<li>Les npub (clés publiques Nostr) sont sauvegardées avec les transactions pour la traçabilité</li>
</ul>
</TermsSection>
)
}
function IntellectualPropertySection() {
return (
<TermsSection title="7. Propriété intellectuelle">
<p className="text-cyber-accent">
Les contenus publiés par les utilisateurs restent leur propriété exclusive. En publiant sur zapwall.fr,
l&apos;utilisateur garantit qu&apos;il dispose des droits nécessaires sur le contenu publié.
</p>
</TermsSection>
)
}
function ModificationSection() {
return (
<TermsSection title="8. Modification des CGU">
<p className="text-cyber-accent">
Les présentes CGU peuvent être modifiées à tout moment. Les utilisateurs seront informés des modifications
importantes. La poursuite de l&apos;utilisation du service vaut acceptation des nouvelles CGU.
</p>
</TermsSection>
)
}
function TerminationSection() {
return (
<TermsSection title="9. Résiliation">
<p className="text-cyber-accent">
L&apos;utilisateur peut cesser d&apos;utiliser le service à tout moment. La plateforme se réserve le droit de suspendre
ou supprimer tout compte en cas de violation des présentes CGU.
</p>
</TermsSection>
)
}
function ApplicableLawSection() {
return (
<TermsSection title="10. Droit applicable">
<p className="text-cyber-accent">
Les présentes CGU sont régies par le droit français. Tout litige sera soumis aux tribunaux compétents français.
</p>
</TermsSection>
)
}
export default function TermsPage() {
return (
<>
<Head>
<title>Conditions Générales d&apos;Utilisation - zapwall.fr</title>
<meta name="description" content="Conditions Générales d'Utilisation de zapwall.fr" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</Head>
<main className="min-h-screen bg-cyber-darker">
<PageHeader />
<div className="max-w-4xl mx-auto px-4 py-8">
<div className="bg-cyber-dark border border-neon-cyan/30 rounded-lg shadow-glow-cyan p-8 space-y-6">
<h1 className="text-3xl font-bold text-neon-cyan mb-6">Conditions Générales d&apos;Utilisation</h1>
<ObjectSection />
<AcceptanceSection />
<ServiceDescriptionSection />
<UserObligationsSection />
<ResponsibilitySection />
<FinancialTransactionsSection />
<IntellectualPropertySection />
<ModificationSection />
<TerminationSection />
<ApplicableLawSection />
<div className="mt-8 pt-6 border-t border-neon-cyan/30">
<Link href="/" className="text-neon-cyan hover:text-neon-green underline">
Retour à l&apos;accueil
</Link>
</div>
</div>
</div>
</main>
</>
)
}