diff --git a/app/Http/Controllers/Public/TermsController.php b/app/Http/Controllers/Public/TermsController.php
new file mode 100644
index 0000000000000000000000000000000000000000..a20736b21e40f1970a758be6b82ebd599c7956b0
--- /dev/null
+++ b/app/Http/Controllers/Public/TermsController.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Public;
+
+use App\Http\Controllers\Controller;
+use App\Models\TermsSection;
+use Illuminate\View\View;
+
+class TermsController extends Controller
+{
+    public function __invoke(): View
+    {
+        $activeTermsText = TermsSection::where('active', true)->first();
+
+        if (! $activeTermsText) {
+            abort(404);
+        }
+        $activeTermsText = $activeTermsText->contentTranslationKey->getTranslation();
+
+        return view('public.terms', compact('activeTermsText'));
+    }
+}
diff --git a/resources/views/components/public/footer.blade.php b/resources/views/components/public/footer.blade.php
index 05142fdf514118c6824e2c1982921cb4f779788b..82765bb782807edccefa43c627b51a3c27a4e383 100644
--- a/resources/views/components/public/footer.blade.php
+++ b/resources/views/components/public/footer.blade.php
@@ -36,14 +36,12 @@
                     <div class="self-stretch text-2xl font-bold">Informations légales</div>
                     <ul class="flex flex-col gap-2">
                         <li>
-                            <a href="#" class="text-muted hover:text-primary">Mentions légales</a>
+                            <a href="{{ route('legal-mentions') }}" class="text-muted hover:text-primary">Mentions
+                                légales</a>
                         </li>
                         <li>
                             <a href="#" class="text-muted hover:text-primary">Conditions générales de vente</a>
                         </li>
-                        <li>
-                            <a href="#" class="text-muted hover:text-primary">Politique de confidentialité</a>
-                        </li>
                     </ul>
                 </div>
             </div>
diff --git a/resources/views/components/public/generic-page-header.blade.php b/resources/views/components/public/generic-page-header.blade.php
index 7883746c0253491d0b38ca139d379b74f96a19ac..defaac73b1c21652eacf74dd4be847ddcc368361 100644
--- a/resources/views/components/public/generic-page-header.blade.php
+++ b/resources/views/components/public/generic-page-header.blade.php
@@ -1,6 +1,6 @@
 @props([
     'title' => 'Title',
-    'description' => 'Description',
+    'description' => '',
 ])
 
 <div {{ $attributes->class(['relative flex flex-col max-w-2xl gap-3']) }}>
diff --git a/resources/views/public/terms.blade.php b/resources/views/public/terms.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..65b7b6766651422bc96a416fbe14bebe5d836b23
--- /dev/null
+++ b/resources/views/public/terms.blade.php
@@ -0,0 +1,16 @@
+@extends('layouts.public', ['title' => "Mentions légales"])
+
+@section('content')
+    <x-public.navbar class="container mx-auto px-4"/>
+
+    <div class="container mx-auto px-4 py-24 flex flex-col gap-16">
+        <x-public.generic-page-header title="Mentions légales"/>
+        <div class="">
+            <x-markdown class="markdown">
+                {{ $activeTermsText }}
+            </x-markdown>
+        </div>
+    </div>
+
+    <x-public.footer/>
+@endsection
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index aa637dc52583b1a3b5e1c9d22841990f31785ee2..d92fdd428e1abb9ea761ad63045b12ddbd2a8c13 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -13,6 +13,7 @@
 use App\Http\Controllers\Public\IndexController;
 use App\Http\Controllers\Public\PortfolioController;
 use App\Http\Controllers\Public\PrestationController as PublicPrestationController;
+use App\Http\Controllers\Public\TermsController;
 use App\Http\Middleware\CheckPrivateModeMiddleware;
 use App\Http\Middleware\RedirectIfUserExistsMiddleware;
 use Illuminate\Support\Facades\Route;
@@ -29,6 +30,7 @@
     Route::get('/portfolio/api', [PortfolioController::class, 'api'])->name('portfolio.api');
     Route::get('/portfolio/{slug}', [PortfolioController::class, 'show'])->name('portfolio.show');
     Route::get('/prestations/{slug}', [PublicPrestationController::class, 'index'])->name('prestations.show');
+    Route::get('/mentions-legales', TermsController::class)->name('legal-mentions');
 
     Route::view('/maintenance', 'public.maintenance')->name('maintenance');
 });