/** * Texte de la page Confidentialite. * * Centralise ici pour qu'un exploitant puisse l'adapter a son instance sans * fouiller dans les composants. Volontairement factuel : ce sont des faits * verifiables sur le fonctionnement de l'application, pas un texte juridique * invente. * * `{app}` est remplace par le nom de l'instance. */ export interface PrivacySection { title: string; paragraphs: string[]; bullets?: string[]; } export const PRIVACY_INTRO = "{app} fonctionne d'abord dans votre navigateur. Cette page decrit ce qui reste sur " + 'votre appareil, ce qui part vers le serveur, et a quel moment.'; export const PRIVACY_SECTIONS: PrivacySection[] = [ { title: 'Vos cartes restent sur cet appareil', paragraphs: [ "Les cartes que vous creez sont enregistrees dans l'IndexedDB de ce navigateur. " + "Elles ne sont pas envoyees au serveur, qui n'en a donc aucune connaissance.", 'Consequence directe : vider les donnees du site, changer de navigateur ou de ' + 'machine vous fait perdre ces cartes. Exportez-les en .mmap pour en garder une ' + 'copie portable.', ], }, { title: 'Le partage est une action explicite', paragraphs: [ "Quand vous creez un lien de partage, et seulement a ce moment, une copie de la " + 'carte est envoyee au serveur et enregistree dans sa base de donnees.', ], bullets: [ 'Le lien obtenu est non repertorie : il ne figure dans aucune liste publique.', "Il n'est pas protege par un mot de passe : toute personne qui connait le lien " + 'peut consulter la carte.', 'La copie serveur reste figee tant que vous ne demandez pas sa mise a jour.', "Elle est conservee jusqu'a son expiration, ou jusqu'a ce que vous la supprimiez.", ], }, { title: 'La cle de gestion', paragraphs: [ 'Mettre a jour ou supprimer un partage demande une cle de gestion, generee au ' + 'moment du partage. Le serveur ne stocke que son empreinte : il ne peut donc ' + 'pas la retrouver, et personne ne peut vous la redonner.', "Elle reste dans ce navigateur. Vous pouvez l'exporter dans un fichier pour la " + 'conserver ailleurs, puis la reimporter depuis un autre navigateur.', ], }, { title: 'Aucun compte, aucune publicite, aucune telemetrie', paragraphs: [ "{app} ne demande aucune inscription et ne cree aucun profil utilisateur. " + "L'application n'affiche aucune publicite et n'envoie aucune statistique " + "d'usage : il n'existe pas de code de mesure d'audience dans le projet.", "Les seules requetes reseau sont celles vers cette instance : la configuration " + "publique, et les partages que vous creez ou consultez. Aucune ressource n'est " + 'chargee depuis un service tiers.', ], }, { title: 'Journaux du serveur', paragraphs: [ "Le serveur journalise les requetes qu'il recoit pour permettre son exploitation. " + 'Les jetons de partage y sont remplaces par [REDACTED], et la cle de gestion ' + "n'y apparait jamais.", "Un reverse proxy place devant cette instance possede ses propres journaux, qui " + "ne dependent pas d'{app} : leur contenu releve de son exploitant.", ], }, { title: 'Reprendre la main', paragraphs: [ 'Vous pouvez a tout moment supprimer un partage depuis la carte correspondante : ' + 'le lien cesse alors de fonctionner et la copie serveur est effacee. Une carte ' + 'locale se supprime depuis le tableau de bord.', ], }, ]; /** Phrase affichee discretement sur le tableau de bord. */ export const LOCAL_FIRST_NOTE = 'Vos cartes restent sur cet appareil tant que vous ne les partagez pas.'; export function applyAppName(text: string, appName: string): string { return text.split('{app}').join(appName); }