feat(landing): CTAs vers app + pages mentions légales & RGPD
All checks were successful
Build & Deploy Landing / build-and-deploy (push) Successful in 25s
All checks were successful
Build & Deploy Landing / build-and-deploy (push) Successful in 25s
- Remplace les formulaires waitlist par des CTA "Lancer Rubis"
pointant vers app.rubis.pro (nav, hero, section finale)
- Met à jour la trust line ("3 mois gratuits puis Free 5 factures")
- Footer : ajoute liens Mentions légales / Confidentialité, casse
"Rubis sur l'ongle" + lien Lancer Rubis
- Supprime le script de binding waitlist (plus utilisé)
- Migre les références au domaine vers rubis.pro
Nouvelles pages :
- mentions-legales.html : conformité LCEN (9 sections)
- confidentialite.html : politique RGPD (10 sections, sous-traitants
Stripe/Resend/Mistral, droits utilisateur, durées de conservation)
- _legal-shell.css : shell graphique partagé (palette rubis,
Bricolage Grotesque + Inter, header/footer brandés, TOC)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
ff8fe64be2
commit
6e796a0980
331
landing/_legal-shell.css
Normal file
331
landing/_legal-shell.css
Normal file
@ -0,0 +1,331 @@
|
||||
/*
|
||||
* Styles partagés pour les pages légales (mentions-legales, confidentialite).
|
||||
* Reprend la palette + typo de la landing pour l'unité visuelle, mais en
|
||||
* version "longue lecture" — pas de hero, pas d'animations, juste un
|
||||
* container central confortable avec hiérarchie typographique soignée.
|
||||
*/
|
||||
|
||||
@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@10..48,500;10..48,600;10..48,700;10..48,800&family=Inter:wght@400;500;600;700&display=swap");
|
||||
|
||||
:root {
|
||||
--rubis: #9f1239;
|
||||
--rubis-deep: #771328;
|
||||
--rubis-glow: #fbe4ea;
|
||||
--cream: #faf7f2;
|
||||
--cream-2: #f5efe7;
|
||||
--ink: #1a1410;
|
||||
--ink-2: #4f4640;
|
||||
--ink-3: #8a7f76;
|
||||
--line: #e8e0d6;
|
||||
--display: "Bricolage Grotesque", system-ui, sans-serif;
|
||||
--body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--body);
|
||||
background: var(--cream);
|
||||
color: var(--ink);
|
||||
font-size: 16px;
|
||||
line-height: 1.65;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--rubis);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 3px;
|
||||
}
|
||||
|
||||
/* === Header sobre (même brand que landing) === */
|
||||
.legal-header {
|
||||
background: var(--cream);
|
||||
border-bottom: 1px solid var(--line);
|
||||
padding: 18px 0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 50;
|
||||
backdrop-filter: blur(10px);
|
||||
background: rgba(250, 247, 242, 0.92);
|
||||
}
|
||||
|
||||
.legal-header .container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.brand {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-family: var(--display);
|
||||
font-weight: 800;
|
||||
font-size: 19px;
|
||||
letter-spacing: -0.02em;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
.brand:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.brand-suffix {
|
||||
font-family: var(--display);
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
color: var(--ink-3);
|
||||
font-size: 12.5px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.gem-svg {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
.back-link {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 13px;
|
||||
color: var(--ink-3);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.back-link:hover {
|
||||
color: var(--rubis);
|
||||
}
|
||||
|
||||
/* === Container & contenu === */
|
||||
.container {
|
||||
max-width: 760px;
|
||||
margin: 0 auto;
|
||||
padding: 0 24px;
|
||||
}
|
||||
|
||||
.legal-main {
|
||||
padding: 56px 0 80px;
|
||||
}
|
||||
|
||||
.legal-main > .container > .eyebrow {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--rubis);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: var(--display);
|
||||
font-size: clamp(32px, 5vw, 44px);
|
||||
font-weight: 800;
|
||||
letter-spacing: -0.022em;
|
||||
line-height: 1.1;
|
||||
margin-bottom: 12px;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
h1 em {
|
||||
color: var(--rubis);
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.lede {
|
||||
font-size: 16px;
|
||||
color: var(--ink-2);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.last-updated {
|
||||
font-size: 12.5px;
|
||||
color: var(--ink-3);
|
||||
margin-bottom: 40px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--display);
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.018em;
|
||||
line-height: 1.2;
|
||||
margin: 48px 0 14px;
|
||||
color: var(--ink);
|
||||
scroll-margin-top: 80px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: var(--display);
|
||||
font-size: 16.5px;
|
||||
font-weight: 700;
|
||||
margin: 28px 0 10px;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
margin-bottom: 16px;
|
||||
color: var(--ink-2);
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
ul li,
|
||||
ol li {
|
||||
margin-bottom: 8px;
|
||||
color: var(--ink-2);
|
||||
}
|
||||
|
||||
ul li strong,
|
||||
ol li strong,
|
||||
p strong {
|
||||
color: var(--ink);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Bloc info "callout" pour les emails de contact */
|
||||
.callout {
|
||||
background: var(--cream-2);
|
||||
border-left: 3px solid var(--rubis);
|
||||
padding: 16px 20px;
|
||||
border-radius: 4px;
|
||||
margin: 24px 0;
|
||||
font-size: 14.5px;
|
||||
}
|
||||
|
||||
.callout strong {
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
.callout p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* TOC compact en haut */
|
||||
.toc {
|
||||
background: var(--cream-2);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 14px;
|
||||
padding: 20px 24px;
|
||||
margin: 32px 0 40px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.toc-title {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--ink-3);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.toc ol {
|
||||
padding-left: 20px;
|
||||
margin-bottom: 0;
|
||||
counter-reset: toc;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.toc li {
|
||||
counter-increment: toc;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.toc li::before {
|
||||
content: counter(toc) ".";
|
||||
color: var(--rubis);
|
||||
font-weight: 600;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.toc a {
|
||||
color: var(--ink-2);
|
||||
}
|
||||
|
||||
.toc a:hover {
|
||||
color: var(--rubis);
|
||||
}
|
||||
|
||||
/* Tableau définitions (sous-traitants etc.) */
|
||||
.def-table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin: 16px 0 24px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.def-table th,
|
||||
.def-table td {
|
||||
text-align: left;
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid var(--line);
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.def-table th {
|
||||
background: var(--cream-2);
|
||||
color: var(--ink-3);
|
||||
font-weight: 600;
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
.def-table td:first-child {
|
||||
font-weight: 600;
|
||||
color: var(--ink);
|
||||
white-space: nowrap;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* === Footer (identique landing minimal) === */
|
||||
.legal-footer {
|
||||
border-top: 1px solid var(--line);
|
||||
background: var(--cream-2);
|
||||
padding: 32px 0 40px;
|
||||
font-size: 13px;
|
||||
color: var(--ink-3);
|
||||
}
|
||||
|
||||
.legal-footer .container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 24px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.legal-footer nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.legal-footer nav a {
|
||||
color: var(--ink-3);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.legal-footer nav a:hover {
|
||||
color: var(--rubis);
|
||||
}
|
||||
311
landing/confidentialite.html
Normal file
311
landing/confidentialite.html
Normal file
@ -0,0 +1,311 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#9F1239" />
|
||||
<meta name="description" content="Politique de confidentialité et conformité RGPD du service Rubis sur l'ongle." />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/site.webmanifest" />
|
||||
<link rel="stylesheet" href="/_legal-shell.css" />
|
||||
<title>Politique de confidentialité · Rubis sur l'ongle</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="legal-header">
|
||||
<div class="container">
|
||||
<a href="/" class="brand">
|
||||
<svg class="gem-svg" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
||||
<polygon points="100,10 190,100 100,190 10,100" fill="#9F1239" />
|
||||
<line x1="10" y1="100" x2="190" y2="100" stroke="rgba(255,255,255,0.55)" stroke-width="3" />
|
||||
<line x1="55" y1="55" x2="100" y2="100" stroke="rgba(255,255,255,0.4)" stroke-width="2" />
|
||||
<line x1="145" y1="55" x2="100" y2="100" stroke="rgba(255,255,255,0.4)" stroke-width="2" />
|
||||
</svg>
|
||||
<span>Rubis<span class="brand-suffix">sur l'ongle</span></span>
|
||||
</a>
|
||||
<a href="/" class="back-link">← Retour à l'accueil</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="legal-main">
|
||||
<div class="container">
|
||||
<p class="eyebrow">Données personnelles · RGPD</p>
|
||||
<h1>Politique de <em>confidentialité</em></h1>
|
||||
<p class="lede">
|
||||
Cette page décrit comment Rubis sur l'ongle collecte, utilise et protège vos données
|
||||
personnelles, conformément au Règlement (UE) 2016/679 (RGPD) et à la loi
|
||||
Informatique et Libertés modifiée.
|
||||
</p>
|
||||
<p class="last-updated">Dernière mise à jour : 7 mai 2026</p>
|
||||
|
||||
<div class="toc" aria-label="Sommaire">
|
||||
<p class="toc-title">Sommaire</p>
|
||||
<ol>
|
||||
<li><a href="#responsable">Responsable du traitement</a></li>
|
||||
<li><a href="#donnees">Données collectées</a></li>
|
||||
<li><a href="#finalites">Finalités et bases légales</a></li>
|
||||
<li><a href="#sous-traitants">Sous-traitants et hébergement</a></li>
|
||||
<li><a href="#duree">Durée de conservation</a></li>
|
||||
<li><a href="#droits">Vos droits</a></li>
|
||||
<li><a href="#cookies">Cookies</a></li>
|
||||
<li><a href="#securite">Sécurité</a></li>
|
||||
<li><a href="#reclamation">Réclamation auprès de la CNIL</a></li>
|
||||
<li><a href="#evolutions">Évolutions de cette politique</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h2 id="responsable">1. Responsable du traitement</h2>
|
||||
<p>
|
||||
Le responsable du traitement de vos données est <strong>Arthur Barré</strong>,
|
||||
éditeur du service Rubis sur l'ongle (cf.
|
||||
<a href="/mentions-legales.html">mentions légales</a>).
|
||||
</p>
|
||||
<div class="callout">
|
||||
<p>
|
||||
<strong>Pour toute question liée à vos données</strong> :
|
||||
<a href="mailto:privacy@rubis.pro">privacy@rubis.pro</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2 id="donnees">2. Données collectées</h2>
|
||||
<p>
|
||||
Nous collectons uniquement les données strictement nécessaires au fonctionnement du
|
||||
service. Aucune donnée n'est revendue à des tiers à des fins commerciales.
|
||||
</p>
|
||||
|
||||
<h3>2.1 Données d'inscription et de compte</h3>
|
||||
<ul>
|
||||
<li><strong>Email</strong> (identifiant de connexion + canal de notification check-in)</li>
|
||||
<li><strong>Mot de passe</strong> (stocké hashé via Argon2 — nous ne pouvons pas le lire)</li>
|
||||
<li><strong>Nom complet</strong> (signature des relances)</li>
|
||||
<li><strong>Nom de l'organisation et SIRET</strong> (optionnel, pour les mises en demeure formelles)</li>
|
||||
</ul>
|
||||
|
||||
<h3>2.2 Données métier saisies par l'utilisateur</h3>
|
||||
<ul>
|
||||
<li><strong>Factures</strong> : numéro, montant, dates d'émission et d'échéance, fichier PDF/image source</li>
|
||||
<li><strong>Clients du user</strong> : nom, email, téléphone, adresse, SIRET (si fourni)</li>
|
||||
<li><strong>Plans de relance</strong> et templates d'emails que l'utilisateur configure</li>
|
||||
</ul>
|
||||
<p>
|
||||
<strong>Important</strong> : les données des <em>clients finaux</em> du user sont
|
||||
collectées par l'utilisateur lui-même qui en est responsable de traitement vis-à-vis
|
||||
de ses clients. Rubis agit en tant que sous-traitant au sens de l'article 28 du
|
||||
RGPD pour ces données. Un avenant DPA peut être fourni sur demande.
|
||||
</p>
|
||||
|
||||
<h3>2.3 Données techniques et journaux</h3>
|
||||
<ul>
|
||||
<li>Logs serveur (adresse IP, user agent, date/heure de connexion) — conservés 30 jours pour la sécurité</li>
|
||||
<li>Cookies de session (refresh token httpOnly) — durée de vie 30 jours</li>
|
||||
<li>Identifiants Stripe Customer/Subscription (en cas d'abonnement payant)</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="finalites">3. Finalités et bases légales</h2>
|
||||
<table class="def-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Finalité</th>
|
||||
<th>Base légale</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Fourniture du service (relances, OCR, dashboard)</td>
|
||||
<td>Exécution du contrat (art. 6.1.b RGPD)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Facturation et abonnement</td>
|
||||
<td>Exécution du contrat + obligation légale (comptable)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sécurité du service (anti-fraude, logs)</td>
|
||||
<td>Intérêt légitime (art. 6.1.f)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Support utilisateur</td>
|
||||
<td>Exécution du contrat</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Statistiques d'usage anonymisées</td>
|
||||
<td>Intérêt légitime — pas de profiling individuel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Communication commerciale</td>
|
||||
<td>Consentement explicite (opt-in à l'inscription)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="sous-traitants">4. Sous-traitants et hébergement</h2>
|
||||
<p>
|
||||
Tout l'hébergement principal (base de données, fichiers PDF, application) reste sur
|
||||
notre infrastructure auto-hébergée en France. Quelques services tiers spécialisés
|
||||
interviennent uniquement pour des fonctions ciblées :
|
||||
</p>
|
||||
<table class="def-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Sous-traitant</th>
|
||||
<th>Rôle & localisation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Stripe</strong></td>
|
||||
<td>
|
||||
Traitement des paiements et abonnements. Données : email, nom, CB (jamais
|
||||
stockée chez nous, gérée par Stripe). Stripe est certifié PCI-DSS niveau 1.
|
||||
Hébergement principal : Irlande (UE).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Resend</strong></td>
|
||||
<td>
|
||||
Envoi des emails transactionnels (relances et confirmations). Données :
|
||||
adresses email, contenu des emails. Hébergement : UE/US avec
|
||||
clauses contractuelles types.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Mistral AI</strong></td>
|
||||
<td>
|
||||
OCR sur les factures uploadées. Les fichiers sont envoyés à Mistral pour
|
||||
extraction du texte puis supprimés de leur côté. Hébergement : France.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
Aucun transfert hors UE n'a lieu sans encadrement contractuel approprié (clauses
|
||||
contractuelles types de la Commission européenne).
|
||||
</p>
|
||||
|
||||
<h2 id="duree">5. Durée de conservation</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>Compte utilisateur actif</strong> : conservation tant que le compte est
|
||||
ouvert.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Compte supprimé</strong> : suppression complète des données dans un
|
||||
délai de 30 jours, hors obligations comptables.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Factures émises et payées</strong> : conservation 10 ans (obligation
|
||||
comptable, art. L.123-22 du Code de commerce).
|
||||
</li>
|
||||
<li>
|
||||
<strong>Logs techniques</strong> : 30 jours.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Données Stripe (factures d'abonnement)</strong> : selon politique de
|
||||
Stripe (en général 10 ans).
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="droits">6. Vos droits</h2>
|
||||
<p>
|
||||
Conformément au RGPD, vous disposez à tout moment des droits suivants :
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Droit d'accès</strong> à vos données personnelles</li>
|
||||
<li><strong>Droit de rectification</strong> en cas de données inexactes</li>
|
||||
<li><strong>Droit à l'effacement</strong> (« droit à l'oubli »)</li>
|
||||
<li><strong>Droit à la portabilité</strong> dans un format lisible (export JSON sur demande)</li>
|
||||
<li><strong>Droit à la limitation</strong> du traitement</li>
|
||||
<li><strong>Droit d'opposition</strong> au traitement pour motif légitime</li>
|
||||
<li><strong>Droit de retirer votre consentement</strong> à tout moment, sans rétroactivité</li>
|
||||
</ul>
|
||||
<p>
|
||||
Pour exercer ces droits, écrivez-nous à
|
||||
<a href="mailto:privacy@rubis.pro">privacy@rubis.pro</a> en
|
||||
précisant l'email associé à votre compte. Nous répondons dans un délai maximal d'un
|
||||
mois (extensible à trois mois pour les demandes complexes, avec information dans le
|
||||
mois initial).
|
||||
</p>
|
||||
|
||||
<h2 id="cookies">7. Cookies</h2>
|
||||
<p>
|
||||
Nous utilisons exclusivement des <strong>cookies strictement nécessaires</strong>
|
||||
au fonctionnement du service. Aucun cookie publicitaire ni de mesure d'audience
|
||||
tierce n'est déposé.
|
||||
</p>
|
||||
<table class="def-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Cookie</th>
|
||||
<th>Rôle & durée</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>rubis_refresh</code></td>
|
||||
<td>Cookie httpOnly maintenant la session connectée. Durée : 30 jours.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>localStorage <code>access_token</code></td>
|
||||
<td>
|
||||
Token JWT de courte durée (30 min) pour authentifier les appels API. Pas un
|
||||
cookie au sens technique mais un stockage local du navigateur.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>localStorage <code>rubis.sidebar.collapsed</code></td>
|
||||
<td>Préférence d'affichage (sidebar repliée ou non). Aucun tracking.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="securite">8. Sécurité</h2>
|
||||
<p>
|
||||
Nous appliquons les mesures de sécurité usuelles pour un service SaaS :
|
||||
</p>
|
||||
<ul>
|
||||
<li>Chiffrement des connexions TLS 1.2+ (Let's Encrypt)</li>
|
||||
<li>Mots de passe hashés via Argon2id (pas de stockage en clair)</li>
|
||||
<li>Tokens d'API rotatés (access tokens 30 min, refresh tokens 30 jours)</li>
|
||||
<li>Restrictions d'accès aux clés Stripe par IP allowlist</li>
|
||||
<li>Sauvegardes chiffrées de la base de données</li>
|
||||
<li>Logs d'accès conservés et audités en cas d'incident</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="reclamation">9. Réclamation auprès de la CNIL</h2>
|
||||
<p>
|
||||
Si vous estimez, après nous avoir contactés, que vos droits ne sont pas respectés,
|
||||
vous pouvez adresser une réclamation à la
|
||||
<a href="https://www.cnil.fr/fr/plaintes" target="_blank" rel="noopener">
|
||||
Commission Nationale de l'Informatique et des Libertés (CNIL)
|
||||
</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="evolutions">10. Évolutions de cette politique</h2>
|
||||
<p>
|
||||
Nous pouvons modifier cette politique pour refléter des évolutions légales,
|
||||
techniques ou organisationnelles. Toute modification substantielle sera annoncée
|
||||
par email aux utilisateurs concernés au moins 30 jours avant son entrée en vigueur.
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="legal-footer">
|
||||
<div class="container">
|
||||
<a href="/" class="brand">
|
||||
<svg class="gem-svg" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
||||
<polygon points="100,10 190,100 100,190 10,100" fill="#9F1239" />
|
||||
</svg>
|
||||
Rubis sur l'ongle
|
||||
</a>
|
||||
<nav>
|
||||
<a href="/">Accueil</a>
|
||||
<a href="https://app.rubis.pro">Lancer Rubis</a>
|
||||
<a href="/mentions-legales.html">Mentions légales</a>
|
||||
<a href="/confidentialite.html">Confidentialité</a>
|
||||
</nav>
|
||||
<div>© 2026 · Made in France 🇫🇷</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@ -208,6 +208,15 @@
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Layout commun pour 1-2 boutons côte-à-côte */
|
||||
.cta-row {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
/* === BRAND MARK === */
|
||||
.brand {
|
||||
display: inline-flex;
|
||||
@ -1911,7 +1920,7 @@
|
||||
<a href="#how" class="nav-link">Comment ça marche</a>
|
||||
<a href="#pricing" class="nav-link">Tarifs</a>
|
||||
<a href="#faq" class="nav-link">FAQ</a>
|
||||
<a href="#waitlist" class="nav-cta">Rejoindre la waitlist</a>
|
||||
<a href="https://app.rubis.pro" class="nav-cta">Lancer Rubis</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
@ -1927,21 +1936,18 @@
|
||||
moyenne
|
||||
<b>5 heures par semaine</b>.
|
||||
</p>
|
||||
<form class="waitlist-form" id="heroForm" action="#" method="post" novalidate>
|
||||
<input type="email" name="email" placeholder="votre@entreprise.fr" required aria-label="Votre adresse email">
|
||||
<button type="submit">Rejoindre la waitlist →</button>
|
||||
</form>
|
||||
<div class="form-success" id="heroSuccess">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="20 6 9 17 4 12" />
|
||||
</svg>
|
||||
On vous écrit dès qu'on ouvre les premiers comptes. Merci.
|
||||
<div class="cta-row">
|
||||
<a href="https://app.rubis.pro" class="btn btn-primary">
|
||||
Lancer Rubis →
|
||||
</a>
|
||||
<a href="#pricing" class="btn btn-secondary">
|
||||
Voir les tarifs
|
||||
</a>
|
||||
</div>
|
||||
<div class="trust">
|
||||
<span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<polyline points="20 6 9 17 4 12" />
|
||||
</svg> 14 jours offerts au lancement</span>
|
||||
</svg> 3 mois gratuits puis Free 5 factures</span>
|
||||
<span class="dot"></span>
|
||||
<span>Hébergement souverain</span>
|
||||
<span class="dot"></span>
|
||||
@ -2495,22 +2501,16 @@
|
||||
</section>
|
||||
|
||||
<!-- ============== FINAL CTA ============== -->
|
||||
<section class="final-cta" id="waitlist">
|
||||
<section class="final-cta" id="lancer">
|
||||
<div class="container">
|
||||
<h2>Récupérez vos premières heures dès le lancement.</h2>
|
||||
<p>On lance les premiers comptes au printemps 2026. Inscrivez-vous, vous serez prévenu en priorité.</p>
|
||||
<form class="waitlist-form" id="footerForm" action="#" method="post" novalidate>
|
||||
<input type="email" name="email" placeholder="votre@entreprise.fr" required aria-label="Votre adresse email">
|
||||
<button type="submit">Rejoindre la waitlist</button>
|
||||
</form>
|
||||
<div class="form-success" id="footerSuccess" style="margin: 16px auto 0; max-width: 480px;">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="20 6 9 17 4 12" />
|
||||
</svg>
|
||||
On vous écrit dès qu'on ouvre les premiers comptes. Merci.
|
||||
<h2>Récupérez vos premières heures dès aujourd'hui.</h2>
|
||||
<p>3 mois gratuits illimités, puis le plan Free continue avec 5 factures actives. Pas de carte demandée pour démarrer.</p>
|
||||
<div class="cta-row" style="justify-content: center; margin-top: 24px;">
|
||||
<a href="https://app.rubis.pro" class="btn btn-primary">
|
||||
Lancer Rubis →
|
||||
</a>
|
||||
</div>
|
||||
<p class="micro">On vous écrit une fois — quand on ouvre les premiers comptes. Pas avant.</p>
|
||||
<p class="micro">Inscription en 30 secondes. Annulation 1-clic à tout moment.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@ -2532,14 +2532,15 @@
|
||||
<polygon points="100,10 190,100 100,190 10,100" fill="#9F1239" />
|
||||
<line x1="10" y1="100" x2="190" y2="100" stroke="rgba(255,255,255,0.55)" stroke-width="3" />
|
||||
</svg>
|
||||
Rubis Sur l'Ongle
|
||||
Rubis sur l'ongle
|
||||
</a>
|
||||
<nav>
|
||||
<a href="#how">Comment ça marche</a>
|
||||
<a href="#pricing">Tarifs</a>
|
||||
<a href="#faq">FAQ</a>
|
||||
<a href="#">Mentions légales</a>
|
||||
<a href="#">RGPD</a>
|
||||
<a href="https://app.rubis.pro">Lancer Rubis</a>
|
||||
<a href="/mentions-legales.html">Mentions légales</a>
|
||||
<a href="/confidentialite.html">Confidentialité</a>
|
||||
</nav>
|
||||
<div class="copy">© 2026 · Made in France 🇫🇷</div>
|
||||
</div>
|
||||
@ -2552,22 +2553,6 @@
|
||||
if (window.scrollY > 8) header.classList.add('scrolled');
|
||||
else header.classList.remove('scrolled');
|
||||
});
|
||||
|
||||
// Form handling — replace action with real endpoint (Resend, Formspree, Tally, etc.)
|
||||
function bindForm(formId, successId) {
|
||||
const form = document.getElementById(formId);
|
||||
const success = document.getElementById(successId);
|
||||
if (!form) return;
|
||||
form.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
// TODO: POST to /api/waitlist or chosen provider
|
||||
// For now: just show success state
|
||||
form.style.display = 'none';
|
||||
success.classList.add('visible');
|
||||
});
|
||||
}
|
||||
bindForm('heroForm', 'heroSuccess');
|
||||
bindForm('footerForm', 'footerSuccess');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
174
landing/mentions-legales.html
Normal file
174
landing/mentions-legales.html
Normal file
@ -0,0 +1,174 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#9F1239" />
|
||||
<meta name="description" content="Mentions légales du site Rubis sur l'ongle." />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="/site.webmanifest" />
|
||||
<link rel="stylesheet" href="/_legal-shell.css" />
|
||||
<title>Mentions légales · Rubis sur l'ongle</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="legal-header">
|
||||
<div class="container">
|
||||
<a href="/" class="brand">
|
||||
<svg class="gem-svg" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
||||
<polygon points="100,10 190,100 100,190 10,100" fill="#9F1239" />
|
||||
<line x1="10" y1="100" x2="190" y2="100" stroke="rgba(255,255,255,0.55)" stroke-width="3" />
|
||||
<line x1="55" y1="55" x2="100" y2="100" stroke="rgba(255,255,255,0.4)" stroke-width="2" />
|
||||
<line x1="145" y1="55" x2="100" y2="100" stroke="rgba(255,255,255,0.4)" stroke-width="2" />
|
||||
</svg>
|
||||
<span>Rubis<span class="brand-suffix">sur l'ongle</span></span>
|
||||
</a>
|
||||
<a href="/" class="back-link">← Retour à l'accueil</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="legal-main">
|
||||
<div class="container">
|
||||
<p class="eyebrow">Informations légales</p>
|
||||
<h1>Mentions <em>légales</em></h1>
|
||||
<p class="lede">
|
||||
Conformément aux articles 6-III et 19 de la Loi n° 2004-575 du 21 juin 2004 pour la
|
||||
confiance dans l'économie numérique (LCEN), voici les informations relatives à
|
||||
l'éditeur, à l'hébergeur et aux conditions d'utilisation du site.
|
||||
</p>
|
||||
<p class="last-updated">Dernière mise à jour : 7 mai 2026</p>
|
||||
|
||||
<div class="toc" aria-label="Sommaire">
|
||||
<p class="toc-title">Sommaire</p>
|
||||
<ol>
|
||||
<li><a href="#editeur">Éditeur du site</a></li>
|
||||
<li><a href="#hebergeur">Hébergement</a></li>
|
||||
<li><a href="#publication">Directeur de la publication</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li><a href="#propriete">Propriété intellectuelle</a></li>
|
||||
<li><a href="#responsabilite">Limitation de responsabilité</a></li>
|
||||
<li><a href="#liens">Liens externes</a></li>
|
||||
<li><a href="#cookies">Cookies</a></li>
|
||||
<li><a href="#droit">Droit applicable</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h2 id="editeur">1. Éditeur du site</h2>
|
||||
<p>
|
||||
Le site <strong>rubis.pro</strong> (ainsi que l'application
|
||||
<strong>app.rubis.pro</strong>) est édité par :
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Arthur Barré</strong>, entrepreneur individuel.</li>
|
||||
<li>Adresse postale : <em>à compléter lors de la mise en service commerciale</em>.</li>
|
||||
<li>SIRET : <em>en cours d'attribution</em>.</li>
|
||||
<li>Numéro de TVA intracommunautaire : <em>non applicable (franchise en base de TVA)</em>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="hebergeur">2. Hébergement</h2>
|
||||
<p>
|
||||
Le site et l'application sont hébergés sur une infrastructure auto-hébergée en France
|
||||
(serveurs Proxmox + cluster Kubernetes K3s) administrée directement par l'éditeur.
|
||||
Toutes les données utilisateurs (factures, emails) sont stockées sur ce même
|
||||
environnement, sans externalisation à un cloud tiers grand public.
|
||||
</p>
|
||||
<p>
|
||||
Les données techniques (paiements, emails sortants, OCR) transitent par les
|
||||
sous-traitants listés dans la
|
||||
<a href="/confidentialite.html">politique de confidentialité</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="publication">3. Directeur de la publication</h2>
|
||||
<p>
|
||||
<strong>Arthur Barré</strong>, en sa qualité d'éditeur, est responsable de la
|
||||
publication du contenu du site et de l'application Rubis sur l'ongle.
|
||||
</p>
|
||||
|
||||
<h2 id="contact">4. Contact</h2>
|
||||
<div class="callout">
|
||||
<p>
|
||||
<strong>Email général</strong> :
|
||||
<a href="mailto:contact@rubis.pro">contact@rubis.pro</a>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
Pour les demandes liées aux données personnelles ou pour exercer vos droits RGPD,
|
||||
consultez notre <a href="/confidentialite.html">politique de confidentialité</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="propriete">5. Propriété intellectuelle</h2>
|
||||
<p>
|
||||
L'ensemble des contenus présents sur le site et l'application — y compris les textes,
|
||||
la marque "Rubis sur l'ongle", le logo (◆), les illustrations, la palette graphique,
|
||||
le code source des templates et de l'application — sont la propriété exclusive
|
||||
d'Arthur Barré ou font l'objet d'une autorisation d'utilisation.
|
||||
</p>
|
||||
<p>
|
||||
Toute reproduction, représentation, modification, publication ou adaptation totale
|
||||
ou partielle des éléments du site, quel que soit le moyen ou le procédé utilisé, est
|
||||
interdite sans autorisation écrite préalable.
|
||||
</p>
|
||||
|
||||
<h2 id="responsabilite">6. Limitation de responsabilité</h2>
|
||||
<p>
|
||||
L'éditeur s'efforce d'assurer au mieux l'exactitude et la mise à jour des informations
|
||||
présentées. Cependant, il ne peut garantir l'absence d'erreurs ou d'omissions et
|
||||
décline toute responsabilité quant à l'usage qui pourrait être fait du contenu.
|
||||
</p>
|
||||
<p>
|
||||
Concernant l'application Rubis, l'éditeur met à disposition un outil d'assistance à
|
||||
la relance automatisée. <strong>L'utilisateur reste seul responsable</strong> du
|
||||
contenu des relances envoyées à ses clients, du respect de la législation applicable
|
||||
(notamment la LME pour les délais de paiement) et de la qualification éventuelle
|
||||
d'une mise en demeure.
|
||||
</p>
|
||||
|
||||
<h2 id="liens">7. Liens externes</h2>
|
||||
<p>
|
||||
Le site peut contenir des liens vers des sites tiers (notamment les pages
|
||||
réglementaires de Stripe, Resend ou la CNIL). L'éditeur n'exerce aucun contrôle
|
||||
sur ces sites et décline toute responsabilité quant à leur contenu ou aux pratiques
|
||||
de confidentialité qui leur sont propres.
|
||||
</p>
|
||||
|
||||
<h2 id="cookies">8. Cookies</h2>
|
||||
<p>
|
||||
Le site landing <em>rubis.pro</em> ne dépose aucun cookie de mesure
|
||||
d'audience ni de traçage publicitaire. L'application
|
||||
<em>app.rubis.pro</em> utilise uniquement des cookies <strong>strictement
|
||||
nécessaires</strong> au fonctionnement (session d'authentification, refresh tokens).
|
||||
Les détails sont décrits dans la
|
||||
<a href="/confidentialite.html">politique de confidentialité</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="droit">9. Droit applicable et juridiction</h2>
|
||||
<p>
|
||||
Les présentes mentions légales sont régies par le droit français. En cas de litige
|
||||
ou de désaccord, et après tentative de recherche d'une solution amiable, compétence
|
||||
est attribuée aux tribunaux français compétents, conformément aux règles de
|
||||
procédure en vigueur.
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="legal-footer">
|
||||
<div class="container">
|
||||
<a href="/" class="brand">
|
||||
<svg class="gem-svg" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
|
||||
<polygon points="100,10 190,100 100,190 10,100" fill="#9F1239" />
|
||||
</svg>
|
||||
Rubis sur l'ongle
|
||||
</a>
|
||||
<nav>
|
||||
<a href="/">Accueil</a>
|
||||
<a href="https://app.rubis.pro">Lancer Rubis</a>
|
||||
<a href="/mentions-legales.html">Mentions légales</a>
|
||||
<a href="/confidentialite.html">Confidentialité</a>
|
||||
</nav>
|
||||
<div>© 2026 · Made in France 🇫🇷</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user