Skip to content

Commit eae7dc5

Browse files
committed
feat(nextjs): add analytics & seo
og tag & images
1 parent 701781f commit eae7dc5

File tree

4 files changed

+126
-22
lines changed

4 files changed

+126
-22
lines changed
858 KB
Loading

apps/nextjs/src/app/layout.tsx

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,52 @@
1-
import type { Metadata, Viewport } from "next";
2-
import { cn } from "@oyo/ui";
3-
import { ThemeProvider, ThemeToggle } from "@oyo/ui/theme";
4-
import { Toaster } from "@oyo/ui/toast";
5-
import { GeistMono } from "geist/font/mono";
6-
import { GeistSans } from "geist/font/sans";
1+
import type { Metadata, Viewport } from "next"
2+
import Script from "next/script"
3+
import { GeistMono } from "geist/font/mono"
4+
import { GeistSans } from "geist/font/sans"
75

8-
import { TRPCReactProvider } from "~/trpc/react";
9-
import { ConvexClientProvider } from "./convex-client-provider";
10-
import "~/app/globals.css";
6+
import { cn } from "@oyo/ui"
7+
import { ThemeProvider, ThemeToggle } from "@oyo/ui/theme"
8+
import { Toaster } from "@oyo/ui/toast"
119

12-
import { env } from "~/env";
10+
import { TRPCReactProvider } from "~/trpc/react"
11+
import { ConvexClientProvider } from "./convex-client-provider"
1312

14-
const title = "O Mas la? - Trouve tes groupes a po préférés sans effort";
13+
import "~/app/globals.css"
14+
15+
import { env } from "~/env"
16+
17+
const title = "O Mas la? - Trouve tes groupes a po préférés sans effort"
1518
const description =
1619
"La solution pour suivre tes groupes de caranaval préférés, fini les dimanches soirs à courir" +
17-
" inutilement dans Pointe-à-pitre";
20+
" inutilement dans Pointe-à-pitre"
21+
const metadataBase = new URL(
22+
env.VERCEL_ENV === "production"
23+
? "https://omasla.fr"
24+
: "http://localhost:3000",
25+
)
26+
1827
export const metadata: Metadata = {
19-
metadataBase: new URL(
20-
env.VERCEL_ENV === "production"
21-
? "https://turbo.t3.gg"
22-
: "http://localhost:3000",
23-
),
28+
metadataBase,
2429
title,
2530
description,
2631
openGraph: {
2732
title,
2833
description,
2934
siteName: "O Mas La ?",
35+
images: [{ url: `${metadataBase}/omasla-og-image.png` }],
3036
},
3137
twitter: {
3238
card: "summary_large_image",
3339
creator: "@macojaune",
40+
images: [`${metadataBase}/omasla-og-image.png`],
3441
},
35-
};
42+
}
3643

3744
export const viewport: Viewport = {
3845
themeColor: [
3946
{ media: "(prefers-color-scheme: light)", color: "white" },
4047
{ media: "(prefers-color-scheme: dark)", color: "black" },
4148
],
42-
};
49+
}
4350

4451
export default function RootLayout(props: { children: React.ReactNode }) {
4552
return (
@@ -51,6 +58,11 @@ export default function RootLayout(props: { children: React.ReactNode }) {
5158
GeistMono.variable,
5259
)}
5360
>
61+
<Script
62+
src="https://analytics.marvinl.com/script.js"
63+
data-website-id="638989fa-9ab3-4a30-b342-0c9d4103f87f"
64+
defer
65+
/>
5466
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
5567
<ConvexClientProvider>
5668
<TRPCReactProvider>{props.children}</TRPCReactProvider>
@@ -59,5 +71,5 @@ export default function RootLayout(props: { children: React.ReactNode }) {
5971
</ThemeProvider>
6072
</body>
6173
</html>
62-
);
74+
)
6375
}

