<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>AfriTaste Manager — Privacy Policy</title>
<meta name="description" content="AfriTaste Manager privacy policy (FR/EN) — GDPR-ready. Support: support@delishafrica.me" />
<meta name="robots" content="index,follow" />
<style>
:root{
--bg:#07080b;
--card:#0d0f14;
--text:#f3f4f6;
--muted:#a8b0bf;
--line:rgba(255,255,255,.08);
--gold:#d6b45b;
--gold2:#f6e2a9;
--shadow: 0 18px 60px rgba(0,0,0,.55);
--radius:18px;
}
*{box-sizing:border-box}
body{
margin:0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Noto Sans", Arial;
background:
radial-gradient(900px 500px at 15% -10%, rgba(214,180,91,.18), transparent 60%),
radial-gradient(900px 500px at 85% 0%, rgba(246,226,169,.12), transparent 55%),
radial-gradient(900px 500px at 50% 110%, rgba(214,180,91,.10), transparent 55%),
var(--bg);
color:var(--text);
line-height:1.6;
}
a{color:var(--gold2); text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:980px; margin:0 auto; padding:36px 18px 60px}
.topbar{
display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
padding:14px 16px;
border:1px solid var(--line);
border-radius:999px;
background:rgba(13,15,20,.65);
backdrop-filter: blur(10px);
box-shadow: var(--shadow);
}
.brand{
display:flex; align-items:center; gap:10px; min-width:260px;
}
.mark{
width:34px;height:34px;border-radius:10px;
border:1px solid rgba(214,180,91,.35);
background:
radial-gradient(circle at 30% 30%, rgba(246,226,169,.35), transparent 60%),
linear-gradient(180deg, rgba(214,180,91,.18), rgba(255,255,255,.02));
display:grid; place-items:center;
color:var(--gold2);
font-weight:800;
}
.brand h1{font-size:14px; margin:0; letter-spacing:.2px}
.brand p{margin:0; font-size:12px; color:var(--muted)}
.actions{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.pill{
border:1px solid var(--line);
background:rgba(255,255,255,.03);
color:var(--muted);
padding:8px 12px;
border-radius:999px;
font-size:13px;
white-space:nowrap;
}
.lang{
border:1px solid rgba(214,180,91,.35);
background:rgba(214,180,91,.10);
color:var(--text);
padding:8px 12px;
border-radius:999px;
font-weight:700;
font-size:13px;
cursor:pointer;
}
.lang[aria-pressed="true"]{
background:linear-gradient(180deg, rgba(214,180,91,.28), rgba(214,180,91,.10));
border-color: rgba(246,226,169,.55);
color: #fff;
}
.hero{
margin-top:18px;
padding:28px 18px;
border:1px solid var(--line);
border-radius: var(--radius);
background:rgba(13,15,20,.55);
backdrop-filter: blur(10px);
box-shadow: var(--shadow);
}
.hero h2{margin:0 0 8px; font-size:22px; letter-spacing:.2px}
.hero .sub{margin:0; color:var(--muted)}
.grid{
display:grid;
grid-template-columns: 1.2fr .8fr;
gap:14px;
margin-top:14px;
}
@media (max-width: 860px){ .grid{grid-template-columns:1fr} }
.card{
border:1px solid var(--line);
border-radius: var(--radius);
background:rgba(13,15,20,.65);
box-shadow: var(--shadow);
padding:18px;
}
.card h3{margin:0 0 10px; font-size:16px; letter-spacing:.2px}
.card p{margin:0 0 10px; color:var(--muted)}
.card ul{margin:8px 0 0 18px; color:var(--muted)}
.card li{margin:6px 0}
.k{
display:inline-block;
padding:2px 8px;
border-radius:10px;
border:1px solid rgba(214,180,91,.35);
color:var(--gold2);
background:rgba(214,180,91,.08);
font-size:12px;
font-weight:700;
}
.doc{margin-top:14px}
.doc h4{margin:18px 0 8px; font-size:15px}
.doc p, .doc li{color:var(--muted)}
.doc hr{border:none; border-top:1px solid var(--line); margin:18px 0}
.footer{
margin-top:18px;
padding:16px 18px;
border:1px solid var(--line);
border-radius: var(--radius);
background:rgba(13,15,20,.55);
color:var(--muted);
display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap;
}
.sig{color:#c9cfdb}
.fine{font-size:12px; opacity:.9}
.hide{display:none}
</style>
</head>
<body>
<div class="wrap">
<div class="topbar">
<div class="brand">
<div class="mark">A</div>
<div>
<h1>AfriTaste Manager</h1>
<p>Legal • Privacy • Terms • Support</p>
</div>
</div>
<div class="actions">
<span class="pill">Support: <a href="mailto:support@delishafrica.me">support@delishafrica.me</a></span>
<button class="lang" id="btn-fr" aria-pressed="true" type="button">FR</button>
<button class="lang" id="btn-en" aria-pressed="false" type="button">EN</button>
</div>
</div>
<div class="hero">
<h2 id="title">Politique de confidentialité</h2>
<p class="sub" id="subtitle">
AfriTaste Manager est une application professionnelle pour gérer l’activité d’un restaurant.
Cette page est publique (sans login) pour répondre aux exigences App Store et RGPD.
</p>
<div class="grid">
<div class="card">
<h3 id="summaryTitle">Résumé rapide</h3>
<ul id="summaryList">
<li><span class="k">Pas de vente</span> de données personnelles.</li>
<li><span class="k">Pas de pub ciblée</span> dans l’app.</li>
<li><span class="k">Collecte minimale</span> : compte, sécurité, diagnostics.</li>
<li><span class="k">Bilingue FR/EN</span> (version finale), Europe & Afrique en priorité.</li>
</ul>
</div>
<div class="card">
<h3 id="metaTitle">Informations</h3>
<p><span class="k" id="effectiveLabel">Date d’entrée en vigueur</span></p>
<p id="effectiveDate">13/01/2026</p>
<p style="margin-top:10px"><span class="k" id="controllerLabel">Contact</span></p>
<p><a href="mailto:support@delishafrica.me">support@delishafrica.me</a></p>
</div>
</div>
</div>
<!-- ===== FR ===== -->
<div id="doc-fr" class="card doc" style="margin-top:14px">
<h3>Politique de confidentialité — AfriTaste Manager</h3>
<p>
AfriTaste Manager (“nous”) traite certaines données pour fournir l’application, sécuriser les accès et améliorer la stabilité.
Cette politique s’applique aux versions iOS/Android de l’application.
</p>
<h4>1) Responsable du traitement</h4>
<p>AfriTaste Manager (DelishAfrica). Contact : <a href="mailto:support@delishafrica.me">support@delishafrica.me</a></p>
<h4>2) Données traitées</h4>
<ul>
<li><strong>Données de compte</strong> : email/identifiant, rôles (owner/staff/readonly), jetons d’authentification (OAuth/Keycloak).</li>
<li><strong>Données d’activité</strong> : actions et événements nécessaires au service (ex. consultation/gestion de commandes).</li>
<li><strong>Données techniques</strong> : diagnostics (erreurs, crash) et journaux techniques pour la qualité et la sécurité.</li>
</ul>
<h4>3) Finalités & bases légales (RGPD)</h4>
<ul>
<li><strong>Fourniture du service</strong> (exécution du contrat) : authentification, fonctionnalités métier.</li>
<li><strong>Sécurité</strong> (intérêt légitime) : contrôle d’accès, prévention d’abus.</li>
<li><strong>Stabilité</strong> (intérêt légitime) : analyse d’erreurs et amélioration.</li>
</ul>
<h4>4) Partage des données</h4>
<p>
Nous partageons uniquement avec des prestataires nécessaires (hébergement, sécurité, distribution).
Ils agissent comme sous-traitants et n’utilisent pas vos données pour leurs propres finalités.
</p>
<h4>5) Conservation</h4>
<ul>
<li>Données de compte : tant que le compte est actif.</li>
<li>Diagnostics/logs : durée nécessaire à la sécurité et à l’amélioration, puis suppression/anonymisation.</li>
</ul>
<h4>6) Transferts hors UE</h4>
<p>
Selon l’emplacement de certains prestataires, des traitements peuvent avoir lieu hors EEE.
Le cas échéant, des garanties appropriées sont mises en place (ex. clauses contractuelles types).
</p>
<h4>7) Sécurité</h4>
<p>Chiffrement en transit (HTTPS/TLS), contrôle d’accès, principes de moindre privilège.</p>
<h4>8) Vos droits</h4>
<p>
Accès, rectification, effacement, limitation, opposition, portabilité.
Contact : <a href="mailto:support@delishafrica.me">support@delishafrica.me</a>
</p>
<hr />
<h3>Conditions d’utilisation (résumé)</h3>
<ul>
<li>Usage professionnel : réservé aux comptes autorisés.</li>
<li>Ne pas tenter d’altérer la sécurité ou les accès.</li>
<li>Les fonctionnalités “coming soon” peuvent évoluer sans préavis.</li>
</ul>
</div>
<!-- ===== EN ===== -->
<div id="doc-en" class="card doc hide" style="margin-top:14px">
<h3>Privacy Policy — AfriTaste Manager</h3>
<p>
AfriTaste Manager (“we”) processes some data to deliver the app, secure access, and improve stability.
This policy applies to iOS/Android versions of the app.
</p>
<h4>1) Data Controller</h4>
<p>AfriTaste Manager (DelishAfrica). Contact: <a href="mailto:support@delishafrica.me">support@delishafrica.me</a></p>
<h4>2) Data We Process</h4>
<ul>
<li><strong>Account data</strong>: email/identifier, roles (owner/staff/readonly), auth tokens (OAuth/Keycloak).</li>
<li><strong>Activity data</strong>: events needed to provide the service (e.g., viewing/managing orders).</li>
<li><strong>Technical data</strong>: diagnostics (errors/crashes) and logs for quality and security.</li>
</ul>
<h4>3) Purposes & Legal Bases</h4>
<ul>
<li><strong>Provide the service</strong> (contract): authentication and core business features.</li>
<li><strong>Security</strong> (legitimate interest): access control and abuse prevention.</li>
<li><strong>Stability</strong> (legitimate interest): troubleshooting and improvement.</li>
</ul>
<h4>4) Sharing</h4>
<p>
We only share data with necessary providers (hosting, security, distribution).
They act as processors and do not use data for their own purposes.
</p>
<h4>5) Retention</h4>
<ul>
<li>Account data: kept while the account is active.</li>
<li>Diagnostics/logs: kept as needed, then deleted or anonymized.</li>
</ul>
<h4>6) International Transfers</h4>
<p>
Depending on provider locations, processing may occur outside the EEA.
Where applicable, appropriate safeguards apply (e.g., SCCs).
</p>
<h4>7) Security</h4>
<p>Encryption in transit (HTTPS/TLS), access control, least-privilege principles.</p>
<h4>8) Your Rights</h4>
<p>
Access, correction, deletion, restriction, objection, portability.
Contact: <a href="mailto:support@delishafrica.me">support@delishafrica.me</a>
</p>
<hr />
<h3>Terms of Use (summary)</h3>
<ul>
<li>Business use only: authorized accounts required.</li>
<li>No attempts to bypass security or access controls.</li>
<li>“Coming soon” features may change without notice.</li>
</ul>
</div>
<div class="footer" id="support">
<div>
<div class="sig"><strong>Support</strong> — <a href="mailto:support@delishafrica.me">support@delishafrica.me</a></div>
<div class="fine">Europe & Africa first • FR/EN bilingual final version • AfriTaste Manager</div>
</div>
<div class="fine">Signature Tonton • AfriTaste Manager</div>
</div>
</div>
<script>
const frBtn = document.getElementById('btn-fr');
const enBtn = document.getElementById('btn-en');
const frDoc = document.getElementById('doc-fr');
const enDoc = document.getElementById('doc-en');
const title = document.getElementById('title');
const subtitle = document.getElementById('subtitle');
const summaryTitle = document.getElementById('summaryTitle');
const metaTitle = document.getElementById('metaTitle');
const effectiveLabel = document.getElementById('effectiveLabel');
const controllerLabel = document.getElementById('controllerLabel');
function setLang(lang){
const isFR = lang === 'fr';
frBtn.setAttribute('aria-pressed', isFR ? 'true':'false');
enBtn.setAttribute('aria-pressed', !isFR ? 'true':'false');
frDoc.classList.toggle('hide', !isFR);
enDoc.classList.toggle('hide', isFR);
if(isFR){
title.textContent = "Politique de confidentialité";
subtitle.textContent = "AfriTaste Manager est une application professionnelle pour gérer l’activité d’un restaurant. Cette page est publique (sans login) pour répondre aux exigences App Store et RGPD.";
summaryTitle.textContent = "Résumé rapide";
metaTitle.textContent = "Informations";
effectiveLabel.textContent = "Date d’entrée en vigueur";
controllerLabel.textContent = "Contact";
document.documentElement.lang = "fr";
} else {
title.textContent = "Privacy Policy";
subtitle.textContent = "AfriTaste Manager is a professional app for restaurant operations. This page is public (no login) to meet App Store and GDPR requirements.";
summaryTitle.textContent = "Quick summary";
metaTitle.textContent = "Info";
effectiveLabel.textContent = "Effective date";
controllerLabel.textContent = "Contact";
document.documentElement.lang = "en";
}
}
frBtn.addEventListener('click', () => setLang('fr'));
enBtn.addEventListener('click', () => setLang('en'));
</script>
</body>
</html>