From 9d3c8373ef6a0626f2a07ba491f8de6d48ad8d2c Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Wed, 8 May 2024 23:20:59 +0200
Subject: [PATCH 001/169] fix: typo
---
src/components/ResizeImageModal.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/ResizeImageModal.vue b/src/components/ResizeImageModal.vue
index e77c608..68f8c83 100644
--- a/src/components/ResizeImageModal.vue
+++ b/src/components/ResizeImageModal.vue
@@ -39,7 +39,7 @@
- Recadrez l'image pour que votre carte tiennent dans le rectangle.
+ Recadrez l'image pour que votre carte tienne dans le rectangle.
From 25a87be3dc2868e3291468d6a77cdee4b0f2711f Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Thu, 9 May 2024 11:46:31 +0200
Subject: [PATCH 002/169] add: upgrade storage function
---
src/functions/cache.ts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/functions/cache.ts b/src/functions/cache.ts
index b66cee2..68d9fce 100644
--- a/src/functions/cache.ts
+++ b/src/functions/cache.ts
@@ -48,3 +48,10 @@ export async function getCacheStats(): Promise<{ length: number, size: number }>
}
})
}
+
+/*
+Following function upgrade storage (remove old local storage values, upgrade indexed db ect...)
+ */
+export function upgradeStorage() {
+ localStorage.deleteItem("advantagesCache")
+}
From 8befd4474b0a38dce257fb1839f3b24c283a2847 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 12:19:18 +0200
Subject: [PATCH 003/169] fix: cgu
---
CGU.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CGU.md b/CGU.md
index ddd1e2d..8b43fbe 100644
--- a/CGU.md
+++ b/CGU.md
@@ -7,10 +7,10 @@ Ce texte vient en complétion des [Mentions Légales](https://github.com/camarm-
- Vos identifiants Avantages Jeunes
- Sont utilisés pour se connecter et récupérer les informations de votre compte
- - _Sont sauvegardés et utilisés uniquement par votre smartphone_
+ - _Sont sauvegardés et utilisés uniquement par votre smartphone, dans un stockage sécurisé (géré par votre téléphone)_
- Votre géolocalisation
- Est utilisé pour récupérer les avantages autour de vous
- - _N'est pas stockée, ni sur nos serveurs, ni sur votre smartphone_
+ - _N'est pas stockée, ni sur nos serveurs, ni sur votre smartphone. Elle est uniquement envoyée sur nos serveurs pour récupérer les avantages alentours, via le protocole sécurisé HTTPS, mais n'y pas stockée._
## Récupération des données
From db890cd5e33d7f3120c99108d14d0dc948abcd5d Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 12:22:43 +0200
Subject: [PATCH 004/169] fix: Ajout d'un disclaimer sur la version papier
---
src/components/MyCard.vue | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/components/MyCard.vue b/src/components/MyCard.vue
index b327640..bf6bffa 100644
--- a/src/components/MyCard.vue
+++ b/src/components/MyCard.vue
@@ -64,7 +64,20 @@
{{ user.carte.date_vente }}
+
+
+
+ Version
+ {{ user.carte.livret ? 'Papier': 'Numérique' }}
+
+
+
Actions
@@ -113,7 +126,8 @@ import {
BadgeCheck,
BadgeX,
Focus,
- Trash2
+ Trash2,
+ Compass
} from "lucide-vue-next"
import {scanOutline} from "ionicons/icons"
import PulseItem from "@/components/PulseItem.vue"
@@ -232,4 +246,8 @@ export default {
width: 10px !important;
height: 10px !important;
}
+
+.alert-wrapper {
+ background: var(--ion-background-color) !important;
+}
From e6b803c5ed9226982e3e28c47bc0dc605981e979 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:10:52 +0200
Subject: [PATCH 005/169] fix: upgrade cache function
---
src/functions/cache.ts | 2 +-
src/views/ResumePage.vue | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/functions/cache.ts b/src/functions/cache.ts
index 68d9fce..4e6f7ab 100644
--- a/src/functions/cache.ts
+++ b/src/functions/cache.ts
@@ -53,5 +53,5 @@ export async function getCacheStats(): Promise<{ length: number, size: number }>
Following function upgrade storage (remove old local storage values, upgrade indexed db ect...)
*/
export function upgradeStorage() {
- localStorage.deleteItem("advantagesCache")
+ localStorage.removeItem("advantagesCache")
}
diff --git a/src/views/ResumePage.vue b/src/views/ResumePage.vue
index 96a6044..45138b4 100644
--- a/src/views/ResumePage.vue
+++ b/src/views/ResumePage.vue
@@ -228,6 +228,7 @@ import {Badge} from "@/types/badges"
import {Avantage, Transaction, TransactionAvantage} from "@/types/avantages"
import {RefresherCustomEvent} from "@ionic/vue"
import {getCredentials} from "@/functions/credentials"
+import {upgradeStorage} from "@/functions/cache";
const refs = {
modalLogin: ref(null),
@@ -287,6 +288,7 @@ export default {
}
},
mounted() {
+ upgradeStorage()
localStorage.setItem("userApiUrl", "https://api-ajc.camarm.fr")
window.addEventListener("reload", () => {
this.refreshAccount()
From 2e5a8c2465c59e968d0ad247b71400c639e58af2 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:11:11 +0200
Subject: [PATCH 006/169] fix: error toast
---
src/functions/native/camera.ts | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/functions/native/camera.ts b/src/functions/native/camera.ts
index 0dd9df1..ad05c03 100644
--- a/src/functions/native/camera.ts
+++ b/src/functions/native/camera.ts
@@ -1,6 +1,7 @@
import { Camera, CameraResultType, CameraSource } from "@capacitor/camera"
import {modalController} from "@ionic/vue"
import ResizeImageModal from "@/components/ResizeImageModal.vue"
+import {displayToast} from "@/functions/toasts";
async function openImageResizingModal(image: string, event: string) {
@@ -32,7 +33,7 @@ async function getPhoto() {
const image = await Camera.getPhoto({
resultType: CameraResultType.Base64,
source: CameraSource.Prompt,
- quality: 100,
+ quality: 20,
allowEditing: true
})
return image.base64String as string
@@ -46,8 +47,12 @@ async function saveCardImage(savingId: string, text: string, callback: CallableF
// @ts-ignore
window.addEventListener(savingId, (event: CustomEvent) => {
const resizedBase64Image = event.detail.image
- localStorage.setItem(savingId, resizedBase64Image)
- callback()
+ try {
+ localStorage.setItem(savingId, resizedBase64Image)
+ callback()
+ } catch (e) {
+ displayToast('Error', `${e}`, 10000, 'danger')
+ }
})
}
From 65b2f814d332ce709efa5689a966ad9018e22541 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:16:56 +0200
Subject: [PATCH 007/169] fix: reset images
---
src/functions/cache.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/functions/cache.ts b/src/functions/cache.ts
index 4e6f7ab..68f4e52 100644
--- a/src/functions/cache.ts
+++ b/src/functions/cache.ts
@@ -54,4 +54,6 @@ Following function upgrade storage (remove old local storage values, upgrade ind
*/
export function upgradeStorage() {
localStorage.removeItem("advantagesCache")
+ localStorage.removeItem("frontCardImage")
+ localStorage.removeItem("backCardImage")
}
From 79a9346305481e4f3c2758df85a9edffdbe821da Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:17:36 +0200
Subject: [PATCH 008/169] add: images storage (#53)
---
src/functions/native/camera.ts | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/functions/native/camera.ts b/src/functions/native/camera.ts
index ad05c03..c8869b9 100644
--- a/src/functions/native/camera.ts
+++ b/src/functions/native/camera.ts
@@ -2,6 +2,7 @@ import { Camera, CameraResultType, CameraSource } from "@capacitor/camera"
import {modalController} from "@ionic/vue"
import ResizeImageModal from "@/components/ResizeImageModal.vue"
import {displayToast} from "@/functions/toasts";
+import { Preferences } from '@capacitor/preferences';
async function openImageResizingModal(image: string, event: string) {
@@ -48,15 +49,28 @@ async function saveCardImage(savingId: string, text: string, callback: CallableF
window.addEventListener(savingId, (event: CustomEvent) => {
const resizedBase64Image = event.detail.image
try {
- localStorage.setItem(savingId, resizedBase64Image)
- callback()
+ setImage(savingId, resizedBase64Image).then(() => {
+ callback()
+ })
} catch (e) {
displayToast('Error', `${e}`, 10000, 'danger')
}
})
}
+async function getImage(imageId: string) {
+ return (await Preferences.get({ key: imageId })).value
+}
+
+async function setImage(imageId: string, base64Image: string) {
+ await Preferences.set({
+ key: imageId,
+ value: base64Image,
+ });
+}
+
export {
saveCardImage,
- getPhoto
+ getPhoto,
+ getImage
}
From 5f2e4ccaff1bbf18d5deaed836333461cbdf377d Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:21:13 +0200
Subject: [PATCH 009/169] add: remove image from preference function
---
src/functions/native/camera.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/functions/native/camera.ts b/src/functions/native/camera.ts
index c8869b9..40d3107 100644
--- a/src/functions/native/camera.ts
+++ b/src/functions/native/camera.ts
@@ -69,8 +69,13 @@ async function setImage(imageId: string, base64Image: string) {
});
}
+async function removeImage(imageId: string) {
+ await Preferences.remove({ key: imageId })
+}
+
export {
saveCardImage,
getPhoto,
- getImage
+ getImage,
+ removeImage
}
From a155cbfdf93be23356b7dc52ebb627c2562a4974 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:31:03 +0200
Subject: [PATCH 010/169] fix: using preferences to store images; fix #53
---
src/components/MyCard.vue | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/components/MyCard.vue b/src/components/MyCard.vue
index bf6bffa..8fb5bab 100644
--- a/src/components/MyCard.vue
+++ b/src/components/MyCard.vue
@@ -144,6 +144,7 @@ import "@ionic/vue/css/ionic-swiper.css"
import FullscreenCardModal from "@/components/FullscreenCardModal.vue"
import {ref} from "vue"
import ScanCardModal from "@/components/ScanCardModal.vue"
+import {getImage, removeImage} from "@/functions/native/camera";
const refs = {
modalFullscreen: ref(null),
@@ -160,8 +161,8 @@ window.addEventListener("closeModals", () => {
export default {
data () {
return {
- frontCardImage: localStorage.getItem("frontCardImage") || "/carte.png",
- backCardImage: localStorage.getItem("backCardImage") || "/carte-dos.png",
+ frontCardImage: "/carte.png",
+ backCardImage: "/carte-dos.png",
user: {
image_url: "",
carte: {
@@ -178,8 +179,13 @@ export default {
},
mounted() {
this.refreshAccount()
+ this.loadImages()
},
methods: {
+ async loadImages() {
+ this.frontCardImage = (await getImage('frontCardImage')) || "/carte.png"
+ this.backCardImage = (await getImage('backCardImage')) || "/carte-dos.png"
+ },
open(url: string) {
window.open(url)
},
@@ -199,9 +205,9 @@ export default {
async openCardFullscreen() {
await createModal(FullscreenCardModal, "modalFullscreen", refs, { front: this.frontCardImage, back: this.backCardImage }, true, [0, 0.9], true)
},
- removeCardScans() {
- localStorage.removeItem("frontCardImage")
- localStorage.removeItem("backCardImage")
+ async removeCardScans() {
+ await removeImage("frontCardImage")
+ await removeImage("backCardImage")
this.frontCardImage = "/carte.png"
this.backCardImage = "/carte-dos.png"
}
From dec51e82c930caf8267816397e8d919e27f36195 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:32:58 +0200
Subject: [PATCH 011/169] fix: version 1.0.0
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 701ee3d..9967c8a 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "avantages-jeunes-connect",
"private": true,
- "version": "1.0.0-rc.2",
+ "version": "1.0.0",
"type": "module",
"license": "CECILL-2.1",
"scripts": {
From 71dc3521d47715f714996a44749fe3dcd906c4be Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 18:33:31 +0200
Subject: [PATCH 012/169] fix: update version
---
android/app/build.gradle | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
index ce249d7..8bda4a9 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "com.camarm.ajc"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 3
- versionName "1.0.0-rc.2"
+ versionCode 6
+ versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
From f0d679b5ea1e08008e1f145d6ff2caf0adc4504c Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sat, 11 May 2024 19:06:11 +0200
Subject: [PATCH 013/169] fix: changed icon
---
.github/icon.png | Bin 0 -> 10574 bytes
README.md | 4 +++-
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 .github/icon.png
diff --git a/.github/icon.png b/.github/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..c009ac82523e9bf7b90d02b6120d10b321e50d31
GIT binary patch
literal 10574
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
-
+
# Avantages Jeunes Connect
Une application mobile pour la carte avantages jeunes en Bourgogne Franche-Comté.
+[Website](https://avantagesjeunesconnect.camarm.fr) [Download](/releases)
+
Créée pour rechercher plus facilement les avantages dont vous pouvez bénéficier, Avantages Jeunes Connect est une application non officielle !
From dce11c86eb7a54e03dd2debd1c7f5567227d1496 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 12 May 2024 09:21:05 +0200
Subject: [PATCH 014/169] =?UTF-8?q?fix:=20lien=20de=20premi=C3=A8re=20conn?=
=?UTF-8?q?exion:=20fix=20#54?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ResumePage.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/views/ResumePage.vue b/src/views/ResumePage.vue
index 45138b4..3165a04 100644
--- a/src/views/ResumePage.vue
+++ b/src/views/ResumePage.vue
@@ -151,6 +151,9 @@
Ajouter votre carte, accédez à vos avantages utilisés et recherchez plus facilement ceux dont vous pouvez bénéficiez !
+
+ Première connexion
+
From 15b18d604d35f39373cd3d280f0c57384a54271b Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 12 May 2024 15:47:22 +0200
Subject: [PATCH 015/169] =?UTF-8?q?fix:=20lien=20de=20premi=C3=A8re=20conn?=
=?UTF-8?q?exion=20:=20fix=20#54?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ResumePage.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/views/ResumePage.vue b/src/views/ResumePage.vue
index 3165a04..7bc1432 100644
--- a/src/views/ResumePage.vue
+++ b/src/views/ResumePage.vue
@@ -151,7 +151,7 @@
Ajouter votre carte, accédez à vos avantages utilisés et recherchez plus facilement ceux dont vous pouvez bénéficiez !
-
+
Première connexion
From 0c4f7db072fcc6ac5d3ed28336d0fe9d0f966b2f Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 19 May 2024 15:39:18 +0200
Subject: [PATCH 016/169] add: explanation about api
---
API.md | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 API.md
diff --git a/API.md b/API.md
new file mode 100644
index 0000000..4cc215c
--- /dev/null
+++ b/API.md
@@ -0,0 +1,33 @@
+# 💻 Interactions avec les API
+
+Ce document se veut assurer la transparence en matière de collecte de données vis à vis de nos utilisateurs.
+
+- Voir aussi [Politique de Confidentialité](https://avantagesjeunesconnect.camarm.fr/privacy)
+- Voir aussi [Conditions Générales d'Utilisation](https://avantagesjeunesconnect.camarm.fr/cgu)
+
+## Principe de fonctionnement
+
+L'application "AJC" utilise vos données d'identification pour se connecter et récupérer les données relatives à vos interactions sur le site "avantagesjeunes.com", pour ainsi les afficher. Elle agit comme une interface.
+
+## Authentification
+
+1. Vous entrez vos identifiants de connexion sur l'application. AJC va alors **sauvegarder ses données** dans le [stockage sécurisé](#stockage-sécurisé) de votre téléphone.
+2. Grâce à ces identifiants, AJC va pouvoir obtenir un **jeton de connexion**, qui lui permettra de récupérer les données depuis l'API publique d'avantagesjeunes.com.
+3. Ce jeton à durée d'utilisation limitée sera alors re-généré (étape 2.), grâce à vos identifiants (étape 1.).
+
+
+
+_Schéma de fonctionnement des appels à l'API publique d'avantagesjeunes.com_
+
+## Stockage et intégrité des données
+
+Toutes les données collectées par AJC sont uniquement stockées localement sur votre appareil.
+
+### Stockage "basique"
+
+La plupart de vos données, notamment de cache, seront sauvegardées dans un stockage non chiffré, propre à l'application AJC appelé "LocalStorage".
+
+### Stockage "sécurisé"
+
+Vos données sensibles tel que vos identifiants sont sauvegardées dans un stockage chiffré, propre à AJC, dont la sécurité est assurée par votre téléphone, appelé "Keychain" (iOS) ou "KeyStore" (Android).
+
From 27a5d5c635b03b229a4792cc8622e00d1da23474 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 19 May 2024 15:39:25 +0200
Subject: [PATCH 017/169] add: CGU
---
CGU.md | 41 ++++++++++++++++++++++++++++-------------
1 file changed, 28 insertions(+), 13 deletions(-)
diff --git a/CGU.md b/CGU.md
index 8b43fbe..7a16da5 100644
--- a/CGU.md
+++ b/CGU.md
@@ -1,21 +1,36 @@
-# Condition d'utilisation
+# ☑️ Conditions Générales d'Utilisation
+- Voir aussi [Politique de Confidentialité](https://avantagesjeunesconnect.camarm.fr/privacy)
+- Voir aussi [Interactions avec les API](https://avantagesjeunesconnect.camarm.fr/usage)
-Ce texte vient en complétion des [Mentions Légales](https://github.com/camarm-dev/bfc-avantagesjeunes-mobile/blob/main/LEGAL.md)
+## 1. - Services concernés
-## Données personnelles
+- L'application mobile "Avantages Jeunes Connect"
+- Le site web de présentation [https://avantagesjeunesconnect.camarm.fr](https://avantagesjeunesconnect.camarm.fr)
-- Vos identifiants Avantages Jeunes
- - Sont utilisés pour se connecter et récupérer les informations de votre compte
- - _Sont sauvegardés et utilisés uniquement par votre smartphone, dans un stockage sécurisé (géré par votre téléphone)_
-- Votre géolocalisation
- - Est utilisé pour récupérer les avantages autour de vous
- - _N'est pas stockée, ni sur nos serveurs, ni sur votre smartphone. Elle est uniquement envoyée sur nos serveurs pour récupérer les avantages alentours, via le protocole sécurisé HTTPS, mais n'y pas stockée._
+## 2. - Conditions
-## Récupération des données
+Avantages Jeunes Connect, dit "AJC" est un logiciel open source distribué sous licence CECILL-v2.1.
-Du fait qu'aucune donnée ne soit sauvegardée sur nos serveurs, nous ne pouvons pas proposer un résumé de vos données...
+- AJC est un client mobile du site web "avantagesjeunes.com", libre, gratuit, open-source, indépendant, à but non-lucratif et collaboratif et n'est **aucunement affilié à aucune entreprise ou organisation**.
+- L'application "Avantages Jeunes Connect" est un logiciel conçu pour permettre l'accès aux données du service "avantagesjeunes.com" transmises par leur API, via des appels effectués par l'application. AJC n'est donc pas responsable de la manière dont les données sont transmises, ni du fonctionnement de ces dernières.
+- Aucune personne ou logiciel automatisé n’utilise ou ne collecte vos données personnelles.
+- Vos données, d'identification, ou concernant vos interactions avec "avantagesjeunes.com" ne **quittent pas votre appareil**, conformément à la [Politique de Confidentialité](PRIVACY.md). AJC n'est pas responsable de sécurité de ces données conservées localement sur votre appareil.
+- La suppression de l'application, ou la déconnexion de votre compte entrainera la suppression de toutes les données stockées sur votre appareil.
+- Vous avez le d'utiliser, de modifier de redistribuer, et de partager AJC sous les termes de la licence CECILL-v2.1.
+- AJC ou l'une de ses fonctionnalités peut être retirée de la distribution à tout moment sans préavis par le gestionnaire du service.
+- AJC n'a aucun lien avec aucune entité régionale.
-## Suppression des données
+Vous pouvez consulter la licence complète sur [le dépôt Github](https://github.com/camarm-dev/bfc-avantagesjeunes-mobile/blob/main/LICENSE).
-Se déconnecter via le menu en haut à droite de votre écran supprimera toutes les données sur votre smartphone.
+Si vous n'acceptez pas ou plus ces conditions, vous ne pouvez pas utiliser et/ou désinstaller AJC. Aucune donnée ne sera conservée sur votre appareil.
+
+## 3. - Informations
+
+### 3.1 - Déconnexion
+
+La déconnexion peut s'effectuer simplement depuis l'application : via le menu "Paramètres", dans le page "Mon Profil", accessible depuis la page d'accueil en haut à droite de l'écran.
+
+---
+
+En cas de problème, pour plus d'informations ou renseignements sur l'application ou son traitement de données, contactez-nous à l'adresse suivante: [software@camarm.dev](mailto:software@camarm.dev)
From 33d1ebb53d69a657c6faef4cd93c3a1602de718f Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 19 May 2024 15:39:32 +0200
Subject: [PATCH 018/169] add: Privacy policy
---
PRIVACY.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 PRIVACY.md
diff --git a/PRIVACY.md b/PRIVACY.md
new file mode 100644
index 0000000..f355023
--- /dev/null
+++ b/PRIVACY.md
@@ -0,0 +1,78 @@
+# 📖 Politique de confidentialité
+
+Document juridique détaillant clairement et précisément ce que "Avantages Jeunes Connect" (dit "AJC") fait de vos données personnelles.
+
+> Ce service peut être amené à collecter certaines données personnelles de ses utilisateurs.
+
+- Voir aussi [Conditions Générales d'Utilisation](https://avantagesjeunesconnect.camarm.fr/cgu)
+- Voir aussi [Interactions avec les API](https://avantagesjeunesconnect.camarm.fr/usage)
+
+## 1. - Services concernés
+
+Les services concernés par cette politique de confidentialité incluent, mais ne se limite pas à:
+
+- L'application mobile "Avantages Jeunes Connect"
+ - Code source disponible sur [le dépôt Github](https://github.com/camarm-dev/bfc-avantagesjeunes-mobile)
+- Le site web de présentation [https://avantagesjeunesconnect.camarm.fr](https://avantagesjeunesconnect.camarm.fr)
+
+## 2. - Description de la collecte de données
+
+### 2.1 - Données collectées
+
+**Données collectées depuis l'application**:
+- Vos données d'identification à "avantagesjeunes.com", gardées dans un stockage sécurisé par votre appareil.
+> Identifiants de connexion (numéro de carte et mot de passe)
+- Les données concernant les interactions effectuées sur "avantagesjeunes.com" et depuis l'application
+> Favoris, likes, notes, commentaires, photo de profil...
+
+**Données collectées depuis le site web de présentation**:
+
+Nous tenons à informer nos utilisateurs que le site web de présentation https://avantagesjeunesconnect.camarm.fr respecte pleinement la vie privée de chacun. Aucune donnée personnelle ou information concernant l'utilisateur et son appareil n'est collectée lors de la visite du site. De plus, nous ne conservons aucun cookie, il n'y a pas de logs de visite enregistrés et nous n'utilisons aucun outil d'analyse pour suivre le comportement des utilisateurs. Notre engagement envers la protection de votre vie privée est total et transparent.
+
+### 2.2 - Données liées à l'identité
+
+Nous souhaitons préciser que nous ne conservons aucune information personnelle de nos utilisateurs. Cette démarche fait partie de notre politique rigoureuse de protection de la vie privée, assurant que toutes les interactions avec nos services restent anonymes et confidentielles.
+
+### 2.3 - Accès extérieur aux données
+
+Aucune personne ou logiciel automatisé n’utilise, ne traite ou ne collecte vos données personnelles.
+
+### 2.4 - Suppression des données
+
+La suppression de l'application ou la déconnexion entraîne immédiatement la suppression de l'intégralité des données stockées sur votre appareil. Nous ne conservons aucune copie de vos données après la suppression de l'application, assurant ainsi une maîtrise totale de vos informations personnelles.
+
+## 3. - Client mobile "Avantages Jeunes Connect"
+
+Le client mobile AJC est un logiciel libre, gratuit, open-source, indépendant, à but non-lucratif et collaboratif.
+Il est conçu avec l'objectif principal de faciliter l'accès aux données du service "avantagesjeunes.com", il agit comme une interface entre "avantagesjeunes.com" et votre téléphone.
+L'application s'engage à garantir une transparence totale concernant ses méthodes de fonctionnement et l'utilisation des données.
+Fondée sur des principes de développement collaboratif, AJC invite la communauté à participer à son évolution en contribuant au code, en proposant des améliorations et en signalant des bugs, afin de maintenir le logiciel à jour et de répondre au mieux aux besoins des utilisateurs.
+
+### 3.1 - Sécurité des données
+
+La sécurité et la transparence en matière de traitement de données sont d'une importance cruciale pour nous.
+Nous nous engageons à adopter des mesures de sécurité robustes pour protéger les données contre les accès non autorisés, les modifications, les divulgations ou les destructions inappropriées.
+De plus, nous veillons à communiquer de manière transparente sur nos pratiques de collecte, d'utilisation et de partage des données, afin que nos utilisateurs comprennent clairement comment leurs informations sont gérées.
+
+### 3.2 - Récupération des données et open source
+
+La stratégie de sécurité des données de AJC repose sur l'approche open source. Grâce à la diffusion ouverte de notre code, nous offrons à une communauté mondiale de contributeurs la possibilité de le vérifier, de l'améliorer et de repérer d'éventuelles vulnérabilités de sécurité. Le maintien de cette collaboration assure que l'application ne se limite pas à respecter les normes de sécurité actuelles, mais qu'elle est également régulièrement mise à jour grâce aux contributions régulières de la communauté. Cette approche participative garantit une totale transparence et renforce la confiance de nos utilisateurs quant à la sécurité de leurs informations.
+
+### 3.3 - Accès aux données via les API publiques
+
+Nous limitons notre politique d'accès aux données à celles fournies par les API publiques de "avantagesjeunes.com", tout comme l'application officielle de ce service. AJC promet de ne pas utiliser de moyens détournés pour accéder aux informations de ce service. La mise en place de cette méthode assure que l'utilisation des données respecte la politique de confidentialité des services concernés, tout en préservant les droits et la vie privée de nos utilisateurs.
+
+## 4. - Modification de la politique de confidentialité
+
+### 4.1 - Engagement concernant l'avenir du projet
+
+Nous nous engageons à ne pas collecter de données à l'avenir, afin de préserver la confidentialité et l'intégrité des informations de nos utilisateurs.
+
+
+## 5. - Informations
+
+En cas de problème, pour plus d'informations ou renseignements sur l'application ou son traitement de données, contactez-nous à l'adresse suivante: [software@camarm.dev](mailto:software@camarm.dev)
+
+---
+
+_Cette politique de confidentialité est une copie plus ou moins conforme de https://safety.getpapillon.xyz/documents/privacy-policy._
From 643b63805a371c65e2bec6428036300754d26c39 Mon Sep 17 00:00:00 2001
From: camarm-dev
Date: Sun, 19 May 2024 15:39:40 +0200
Subject: [PATCH 019/169] add: schema.png
---
.github/schema.png | Bin 0 -> 106311 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 .github/schema.png
diff --git a/.github/schema.png b/.github/schema.png
new file mode 100644
index 0000000000000000000000000000000000000000..58e0f24d0e964744c0d2db38e63cc31dbfc02f3a
GIT binary patch
literal 106311
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 cylfV}-Y(-agEqFj7;
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 |