diff --git a/frontend/.gitignore b/frontend/.gitignore
index a547bf3..9c85ff6 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+.DS_Store
diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt
index 6dc2c3c..89fb783 100644
--- a/frontend/public/robots.txt
+++ b/frontend/public/robots.txt
@@ -22,4 +22,4 @@ Disallow: /saisir-code-unique
Disallow: /perdu
# Sitemap
-Sitemap: https://thetiptop.fr/sitemap
+Sitemap: https://www.dsp5-archi-o24a-4-5-g4.fr/sitemap.xml
diff --git a/frontend/public/sitemap.xml b/frontend/public/sitemap.xml
new file mode 100644
index 0000000..53bc2ca
--- /dev/null
+++ b/frontend/public/sitemap.xml
@@ -0,0 +1,13 @@
+
+
+ https://www.dsp5-archi-o24a-4-5-g4.fr/accueil
+ https://www.dsp5-archi-o24a-4-5-g4.fr/regles-jeu
+ https://www.dsp5-archi-o24a-4-5-g4.fr/contact
+ https://www.dsp5-archi-o24a-4-5-g4.fr/mentions-legales
+ https://www.dsp5-archi-o24a-4-5-g4.fr/cgu
+ https://www.dsp5-archi-o24a-4-5-g4.fr/confidentialite
+ https://www.dsp5-archi-o24a-4-5-g4.fr/accessibilite
+ https://www.dsp5-archi-o24a-4-5-g4.fr/sitemap
+ https://www.dsp5-archi-o24a-4-5-g4.fr/inscription
+ https://www.dsp5-archi-o24a-4-5-g4.fr/connexion
+
diff --git a/frontend/src/assets/img/banner-the-tip-top.webp b/frontend/src/assets/img/banner-the-tip-top.webp
new file mode 100644
index 0000000..3961e37
Binary files /dev/null and b/frontend/src/assets/img/banner-the-tip-top.webp differ
diff --git a/frontend/src/components/Footer.jsx b/frontend/src/components/Footer.jsx
index 87c578b..66d05b9 100644
--- a/frontend/src/components/Footer.jsx
+++ b/frontend/src/components/Footer.jsx
@@ -181,8 +181,8 @@ export default function Footer() {
01 84 80 20 34
-
- contact@thetiptop.fr
+
+ thetiptop.gp4@gmail.com
diff --git a/frontend/src/hooks/usePageMeta.js b/frontend/src/hooks/usePageMeta.js
new file mode 100644
index 0000000..5ec3898
--- /dev/null
+++ b/frontend/src/hooks/usePageMeta.js
@@ -0,0 +1,29 @@
+import { useEffect } from 'react'
+
+// Permet à une page de définir son propre
/ le
+// temps qu'elle est affichée. La SPA n'a qu'un seul index.html : sans ce
+// hook, toutes les routes partagent le même title/meta. Les valeurs
+// précédentes sont restaurées au démontage, donc quitter la page revient à
+// l'état d'avant (celui d'index.html, ou celui d'une page parente si elles
+// s'enchaînent).
+export default function usePageMeta({ title, description } = {}) {
+ useEffect(() => {
+ const previousTitle = document.title
+ if (title) {
+ document.title = title
+ }
+
+ const metaEl = document.querySelector('meta[name="description"]')
+ const previousDescription = metaEl?.getAttribute('content') ?? null
+ if (description && metaEl) {
+ metaEl.setAttribute('content', description)
+ }
+
+ return () => {
+ document.title = previousTitle
+ if (metaEl && previousDescription !== null) {
+ metaEl.setAttribute('content', previousDescription)
+ }
+ }
+ }, [title, description])
+}
diff --git a/frontend/src/pages/Accessibilite.jsx b/frontend/src/pages/Accessibilite.jsx
index d11b030..645ee13 100644
--- a/frontend/src/pages/Accessibilite.jsx
+++ b/frontend/src/pages/Accessibilite.jsx
@@ -31,7 +31,7 @@ export default function Accessibilite() {
Si vous rencontrez un obstacle à l'accessibilité sur le site, vous pouvez nous en faire
part afin que nous puissions y remédier :
- Email : contact@thetiptop.fr
+ Email : thetiptop.gp4@gmail.com
diff --git a/frontend/src/pages/Accueil.jsx b/frontend/src/pages/Accueil.jsx
index f150fca..146966c 100644
--- a/frontend/src/pages/Accueil.jsx
+++ b/frontend/src/pages/Accueil.jsx
@@ -1,10 +1,11 @@
import { Link } from 'react-router-dom'
+import usePageMeta from '../hooks/usePageMeta'
import bannerImg from '../assets/img/banner-the-tip-top.webp'
const faqs = [
{
question: 'Comment obtenir un code ?',
- answer: "Achetez un produit Thé Tip Top d'une valeur supérieure à 49 € dans notre boutique de Nice : un code unique à 10 caractères figure sur votre ticket de caisse ou votre facture.",
+ answer: "Achetez pour plus de 49 € dans notre boutique Thé Tip Top de Nice, entre le 2 et le 31 octobre 2026 : un code unique à 10 caractères figure sur votre ticket de caisse ou votre facture.",
},
{
question: 'Quels sont les lots à gagner ?',
@@ -25,7 +26,7 @@ const faqs = [
},
{
question: 'Jusqu\'à quand puis-je jouer ?',
- answer: 'La participation est possible pendant toute la durée du jeu-concours, soit 30 jours à compter de son ouverture. Consultez la page Règles du jeu pour le détail des dates.',
+ answer: 'La saisie des codes est ouverte du 2 au 31 octobre 2026 inclus. Les lots sont ensuite à retirer jusqu\'au 30 novembre 2026.',
},
{
question: 'Que faire si mon code n\'est pas reconnu ?',
@@ -33,7 +34,7 @@ const faqs = [
},
{
question: 'Où retirer mon lot ?',
- answer: 'Dans notre boutique de Nice, sur présentation de votre compte utilisateur validé et de la confirmation de gain affichée dans votre espace « Mes gains ».',
+ answer: 'Dans notre boutique de Nice, sur présentation de votre compte utilisateur validé et de la confirmation de gain affichée dans votre espace « Mes gains », jusqu\'au 30 novembre 2026.',
},
]
@@ -51,13 +52,18 @@ const faqJsonLd = {
}
export default function Accueil() {
+ usePageMeta({
+ title: 'Jeu-concours 100 % Gagnant | Thé Tip Top — Thés bio et faits main',
+ description: "Du 2 au 31 octobre, tout ticket de plus de 49 € de notre boutique de Nice porte un code 100 % gagnant. Saisissez le vôtre et repartez avec votre lot.",
+ })
+
return (
{/* Bannière */}
-
+
Comment participer ?
-
+
{[
- { num: '1', text: 'Achat de 49 € minimum' },
- { num: '2', text: 'Recevez votre code unique' },
- { num: '3', text: 'Saisissez le code sur le site' },
- { num: '4', text: 'Découvrez votre lot' },
+ { num: '1', text: "Achat de 49 € dans notre boutique de Nice, code sur le ticket" },
+ { num: '2', text: 'Créez votre compte et saisissez le code' },
+ { num: '3', text: 'Découvrez et retirez votre lot en boutique' },
].map((step) => (
-
{step.num}
diff --git a/frontend/src/pages/Cgu.jsx b/frontend/src/pages/Cgu.jsx
index a8da3db..073de18 100644
--- a/frontend/src/pages/Cgu.jsx
+++ b/frontend/src/pages/Cgu.jsx
@@ -30,7 +30,7 @@ export default function Cgu() {
Les présentes Conditions Générales d'Utilisation (CGU) ont pour objet de définir
les modalités et conditions dans lesquelles la société Thé Tip Top met à
disposition des utilisateurs le site internet du jeu-concours « 100% Gagnant »,
- accessible à l'adresse https://www.thetiptop-concours.fr.
+ accessible à l'adresse https://www.dsp5-archi-o24a-4-5-g4.fr.
Toute utilisation du Site implique l'acceptation pleine et entière des présentes
@@ -112,12 +112,19 @@ export default function Cgu() {
caisse ou sa facture. Le Site valide le code et attribue immédiatement le lot
correspondant selon la répartition préétablie :
-
- - 60 % des tickets : infuseur à thé
- - 20 % des tickets : boîte de 100 g de thé détox ou d'infusion
- - 10 % des tickets : boîte de 100 g de thé signature
- - 6 % des tickets : coffret découverte d'une valeur de 39 €
- - 4 % des tickets : coffret découverte d'une valeur de 69 €
+
+ {[
+ { pct: '60 %', text: 'infuseur à thé' },
+ { pct: '20 %', text: "boîte de 100 g de thé détox ou d'infusion" },
+ { pct: '10 %', text: 'boîte de 100 g de thé signature' },
+ { pct: '6 %', text: "coffret découverte d'une valeur de 39 €" },
+ { pct: '4 %', text: "coffret découverte d'une valeur de 69 €" },
+ ].map((lot) => (
+ -
+ {lot.pct}
+ des tickets : {lot.text}
+
+ ))}
Un même utilisateur peut soumettre plusieurs codes distincts. La participation
@@ -220,7 +227,7 @@ export default function Cgu() {
6.2 – Suppression du compte
L'utilisateur peut demander la suppression de son compte à tout moment en
- contactant directement l'équipe via contact@thetiptop.fr. La suppression entraîne
+ contactant directement l'équipe via thetiptop.gp4@gmail.com. La suppression entraîne
la perte définitive des participations et gains non encore réclamés. Les données
personnelles sont supprimées conformément aux dispositions de la Politique de
Confidentialité, sous réserve des obligations légales de conservation.
diff --git a/frontend/src/pages/Confidentialite.jsx b/frontend/src/pages/Confidentialite.jsx
index 899f1db..3f2da31 100644
--- a/frontend/src/pages/Confidentialite.jsx
+++ b/frontend/src/pages/Confidentialite.jsx
@@ -89,7 +89,7 @@ export default function Confidentialite() {
Pour toute question concernant vos données personnelles :
- Email : contact@thetiptop.fr
+ Email : thetiptop.gp4@gmail.com
diff --git a/frontend/src/pages/Contact.jsx b/frontend/src/pages/Contact.jsx
index 06b25b9..8afa52d 100644
--- a/frontend/src/pages/Contact.jsx
+++ b/frontend/src/pages/Contact.jsx
@@ -37,10 +37,10 @@ export default function Contact() {
Email
- contact@thetiptop.fr
+ thetiptop.gp4@gmail.com
diff --git a/frontend/src/pages/MentionsLegales.jsx b/frontend/src/pages/MentionsLegales.jsx
index 0a11183..304ddb1 100644
--- a/frontend/src/pages/MentionsLegales.jsx
+++ b/frontend/src/pages/MentionsLegales.jsx
@@ -36,12 +36,12 @@ export default function MentionsLegales() {
Directeur de la publication : M. Eric Bourdon, en sa qualité de Gérant
SIRET : 362 521 879 00054
TVA intracommunautaire : FR83362521879
- Email : contact@thetiptop.fr
+ Email : thetiptop.gp4@gmail.com
Téléphone : 01 84 80 20 34
Le règlement du jeu-concours a été déposé auprès de Maître Arnaud Rick,
Commissaire de Justice. Il est consultable gratuitement sur simple demande
- à l'adresse contact@thetiptop.fr.
+ à l'adresse thetiptop.gp4@gmail.com.
),
diff --git a/frontend/src/pages/ReglesJeu.jsx b/frontend/src/pages/ReglesJeu.jsx
index 5401330..e7ef61c 100644
--- a/frontend/src/pages/ReglesJeu.jsx
+++ b/frontend/src/pages/ReglesJeu.jsx
@@ -59,15 +59,28 @@ export default function ReglesJeu() {
Que pouvez-vous gagner ?
-
- Tous les billets sont gagnants ! Les récompenses peuvent aller
- d'un infuseur à thé à un coffret découverte d'une valeur de 69€,
- en passant par des thés détox et des thés signatures.
+
+ Tous les billets sont gagnants ! Selon votre ticket, vous remportez :
+
+ {[
+ { pct: '60 %', text: 'un infuseur à thé' },
+ { pct: '20 %', text: "une boîte de 100 g de thé détox ou d'infusion" },
+ { pct: '10 %', text: 'une boîte de 100 g de thé signature' },
+ { pct: '6 %', text: "un coffret découverte d'une valeur de 39 €" },
+ { pct: '4 %', text: "un coffret découverte d'une valeur de 69 €" },
+ ].map((lot) => (
+ -
+ {lot.pct}
+ des tickets : {lot.text}
+
+ ))}
+
Grand gagnant
- Le participant tiré au sort remportera une année de thé d'une valeur de 360€ !
+ Un tirage au sort, effectué sous le contrôle de Maître Arnaud Rick, Commissaire de
+ Justice, désignera le gagnant d'une année de thé d'une valeur de 360€ !