update with all missing files and legal info + Dockerfile
This commit is contained in:
parent
8173049966
commit
43694e1d98
5
.dockerignore
Normal file
5
.dockerignore
Normal file
@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
.next
|
||||
.git
|
||||
.gitignore
|
||||
README.md
|
||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
@ -0,0 +1,17 @@
|
||||
FROM node:22-alpine AS builder
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN npm ci
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
FROM node:22-alpine AS runner
|
||||
WORKDIR /app
|
||||
ENV NODE_ENV=production
|
||||
ENV HOSTNAME=0.0.0.0
|
||||
ENV PORT=3000
|
||||
COPY --from=builder /app/.next/standalone ./
|
||||
COPY --from=builder /app/.next/static ./.next/static
|
||||
COPY --from=builder /app/public ./public
|
||||
EXPOSE 3000
|
||||
CMD ["node", "server.js"]
|
||||
@ -1,7 +1,7 @@
|
||||
import type { NextConfig } from "next";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
/* config options here */
|
||||
output: "standalone",
|
||||
reactCompiler: true,
|
||||
};
|
||||
|
||||
|
||||
5
public/robots.txt
Normal file
5
public/robots.txt
Normal file
@ -0,0 +1,5 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /api/
|
||||
|
||||
Sitemap: https://myinfomate.be/sitemap.xml
|
||||
74
src/app/confidentialite/page.tsx
Normal file
74
src/app/confidentialite/page.tsx
Normal file
@ -0,0 +1,74 @@
|
||||
import type { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Politique de confidentialité | MyInfoMate",
|
||||
description: "Politique de confidentialité et traitement des données personnelles de MyInfoMate.",
|
||||
alternates: { canonical: "/confidentialite" },
|
||||
};
|
||||
|
||||
export default function Confidentialite() {
|
||||
return (
|
||||
<main className="min-h-screen bg-white">
|
||||
<div className="max-w-3xl mx-auto px-6 py-16">
|
||||
<Link href="/" className="text-sm text-slate-400 hover:text-slate-600 mb-8 inline-block">
|
||||
← Retour
|
||||
</Link>
|
||||
|
||||
<h1 className="text-3xl font-bold text-slate-900 mb-10">Politique de confidentialité</h1>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Responsable du traitement</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Thomas Fransolet — UNOV<br />
|
||||
Rue René Copette 3, 5020 Namur, Belgique<br />
|
||||
Email : <a href="mailto:contact@unov.be" className="text-cyan-500 hover:underline">contact@unov.be</a>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Données collectées</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Le formulaire de contact collecte les données suivantes : prénom, nom, adresse email, et le message saisi. Ces données sont transmises à UNOV à des fins de réponse à votre demande.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Finalité et base légale</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Les données collectées sont traitées uniquement pour répondre à votre prise de contact. La base légale est l'intérêt légitime (art. 6.1.f du RGPD).
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Conservation des données</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Les données ne sont pas stockées sur nos serveurs. Elles sont transmises par email via le service <strong>Formspree</strong> (formspree.io) et ne sont pas conservées au-delà de la réception du message.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Sous-traitant</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
L'envoi du formulaire utilise le service <strong>Formspree, Inc.</strong> (États-Unis), qui agit en qualité de sous-traitant. Le transfert est encadré par les clauses contractuelles types de la Commission européenne. Pour plus d'informations : <a href="https://formspree.io/legal/privacy-policy" target="_blank" rel="noopener noreferrer" className="text-cyan-500 hover:underline">politique de confidentialité de Formspree</a>.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Vos droits</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Conformément au RGPD, vous disposez d'un droit d'accès, de rectification, d'effacement, de limitation, d'opposition et de portabilité de vos données. Pour exercer ces droits, contactez-nous à <a href="mailto:contact@unov.be" className="text-cyan-500 hover:underline">contact@unov.be</a>.<br /><br />
|
||||
Vous avez également le droit d'introduire une réclamation auprès de l'Autorité de protection des données (APD) belge : <a href="https://www.autoriteprotectiondonnees.be" target="_blank" rel="noopener noreferrer" className="text-cyan-500 hover:underline">autoriteprotectiondonnees.be</a>.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Cookies</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Ce site n'utilise pas de cookies de traçage ou publicitaires. Aucun outil d'analyse comportementale n'est actif.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
@ -2,11 +2,29 @@ import type { Metadata } from "next";
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL("https://myinfomate.be"),
|
||||
title: "MyInfoMate | La technologie au service de l'expérience visiteur",
|
||||
description: "La solution SaaS pour digitaliser l'expérience de vos visiteurs. Créativité et technologie au service de l'expérience visiteur.",
|
||||
icons: {
|
||||
icon: "/myinfomate-logo.png",
|
||||
},
|
||||
openGraph: {
|
||||
title: "MyInfoMate | La technologie au service de l'expérience visiteur",
|
||||
description: "La solution SaaS pour digitaliser l'expérience de vos visiteurs. Créativité et technologie au service de l'expérience visiteur.",
|
||||
url: "https://myinfomate.be",
|
||||
siteName: "MyInfoMate",
|
||||
locale: "fr_BE",
|
||||
type: "website",
|
||||
images: [{ url: "/myinfomate-logo.png" }],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "MyInfoMate | La technologie au service de l'expérience visiteur",
|
||||
description: "La solution SaaS pour digitaliser l'expérience de vos visiteurs. Créativité et technologie au service de l'expérience visiteur.",
|
||||
},
|
||||
alternates: {
|
||||
canonical: "/",
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
65
src/app/mentions-legales/page.tsx
Normal file
65
src/app/mentions-legales/page.tsx
Normal file
@ -0,0 +1,65 @@
|
||||
import type { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Mentions légales | MyInfoMate",
|
||||
description: "Mentions légales du site MyInfoMate.",
|
||||
alternates: { canonical: "/mentions-legales" },
|
||||
};
|
||||
|
||||
export default function MentionsLegales() {
|
||||
return (
|
||||
<main className="min-h-screen bg-white">
|
||||
<div className="max-w-3xl mx-auto px-6 py-16">
|
||||
<Link href="/" className="text-sm text-slate-400 hover:text-slate-600 mb-8 inline-block">
|
||||
← Retour
|
||||
</Link>
|
||||
|
||||
<h1 className="text-3xl font-bold text-slate-900 mb-10">Mentions légales</h1>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Éditeur du site</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Le présent site est édité par :<br />
|
||||
<strong>Thomas Fransolet</strong>, personne physique exerçant une activité sous l'enseigne <strong>UNOV</strong><br />
|
||||
Numéro d'entreprise BCE : 0776.895.467<br />
|
||||
Rue René Copette 3, 5020 Namur, Belgique<br />
|
||||
Email : <a href="mailto:contact@unov.be" className="text-cyan-500 hover:underline">contact@unov.be</a><br />
|
||||
Téléphone : +32 498 07 95 35
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Hébergement</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Ce site est hébergé par :<br />
|
||||
<strong>OVH SAS</strong><br />
|
||||
2 rue Kellermann, 59100 Roubaix, France<br />
|
||||
<a href="https://www.ovh.com" target="_blank" rel="noopener noreferrer" className="text-cyan-500 hover:underline">www.ovh.com</a>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Propriété intellectuelle</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
L'ensemble des contenus présents sur ce site (textes, images, logos, graphismes) sont la propriété exclusive de Thomas Fransolet / UNOV, sauf mention contraire. Toute reproduction, distribution ou utilisation sans autorisation préalable est interdite.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="mb-8">
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Responsabilité</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
UNOV s'efforce de maintenir les informations publiées sur ce site à jour et exactes. Nous déclinons toute responsabilité en cas d'erreurs, d'omissions ou de résultats obtenus par un usage inapproprié de ces informations.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-lg font-semibold text-slate-800 mb-3">Droit applicable</h2>
|
||||
<p className="text-slate-600 text-sm leading-relaxed">
|
||||
Le présent site est soumis au droit belge. Tout litige relatif à son utilisation relève de la compétence exclusive des tribunaux de Namur, Belgique.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
@ -1027,7 +1027,7 @@ export default function Home() {
|
||||
<ul className="space-y-4">
|
||||
<li className="flex items-start gap-3 text-sm text-slate-500">
|
||||
<span className="material-symbols-outlined text-primary text-sm">location_on</span>
|
||||
UNOV, 5020 Vedrin
|
||||
UNOV, 5020 Namur
|
||||
</li>
|
||||
<li className="flex items-center gap-3 text-sm text-slate-500">
|
||||
<span className="material-symbols-outlined text-primary text-sm">mail</span>
|
||||
@ -1043,8 +1043,8 @@ export default function Home() {
|
||||
<div className="pt-8 border-t border-slate-200 flex flex-col md:flex-row justify-between items-center gap-4">
|
||||
<p className="text-xs text-slate-400">{t.footer.copyright}</p>
|
||||
<div className="flex gap-8">
|
||||
<a className="text-xs text-slate-400 hover:text-slate-600" href="#">{t.footer.legal}</a>
|
||||
<a className="text-xs text-slate-400 hover:text-slate-600" href="#">{t.footer.privacy}</a>
|
||||
<a className="text-xs text-slate-400 hover:text-slate-600" href="/mentions-legales">{t.footer.legal}</a>
|
||||
<a className="text-xs text-slate-400 hover:text-slate-600" href="/confidentialite">{t.footer.privacy}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
24
src/app/sitemap.ts
Normal file
24
src/app/sitemap.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
return [
|
||||
{
|
||||
url: "https://myinfomate.be",
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "monthly",
|
||||
priority: 1,
|
||||
},
|
||||
{
|
||||
url: "https://myinfomate.be/mentions-legales",
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "yearly",
|
||||
priority: 0.3,
|
||||
},
|
||||
{
|
||||
url: "https://myinfomate.be/confidentialite",
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "yearly",
|
||||
priority: 0.3,
|
||||
},
|
||||
];
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user