CognxSafeTrack commited on
Commit ·
fb2b5c3
1
Parent(s): 8f86281
feat: add /privacy route for Meta app publication requirement
Browse files- apps/api/src/index.ts +81 -0
apps/api/src/index.ts
CHANGED
|
@@ -78,6 +78,87 @@ server.get('/health', async () => {
|
|
| 78 |
return { status: 'ok', timestamp: new Date().toISOString() };
|
| 79 |
});
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
// ── Start Server ───────────────────────────────────────────────────────────────
|
| 82 |
const start = async () => {
|
| 83 |
try {
|
|
|
|
| 78 |
return { status: 'ok', timestamp: new Date().toISOString() };
|
| 79 |
});
|
| 80 |
|
| 81 |
+
// ── Privacy Policy (required by Meta for app publication) ──────────────────────
|
| 82 |
+
server.get('/privacy', async (_req, reply) => {
|
| 83 |
+
const html = `<!DOCTYPE html>
|
| 84 |
+
<html lang="fr">
|
| 85 |
+
<head>
|
| 86 |
+
<meta charset="UTF-8" />
|
| 87 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 88 |
+
<title>Politique de Confidentialité — SafeTrack.edu</title>
|
| 89 |
+
<style>
|
| 90 |
+
body { font-family: system-ui, sans-serif; max-width: 760px; margin: 40px auto; padding: 0 20px; color: #1e293b; line-height: 1.7; }
|
| 91 |
+
h1 { font-size: 2rem; margin-bottom: 4px; }
|
| 92 |
+
h2 { font-size: 1.2rem; margin-top: 2rem; color: #0f172a; }
|
| 93 |
+
p, li { color: #334155; }
|
| 94 |
+
a { color: #059669; }
|
| 95 |
+
.updated { color: #94a3b8; font-size: 0.9rem; }
|
| 96 |
+
</style>
|
| 97 |
+
</head>
|
| 98 |
+
<body>
|
| 99 |
+
<h1>Politique de Confidentialité</h1>
|
| 100 |
+
<p class="updated">Dernière mise à jour : 21 février 2026</p>
|
| 101 |
+
|
| 102 |
+
<h2>1. Qui sommes-nous ?</h2>
|
| 103 |
+
<p>SafeTrack.edu est une plateforme d'éducation entrepreneuriale accessible via WhatsApp, opérée par SafeTrack. Contact : <a href="mailto:contact@sedaptech.com">contact@sedaptech.com</a></p>
|
| 104 |
+
|
| 105 |
+
<h2>2. Données collectées</h2>
|
| 106 |
+
<p>Lors de votre inscription et utilisation du service, nous collectons :</p>
|
| 107 |
+
<ul>
|
| 108 |
+
<li>Votre numéro de téléphone WhatsApp</li>
|
| 109 |
+
<li>La langue choisie (Français ou Wolof)</li>
|
| 110 |
+
<li>Votre secteur d'activité / projet professionnel (fourni volontairement)</li>
|
| 111 |
+
<li>Vos réponses aux exercices et contenus pédagogiques</li>
|
| 112 |
+
<li>Les métadonnées de vos messages (horodatage, type de message)</li>
|
| 113 |
+
</ul>
|
| 114 |
+
|
| 115 |
+
<h2>3. Utilisation des données</h2>
|
| 116 |
+
<p>Vos données sont utilisées pour :</p>
|
| 117 |
+
<ul>
|
| 118 |
+
<li>Vous envoyer des leçons quotidiennes personnalisées via WhatsApp</li>
|
| 119 |
+
<li>Personnaliser le contenu pédagogique à votre secteur d'activité</li>
|
| 120 |
+
<li>Générer des documents AI (One-Pager PDF, Pitch Deck) basés sur votre parcours</li>
|
| 121 |
+
<li>Améliorer la qualité de nos formations</li>
|
| 122 |
+
<li>Traiter vos paiements pour les formations premium</li>
|
| 123 |
+
</ul>
|
| 124 |
+
|
| 125 |
+
<h2>4. Partage des données</h2>
|
| 126 |
+
<p>Nous ne vendons jamais vos données. Elles peuvent être partagées uniquement avec :</p>
|
| 127 |
+
<ul>
|
| 128 |
+
<li><strong>Meta / WhatsApp</strong> — pour l'acheminement des messages</li>
|
| 129 |
+
<li><strong>OpenAI</strong> — pour la génération et personnalisation du contenu pédagogique</li>
|
| 130 |
+
<li><strong>Stripe</strong> — pour le traitement sécurisé des paiements</li>
|
| 131 |
+
<li><strong>Cloudflare</strong> — pour le stockage des documents générés</li>
|
| 132 |
+
</ul>
|
| 133 |
+
|
| 134 |
+
<h2>5. Conservation des données</h2>
|
| 135 |
+
<p>Vos données sont conservées pendant toute la durée de votre inscription active. Vous pouvez demander la suppression de vos données à tout moment en envoyant un e-mail à <a href="mailto:contact@sedaptech.com">contact@sedaptech.com</a>.</p>
|
| 136 |
+
|
| 137 |
+
<h2>6. Vos droits</h2>
|
| 138 |
+
<p>Conformément au RGPD et aux lois applicables, vous disposez du droit de :</p>
|
| 139 |
+
<ul>
|
| 140 |
+
<li>Accéder à vos données personnelles</li>
|
| 141 |
+
<li>Corriger les données inexactes</li>
|
| 142 |
+
<li>Demander la suppression de vos données</li>
|
| 143 |
+
<li>Vous opposer au traitement de vos données</li>
|
| 144 |
+
</ul>
|
| 145 |
+
<p>Pour exercer ces droits, contactez-nous à : <a href="mailto:contact@sedaptech.com">contact@sedaptech.com</a></p>
|
| 146 |
+
|
| 147 |
+
<h2>7. Sécurité</h2>
|
| 148 |
+
<p>Vos données sont protégées par chiffrement (TLS en transit, AES au repos). L'accès aux données est strictement limité aux systèmes nécessaires au fonctionnement du service.</p>
|
| 149 |
+
|
| 150 |
+
<h2>8. Modifications</h2>
|
| 151 |
+
<p>Cette politique peut être mise à jour. En cas de modification majeure, vous serez informé via WhatsApp.</p>
|
| 152 |
+
|
| 153 |
+
<h2>9. Contact</h2>
|
| 154 |
+
<p>Pour toute question relative à cette politique : <a href="mailto:contact@sedaptech.com">contact@sedaptech.com</a></p>
|
| 155 |
+
</body>
|
| 156 |
+
</html>`;
|
| 157 |
+
return reply.code(200).type('text/html').send(html);
|
| 158 |
+
});
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
|
| 162 |
// ── Start Server ───────────────────────────────────────────────────────────────
|
| 163 |
const start = async () => {
|
| 164 |
try {
|