apps/nextjs/src/app/page.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ export default function HomePage() {
7575

7676
{/* How it Works Section */}
7777
<section className="py-20">
78-
<div className="container mx-auto px-4">
79-
<h2 className="mb-16 text-center text-4xl font-bold">
78+
<div className="container mx-auto flex flex-col items-center gap-16 px-4">
79+
<h2 className="text-center text-4xl font-bold">
8080
Comment ça marche ?
8181
</h2>
8282
<div className="grid gap-8 md:grid-cols-3">
@@ -110,6 +110,12 @@ export default function HomePage() {
110110
</Card>
111111
))}
112112
</div>
113+
<Link href="/map">
114+
<Button size="lg" variant="outline" className="text-white">
115+
<MapPin className="mr-2 h-6 w-6" />
116+
Accède à la carte
117+
</Button>
118+
</Link>
113119
</div>
114120
</section>
115121

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Politique de confidentialité de O Mas La?
2+
3+
La présente Politique de confidentialité décrit la façon dont vos informations personnelles sont recueillies, utilisées et partagées lorsque vous vous rendesur omasla.fr (le « Site »)
4+
5+
## INFORMATIONS PERSONNELLES RECUEILLIES
6+
Lorsque vous vous rendez sur le Site, nous recueillons automatiquement certaines informations concernant votre appareil, notamment des informations sur votre navigateur web, votre adresse IP, votre fuseau horaire et certains des cookies qui sont installés sur votre appareil. En outre, lorsque vous
7+
parcourez le Site, nous recueillons des informations sur les pages web que vous consultez, les sites web ou les termes de recherche qui vous ont permis d'arriver sur le Site, ainsi que des informations sur la manière dont vous interagissez avec le Site. Nous désignons ces informations
8+
collectées automatiquement sous l'appellation « Informations sur l'appareil ».
9+
Nous recueillons les Informations sur l'appareil à l'aide des technologies suivantes :
10+
FICHIERS TÉMOINS (COOKIES)
11+
Voici une liste de fichiers témoins que nous utilisons. Nous les avons énumérés ici pour que vous ayez la possibilité de choisir si vous souhaitez les
12+
autoriser ou non.
13+
_session_id, identificateur unique de session, permet à Shopify de stocker les informations relatives à votre session (référent, page de renvoi, etc.).
14+
_shopify_visit, aucune donnée retenue, persiste pendant 30 minutes depuis la dernière visite. Utilisé par le système interne de suivi des statistiques du
15+
fournisseur de notre site web pour enregistrer le nombre de visites.
16+
_shopify_uniq, aucune donnée retenue, expire à minuit (selon l’emplacement du visiteur) le jour suivant. Calcule le nombre de visites d’une boutique par
17+
client unique.
18+
cart, identificateur unique, persiste pendant 2 semaines, stocke l’information relative à votre panier d’achat.
19+
_secure_session_id, identificateur unique de session
20+
storefront_digest, identificateur unique, indéfini si la boutique possède un mot de passe, il est utilisé pour savoir si le visiteur actuel a accès.
21+
- Les « fichiers journaux » suivent l'activité du Site et recueillent des données telles que votre adresse IP, le type de navigateur que vous utilisez, votre
22+
fournisseur d'accès Internet, vos pages référentes et de sortie, et vos données d'horodatage (date et heure).
23+
- Les « pixels invisibles », les « balises » et les « pixels » sont des fichiers électroniques qui enregistrent des informations sur la façon dont vous parcourele Site.
24+
[[INSÉRER LES DESCRIPTIONS DES AUTRES TYPES DE TECHNOLOGIES DE SUIVI QUE VOUS UTILISEZ]]
25+
Par ailleurs, lorsque vous effectuez ou tentez d'effectuer un achat par le biais du Site, nous recueillons certaines informations vous concernant,
26+
notamment votre nom, votre adresse de facturation, votre adresse d'expédition, vos informations de paiement (y compris vos numéros de cartes de créd[[INSÉRER LES AUTRES MOYENS DE PAIEMENT ACCEPTÉS, LE CAS ÉCHÉANT]], votre adresse e-mail et votre numéro de téléphone. Ces informations
27+
collectées automatiquement sont désignées par l’appellation « Informations sur la commande ».
28+
[[INSÉRER TOUTES LES AUTRES INFORMATIONS QUE VOUS RECUEILLEZ, LE CAS ÉCHÉANT : DONNÉES HORS LIGNE, DONNÉES/LISTES ACHETÉES À DES FINDE MARKETING]]
29+
Lorsque nous utilisons l'expression « Informations personnelles » dans la présente Politique de confidentialité, nous faisons allusion à la fois aux
30+
Informations sur l'appareil et aux Informations sur la commande.
31+
COMMENT UTILISONS-NOUS VOS INFORMATIONS PERSONNELLES ?
32+
En règle générale, nous utilisons les Informations sur la commande que nous recueillons pour traiter toute commande passée par le biais du Site (y
33+
compris pour traiter vos informations de paiement, organiser l'expédition de votre commande et vous fournir des factures et/ou des confirmations de
34+
compris pour traiter vos informations de paiement, organiser lexpédition de votre commande et vous fournir des factures et/ou des confirmations de
35+
commande). En outre, nous utilisons ces Informations sur la commande pour :
36+
communiquer avec vous ;
37+
évaluer les fraudes ou risques potentiels ; et
38+
lorsque cela correspond aux préférences que vous nous avez communiquées, vous fournir des informations ou des publicités concernant nos produits ouservices.
39+
[[INSÉRER LES AUTRES UTILISATIONS QUI SONT FAITES DES INFORMATIONS SUR LA COMMANDE]]
40+
Nous utilisons les Informations sur l'appareil (en particulier votre adresse IP) que nous recueillons pour évaluer les fraudes ou risques potentiels et, de
41+
manière plus générale, pour améliorer et optimiser notre Site (par exemple, en générant des analyses sur la façon dont nos clients parcourent et
42+
interagissent avec le Site, et pour évaluer la réussite de nos campagnes de publicité et de marketing).
43+
[[INSÉRER LES AUTRES UTILISATIONS QUI SONT FAITES DES INFORMATIONS SUR L'APPAREIL, NOTAMMENT EN MATIÈRE DE PUBLICITÉ ET DE RECIBLAGE]PARTAGE DE VOS INFORMATIONS PERSONNELLES
44+
Nous partageons vos Informations personnelles avec des tiers qui nous aident à les utiliser aux fins décrites précédemment. Par exemple, nous utilisonsShopify pour héberger notre boutique en ligne – pour en savoir plus sur l'utilisation de vos Informations personnelles par Shopify, veuillez consulter la
45+
page suivante : https://www.shopify.fr/legal/confidentialite. Nous utilisons également Google Analytics pour mieux comprendre comment nos clients
46+
utilisent le Site – pour en savoir plus sur l'utilisation de vos Informations personnelles par Google, veuillez consulter la page suivante :
47+
https://www.google.com/intl/fr/policies/privacy/. Vous pouvez aussi désactiver Google Analytics ici : https://tools.google.com/dlpage/gaoptout.
48+
Enfin, il se peut que nous partagions aussi vos Informations personnelles pour respecter les lois et règlementations applicables, répondre à une
49+
assignation, à un mandat de perquisition ou à toute autre demande légale de renseignements que nous recevons, ou pour protéger nos droits.
50+
[[INCLURE LE PARAGRAPHE SUIVANT SI VOUS UTILISEZ LE MARKETING DE RELANCE OU LA PUBLICITÉ CIBLÉE]]
51+
PUBLICITÉ COMPORTEMENTALE
52+
Comme indiqué ci-dessus, nous utilisons vos Informations personnelles pour vous proposer des publicités ciblées ou des messages de marketing qui,
53+
selon nous, pourraient vous intéresser. Pour en savoir plus sur le fonctionnement de la publicité ciblée, vous pouvez consulter la page d'information de laNetwork Advertising Initiative (NAI) à l'adresse suivante : http://www.networkadvertising.org/understanding-online-advertising/how-does-it-work.
54+
Vous pouvez refuser la publicité ciblée ici :
55+
[[
56+
INCLURE LES LIENS DE DÉSACTIVATION DES SERVICES UTILISÉS.
57+
QUELQUES LIENS COURANTS :
58+
FACEBOOK – https://www.facebook.com/settings/?tab=ads
59+
GOOGLE – https://www.google.com/settings/ads/anonymous
60+
BING – https://about.ads.microsoft.com/fr-fr/ressources/politiques/annonces-personnalisees
61+
]]
62+
En outre, vous pouvez refuser certains de ces services en vous rendant sur le portail de désactivation de Digital Advertising Alliance à l'adresse suivante :
63+
https://optout.aboutads.info/?c=3&lang=fr.
64+
NE PAS SUIVRE
65+
Veuillez noter que nous ne modifions pas la collecte de données de notre Site et nos pratiques d'utilisation lorsque nous détectons un signal « Ne pas
66+
suivre » sur votre navigateur.
67+
[[INCLURE LE PARAGRAPHE SUIVANT SI VOUS VOUS SITUEZ EN EUROPE OU SI VOTRE BOUTIQUE A DES CLIENTS EN EUROPE]]
68+
VOS DROITS
69+
Si vous êtes résident(e) européen(ne), vous disposez d'un droit d'accès aux informations personnelles que nous détenons à votre sujet et vous pouvez
70+
demander à ce qu'elles soient corrigées, mises à jour ou supprimées. Si vous souhaitez exercer ce droit, veuillez nous contacter au moyen des
71+
coordonnées précisées ci-dessous.
72+
Par ailleurs, si vous êtes résident(e) européen(ne), notez que nous traitons vos informations dans le but de remplir nos obligations contractuelles à votreégard (par exemple si vous passez une commande sur le Site) ou de poursuivre nos intérêts commerciaux légitimes, énumérés ci-dessus. Veuillez
73+
également noter que vos informations seront transférées hors de l'Europe, y compris au Canada et aux États-Unis.
74+
RÉTENTION DES DONNÉES
75+
Lorsque vous passez une commande par l'intermédiaire du Site, nous conservons les Informations sur votre commande dans nos dossiers, sauf si et
76+
jusqu'à ce que vous nous demandiez de les supprimer.
77+
[[INSÉRER LE PARAGRAPHE SUIVANT EN CAS D'OBLIGATION D'ÂGE MINIMUM]]
78+
MINEURS
79+
Le Site n'est pas destiné aux individus de moins de [[INSÉRER L'ÂGE]].
80+
CHANGEMENTS
81+
Nous pouvons être amenés à modifier la présente politique de confidentialité de temps à autre afin d'y refléter, par exemple, les changements apportés ànos pratiques ou pour d'autres motifs opérationnels, juridiques ou réglementaires.
82+
NOUS CONTACTER
83+
Pour en savoir plus sur nos pratiques de confidentialité, si vous avez des questions ou si vous souhaitez déposer une réclamation, veuillez nous contacterpar e-mail à contact@marvinl.com, ou par courrier à l'adresse suivante :
84+
5 rue des suisses, Paris, Paris, 75014, France
85+
Propulsé par Shopify
86+
www.shopify.fr

0 commit comments

Comments
 (0)