Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches-ignore: [ main, develop ]

pull_request:
branches: [ main, develop ]
branches: [ develop ]


jobs:
Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:
git pull origin develop
docker-compose --env-file .env.staging -f docker-compose.staging.yml down
docker-compose --env-file .env.staging -f docker-compose.staging.yml up -d --build
docker compose -f docker-compose.staging.yml restart nginx
docker-compose -f docker-compose.staging.yml restart nginx

deploy-production:
runs-on: ubuntu-latest
Expand Down
1 change: 0 additions & 1 deletion backend/src/Controller/Api/PaymentController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
1 change: 0 additions & 1 deletion frontend/app/calculator/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"use client";

import { Metadata } from "next";
import { useState, useEffect } from "react";
import { useRouter } from "next/navigation";

Expand Down
10 changes: 10 additions & 0 deletions frontend/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
11 changes: 9 additions & 2 deletions frontend/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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"] });
Expand Down Expand Up @@ -31,8 +33,13 @@ export default function RootLayout({
<html lang="fr" className="dark">
<body className={inter.className}>
<Providers>
<Navbar />
{children}
<div className="flex flex-col">
<Navbar />
<main className="flex-1">
{children}
</main>
<Footer />
</div>
<CookieBanner/>
</Providers>
</body>
Expand Down
139 changes: 139 additions & 0 deletions frontend/app/legal/cgu/page.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<div className="mx-auto max-w-4xl px-6 py-16">
<h1 className="mb-8 text-4xl font-bold">Conditions Générales d&apos;Utilisation</h1>

<div className="prose prose-invert max-w-none space-y-8">

<section>
<h2 className="text-2xl font-semibold mb-4">1. Objet</h2>
<p>
Les présentes Conditions Générales d&apos;Utilisation (CGU) définissent les
modalités et conditions d&apos;utilisation du site <strong>consonum.fr</strong>.
</p>
<p>
En accédant au site, vous acceptez sans réserve les présentes CGU.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">2. Accès au site</h2>
<p>
Le site est accessible gratuitement à tout utilisateur disposant d&apos;un
accès Internet. L&apos;accès au questionnaire est soumis au paiement d&apos;un
montant de 1,99 € TTC.
</p>
<p>
ConsoNum se réserve le droit de suspendre, modifier ou interrompre
l&apos;accès au site sans préavis.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">3. Création de compte</h2>
<p>
L&apos;utilisation de certaines fonctionnalités (questionnaire, historique)
nécessite la création d&apos;un compte utilisateur.
</p>
<p>
L&apos;utilisateur s&apos;engage à fournir des informations exactes et à maintenir
ses identifiants confidentiels. Il est seul responsable de l&apos;utilisation
de son compte.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">4. Obligations de l&apos;utilisateur</h2>
<p>L&apos;utilisateur s&apos;engage à :</p>
<ul className="list-disc pl-6 space-y-2">
<li>Utiliser le site de manière conforme à sa destination</li>
<li>Ne pas tenter de contourner les mesures de sécurité</li>
<li>Ne pas diffuser de contenu illicite ou offensant</li>
<li>Respecter les droits de propriété intellectuelle</li>
</ul>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">5. Propriété intellectuelle</h2>
<p>
Tous les éléments du site (textes, graphismes, logos, questionnaires)
sont la propriété exclusive de ConsoNum.
</p>
<p>
Toute reproduction, même partielle, sans autorisation est interdite.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">6. Données personnelles</h2>
<p>
ConsoNum collecte et traite vos données personnelles conformément au RGPD
et à notre{" "}
<a href="/privacy-policy" className="text-green-400 underline">
Politique de Confidentialité
</a>.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">7. Cookies</h2>
<p>
Le site utilise des cookies pour améliorer l&apos;expérience utilisateur.
Vous pouvez les gérer via les paramètres de votre navigateur.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">8. Responsabilité</h2>
<p>
ConsoNum ne saurait être tenu responsable :
</p>
<ul className="list-disc pl-6 space-y-2">
<li>D&apos;une interruption temporaire du service</li>
<li>De l&apos;utilisation des résultats du questionnaire</li>
<li>De dommages indirects liés à l&apos;utilisation du site</li>
</ul>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">9. Modification des CGU</h2>
<p>
ConsoNum se réserve le droit de modifier les présentes CGU à tout moment.
Les utilisateurs seront informés des modifications via le site.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">10. Loi applicable et juridiction</h2>
<p>
Les présentes CGU sont régies par le droit français. Tout litige sera
soumis aux tribunaux compétents.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">11. Contact</h2>
<p>
Pour toute question concernant les CGU :<br/>
<strong>Email :</strong> contact@consonum.fr
</p>
</section>

<p className="text-sm text-gray-500 mt-12 pt-8 border-t border-gray-700">
Dernière mise à jour : {new Date().toLocaleDateString('fr-FR', {
year: 'numeric',
month: 'long',
day: 'numeric'
})}
</p>
</div>
</div>
);
}
145 changes: 145 additions & 0 deletions frontend/app/legal/cgv/page.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<div className="mx-auto max-w-4xl px-6 py-16">
<h1 className="mb-8 text-4xl font-bold">Conditions Générales de Vente</h1>

