From 48f0076546d0efa7584b2696ca32274075387321 Mon Sep 17 00:00:00 2001 From: B Date: Sat, 28 Mar 2026 22:04:12 +0100 Subject: [PATCH 1/2] style: colours updates and footer fixed issues --- .github/workflows/deploy.yml | 2 +- .../src/Controller/Api/PaymentController.php | 1 - frontend/app/calculator/page.tsx | 1 - frontend/app/globals.css | 10 ++ frontend/app/layout.tsx | 11 +- frontend/app/legal/cgu/page.tsx | 139 +++++++++++++++++ frontend/app/legal/cgv/page.tsx | 145 ++++++++++++++++++ frontend/app/legal/mentions/page.tsx | 27 ++++ .../app/{ => legal}/privacy-policy/page.tsx | 0 frontend/app/page.tsx | 2 +- frontend/app/payment/page.tsx | 33 ++++ frontend/app/register/page.tsx | 2 +- .../components/features/auth/LoginForm.tsx | 6 +- .../components/features/navigation/footer.tsx | 53 +++++++ frontend/components/navbar.tsx | 3 +- frontend/public/images/background-3.webp | Bin 0 -> 268398 bytes frontend/public/robots.txt | 4 +- 17 files changed, 428 insertions(+), 11 deletions(-) create mode 100644 frontend/app/legal/cgu/page.tsx create mode 100644 frontend/app/legal/cgv/page.tsx create mode 100644 frontend/app/legal/mentions/page.tsx rename frontend/app/{ => legal}/privacy-policy/page.tsx (100%) create mode 100644 frontend/components/features/navigation/footer.tsx create mode 100644 frontend/public/images/background-3.webp diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1494f6e..adf2c72 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: branches-ignore: [ main, develop ] pull_request: - branches: [ main, develop ] + branches: [ develop ] jobs: diff --git a/backend/src/Controller/Api/PaymentController.php b/backend/src/Controller/Api/PaymentController.php index b82fafb..08ff4a2 100644 --- a/backend/src/Controller/Api/PaymentController.php +++ b/backend/src/Controller/Api/PaymentController.php @@ -59,7 +59,6 @@ public function webhook(Request $request): Response if ($event->type === 'payment_intent.succeeded') { $paymentIntent = $event->data->object; - // @phpstan-ignore-next-line $userId = $paymentIntent->metadata->user_id ?? null; if ($userId) { diff --git a/frontend/app/calculator/page.tsx b/frontend/app/calculator/page.tsx index 914d60b..700189f 100644 --- a/frontend/app/calculator/page.tsx +++ b/frontend/app/calculator/page.tsx @@ -1,6 +1,5 @@ "use client"; -import { Metadata } from "next"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; diff --git a/frontend/app/globals.css b/frontend/app/globals.css index ffadd63..8a644f3 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -9,6 +9,16 @@ --gray-primary: #0D2027; } +html, body { + height: 100%; + margin: 0; +} + +#__next { + min-height: 100%; + display: flex; + flex-direction: column; +} .background-primary { background-color: var(--green-primary); diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index fc93e56..a9ce324 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -4,6 +4,8 @@ import { Inter } from "next/font/google"; import "./globals.css"; import { Providers } from "./providers"; import { Navbar } from "@/components/navbar"; +import { Footer } from "@/components/features/navigation/footer"; + import CookieBanner from "@/components/ui/CookieBanner"; const inter = Inter({ subsets: ["latin"] }); @@ -31,8 +33,13 @@ export default function RootLayout({ - - {children} +
+ +
+ {children} +
+
+
diff --git a/frontend/app/legal/cgu/page.tsx b/frontend/app/legal/cgu/page.tsx new file mode 100644 index 0000000..76b0d46 --- /dev/null +++ b/frontend/app/legal/cgu/page.tsx @@ -0,0 +1,139 @@ +import { Metadata } from 'next'; + +export const metadata: Metadata = { + title: "Conditions Générales d'Utilisation | ConsoNum", + description: "Conditions générales d'utilisation du service ConsoNum", +}; + +export default function CGUPage() { + return ( +
+

Conditions Générales d'Utilisation

+ +
+ +
+

1. Objet

+

+ Les présentes Conditions Générales d'Utilisation (CGU) définissent les + modalités et conditions d'utilisation du site consonum.fr. +

+

+ En accédant au site, vous acceptez sans réserve les présentes CGU. +

+
+ +
+

2. Accès au site

+

+ Le site est accessible gratuitement à tout utilisateur disposant d'un + accès Internet. L'accès au questionnaire est soumis au paiement d'un + montant de 1,99 € TTC. +

+

+ ConsoNum se réserve le droit de suspendre, modifier ou interrompre + l'accès au site sans préavis. +

+
+ +
+

3. Création de compte

+

+ L'utilisation de certaines fonctionnalités (questionnaire, historique) + nécessite la création d'un compte utilisateur. +

+

+ L'utilisateur s'engage à fournir des informations exactes et à maintenir + ses identifiants confidentiels. Il est seul responsable de l'utilisation + de son compte. +

+
+ +
+

4. Obligations de l'utilisateur

+

L'utilisateur s'engage à :

+
    +
  • Utiliser le site de manière conforme à sa destination
  • +
  • Ne pas tenter de contourner les mesures de sécurité
  • +
  • Ne pas diffuser de contenu illicite ou offensant
  • +
  • Respecter les droits de propriété intellectuelle
  • +
+
+ +
+

5. Propriété intellectuelle

+

+ Tous les éléments du site (textes, graphismes, logos, questionnaires) + sont la propriété exclusive de ConsoNum. +

+

+ Toute reproduction, même partielle, sans autorisation est interdite. +

+
+ +
+

6. Données personnelles

+

+ ConsoNum collecte et traite vos données personnelles conformément au RGPD + et à notre{" "} + + Politique de Confidentialité + . +

+
+ +
+

7. Cookies

+

+ Le site utilise des cookies pour améliorer l'expérience utilisateur. + Vous pouvez les gérer via les paramètres de votre navigateur. +

+
+ +
+

8. Responsabilité

+

+ ConsoNum ne saurait être tenu responsable : +

+
    +
  • D'une interruption temporaire du service
  • +
  • De l'utilisation des résultats du questionnaire
  • +
  • De dommages indirects liés à l'utilisation du site
  • +
+
+ +
+

9. Modification des CGU

+

+ ConsoNum se réserve le droit de modifier les présentes CGU à tout moment. + Les utilisateurs seront informés des modifications via le site. +

+
+ +
+

10. Loi applicable et juridiction

+

+ Les présentes CGU sont régies par le droit français. Tout litige sera + soumis aux tribunaux compétents. +

+
+ +
+

11. Contact

+

+ Pour toute question concernant les CGU :
+ Email : contact@consonum.fr +

+
+ +

+ Dernière mise à jour : {new Date().toLocaleDateString('fr-FR', { + year: 'numeric', + month: 'long', + day: 'numeric' + })} +

+
+
+ ); +} \ No newline at end of file diff --git a/frontend/app/legal/cgv/page.tsx b/frontend/app/legal/cgv/page.tsx new file mode 100644 index 0000000..f99cf55 --- /dev/null +++ b/frontend/app/legal/cgv/page.tsx @@ -0,0 +1,145 @@ +import { Metadata } from 'next'; + +export const metadata: Metadata = { + title: "Conditions Générales de Vente | ConsoNum", + description: "Conditions générales de vente du service ConsoNum", +}; + +export default function CGVPage() { + return ( +
+

Conditions Générales de Vente

+ +
+ +
+

1. Objet

+

+ Les présentes Conditions Générales de Vente (CGV) régissent la vente + du service de questionnaire proposé par ConsoNum, accessible à l'adresse + https://consonum.fr. +

+

+ En validant votre commande, vous reconnaissez avoir pris connaissance + et accepter sans réserve l'intégralité des présentes CGV. +

+
+ +
+

2. Description du service

+

+ ConsoNum propose un questionnaire en ligne permettant d'évaluer l'empreinte + numérique de l'utilisateur et d'obtenir un score personnalisé accompagné + de recommandations. +

+

+ L'accès au questionnaire est conditionné au paiement d'un montant unique + de 1,99 € TTC. +

+
+ +
+

3. Prix et paiement

+

+ Le prix du service est affiché en euros, toutes taxes comprises (TTC). +

+

+ Le paiement s'effectue en ligne de manière sécurisée via la plateforme + Stripe. Les moyens de paiement acceptés sont : carte bancaire. +

+

+ Le paiement est exigible immédiatement lors de la commande. L'accès au + questionnaire est activé dès réception du paiement. +

+
+ +
+

4. Exécution du service

+

+ Le service (questionnaire et résultats) est fourni de manière instantanée + après validation du paiement. +

+

+ L'utilisateur peut accéder à son historique de résultats via son espace personnel. +

+
+ +
+

5. Droit de rétractation

+

+ Conformément à l'article L221-28 du Code de la consommation, + le droit de rétractation ne peut être exercé pour les contrats de fourniture + de contenu numérique non fourni sur un support matériel dont l'exécution a + commencé après accord préalable exprès du consommateur et renoncement exprès + à son droit de rétractation. +

+

+ En validant votre commande, vous acceptez expressément que le service soit + exécuté immédiatement et renoncez à votre droit de rétractation. +

+
+ +
+

6. Responsabilité

+

+ ConsoNum s'engage à fournir le service avec diligence, conformément aux + règles de l'art. Toutefois, ConsoNum ne saurait être tenu responsable : +

+
    +
  • Des dommages indirects ou immatériels
  • +
  • De l'inexactitude des informations fournies par l'utilisateur
  • +
  • D'une interruption temporaire du service pour maintenance
  • +
+
+ +
+

7. Propriété intellectuelle

+

+ L'ensemble du contenu du site (textes, images, logos, questionnaire) est + la propriété exclusive de ConsoNum et est protégé par le droit d'auteur. +

+

+ Toute reproduction, distribution ou utilisation sans autorisation est interdite. +

+
+ +
+

8. Données personnelles

+

+ Les données personnelles collectées sont traitées conformément à notre{" "} + + Politique de Confidentialité + . +

+
+ +
+

9. Litige et loi applicable

+

+ Les présentes CGV sont soumises au droit français. En cas de litige, + une solution amiable sera recherchée avant toute action judiciaire. +

+

+ À défaut, les tribunaux français seront seuls compétents. +

+
+ +
+

10. Contact

+

+ Pour toute question relative aux présentes CGV ou à votre commande :
+ Email : contact@consonum.fr +

+
+ +

+ Dernière mise à jour : {new Date().toLocaleDateString('fr-FR', { + year: 'numeric', + month: 'long', + day: 'numeric' + })} +

+
+
+ ); +} \ No newline at end of file diff --git a/frontend/app/legal/mentions/page.tsx b/frontend/app/legal/mentions/page.tsx new file mode 100644 index 0000000..d648846 --- /dev/null +++ b/frontend/app/legal/mentions/page.tsx @@ -0,0 +1,27 @@ +export const metadata = { + title: "Mentions Légales | ConsoNum", +}; + +export default function MentionsPage() { + return ( +
+

Mentions Légales

+ +
+
+

Éditeur du site

+

Projet pédagogique

+

ConsoNum - Projet de formation

+

Contact : contact@consonum.fr

+
+ +
+

Hébergeur

+

DigitalOcean LLC

+

101 Avenue of the Americas, 10th Floor

+

New York, NY 10013, USA

+
+
+
+ ); +} \ No newline at end of file diff --git a/frontend/app/privacy-policy/page.tsx b/frontend/app/legal/privacy-policy/page.tsx similarity index 100% rename from frontend/app/privacy-policy/page.tsx rename to frontend/app/legal/privacy-policy/page.tsx diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index b49d4e1..d3742ab 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -8,7 +8,7 @@ export default function Home() {
Nature et technologie(null); + const [acceptCGV, setAcceptCGV] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!stripe || !elements) return; + if (!acceptCGV) { + setError('Vous devez accepter les Conditions Générales de Vente.'); + return; + } setLoading(true); setError(null); @@ -37,6 +43,33 @@ function CheckoutForm() { return (
+
+ setAcceptCGV(e.target.checked)} + className="mt-1 h-4 w-4" + /> + +
{error &&

{error}

}