<div className="prose prose-invert max-w-none space-y-8">

<section>
<h2 className="text-2xl font-semibold mb-4">1. Objet</h2>
<p>
Les présentes Conditions Générales de Vente (CGV) régissent la vente
du service de questionnaire proposé par ConsoNum, accessible à l&apos;adresse
<strong> https://consonum.fr</strong>.
</p>
<p>
En validant votre commande, vous reconnaissez avoir pris connaissance
et accepter sans réserve l&apos;intégralité des présentes CGV.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">2. Description du service</h2>
<p>
ConsoNum propose un questionnaire en ligne permettant d&apos;évaluer l&apos;empreinte
numérique de l&apos;utilisateur et d&apos;obtenir un score personnalisé accompagné
de recommandations.
</p>
<p>
L&apos;accès au questionnaire est conditionné au paiement d&apos;un montant unique
de <strong>1,99 € TTC</strong>.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">3. Prix et paiement</h2>
<p>
Le prix du service est affiché en euros, toutes taxes comprises (TTC).
</p>
<p>
Le paiement s&apos;effectue en ligne de manière sécurisée via la plateforme
<strong> Stripe</strong>. Les moyens de paiement acceptés sont : carte bancaire.
</p>
<p>
Le paiement est exigible immédiatement lors de la commande. L&apos;accès au
questionnaire est activé dès réception du paiement.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">4. Exécution du service</h2>
<p>
Le service (questionnaire et résultats) est fourni de manière instantanée
après validation du paiement.
</p>
<p>
L&apos;utilisateur peut accéder à son historique de résultats via son espace personnel.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">5. Droit de rétractation</h2>
<p>
Conformément à l&apos;article <strong>L221-28 du Code de la consommation</strong>,
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&apos;exécution a
commencé après accord préalable exprès du consommateur et renoncement exprès
à son droit de rétractation.
</p>
<p>
En validant votre commande, vous acceptez expressément que le service soit
exécuté immédiatement et renoncez à votre droit de rétractation.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">6. Responsabilité</h2>
<p>
ConsoNum s&apos;engage à fournir le service avec diligence, conformément aux
règles de l&apos;art. Toutefois, ConsoNum ne saurait être tenu responsable :
</p>
<ul className="list-disc pl-6 space-y-2">
<li>Des dommages indirects ou immatériels</li>
<li>De l&apos;inexactitude des informations fournies par l&apos;utilisateur</li>
<li>D&apos;une interruption temporaire du service pour maintenance</li>
</ul>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">7. Propriété intellectuelle</h2>
<p>
L&apos;ensemble du contenu du site (textes, images, logos, questionnaire) est
la propriété exclusive de ConsoNum et est protégé par le droit d&apos;auteur.
</p>
<p>
Toute reproduction, distribution ou utilisation sans autorisation est interdite.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">8. Données personnelles</h2>
<p>
Les données personnelles collectées sont traitées conformément à notre{" "}
<a href="/privacy-policy" className="text-green-400 underline">
Politique de Confidentialité
</a>.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">9. Litige et loi applicable</h2>
<p>
Les présentes CGV sont soumises au droit français. En cas de litige,
une solution amiable sera recherchée avant toute action judiciaire.
</p>
<p>
À défaut, les tribunaux français seront seuls compétents.
</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">10. Contact</h2>
<p>
Pour toute question relative aux présentes CGV ou à votre commande :<br/>
<strong>Email :</strong> contact@consonum.fr
</p>
</section>

<p className="text-sm text-gray-500 mt-12 pt-8 border-t border-gray-700">
Dernière mise à jour : {new Date().toLocaleDateString('fr-FR', {
year: 'numeric',
month: 'long',
day: 'numeric'
})}
</p>
</div>
</div>
);
}
27 changes: 27 additions & 0 deletions frontend/app/legal/mentions/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export const metadata = {
title: "Mentions Légales | ConsoNum",
};

export default function MentionsPage() {
return (
<div className="h-screen mx-auto max-w-4xl px-6 py-16">
<h1 className="mb-8 text-4xl font-bold">Mentions Légales</h1>

<div className="space-y-6">
<section>
<h2 className="text-2xl font-semibold mb-4">Éditeur du site</h2>
<p><strong>Projet pédagogique</strong></p>
<p>ConsoNum - Projet de formation</p>
<p>Contact : contact@consonum.fr</p>
</section>

<section>
<h2 className="text-2xl font-semibold mb-4">Hébergeur</h2>
<p>DigitalOcean LLC</p>
<p>101 Avenue of the Americas, 10th Floor</p>
<p>New York, NY 10013, USA</p>
</section>
</div>
</div>
);
}
Loading
Loading