# Planify Mobile Application Android de gestion de tâches inspirée de [Planify](https://github.com/alainm23/planify), avec synchronisation CalDAV native (Nextcloud, etc.). ## Fonctionnalités - Gestion de tâches avec projets, sections, labels et sous-tâches - Synchronisation bidirectionnelle via protocole CalDAV (RFC 4791) - Compatible Nextcloud Tasks et tout serveur CalDAV générique - Rappels locaux (absolus et relatifs) - Récurrence (RRULE iCalendar) - Vues : Inbox, Today, Scheduled, Projects, Labels - Mode hors-ligne avec sync au retour de la connexion ## Prérequis | Outil | Version minimale | |-------|-----------------| | Android Studio | Hedgehog (2023.1.1) ou plus récent | | JDK | 17 | | Android SDK | API 26 (Android 8.0) minimum, API 34 cible | | Kotlin | 1.9+ | | Gradle | 8.4+ | ## Installation ```bash git clone https://git.goutailler-olivier.com/Gato/Planify-mobile.git cd Planify-mobile ``` Ouvrir le projet dans **Android Studio** : 1. File → Open → sélectionner le dossier `Planify-mobile` 2. Attendre la synchronisation Gradle (première fois : ~2 min) 3. Lancer l'émulateur ou connecter un appareil (USB debugging activé) ## Lancer l'application ### Sur émulateur ```bash # Créer un AVD via Android Studio : Tools → Device Manager → Create Device # Recommandé : Pixel 6, API 33 ou 34 ./gradlew installDebug # ou via Android Studio : Run → Run 'app' (Shift+F10) ``` ### Sur appareil physique 1. Activer le mode développeur : Paramètres → À propos → taper 7× sur "Numéro de build" 2. Activer le débogage USB : Paramètres → Options développeur → Débogage USB 3. Connecter via USB et autoriser la connexion 4. Lancer depuis Android Studio ou : `./gradlew installDebug` ## Configurer la synchronisation CalDAV 1. Lancer l'application 2. Ouvrir le menu latéral → icône paramètres 3. Section **Sources** → **Ajouter un compte CalDAV** 4. Renseigner : - **URL du serveur** : `https://votre-nextcloud.com` (la découverte `.well-known` est automatique) - **Nom d'utilisateur** et **mot de passe** 5. Appuyer sur **Tester la connexion**, puis **Enregistrer** 6. Sélectionner les calendriers à synchroniser 7. La première synchronisation démarre automatiquement ### Serveurs testés | Serveur | Statut | |---------|--------| | Nextcloud 27+ | ✅ Supporté | | Radicale | ✅ Supporté | | Baikal | ✅ Supporté | | Apple iCloud | ⚠️ Non testé | ## Structure du projet ``` app/src/main/java/com/planify/mobile/ ├── domain/ │ ├── model/ # Entités métier (Task, Project, Label...) │ └── repository/ # Interfaces des repositories ├── data/ │ ├── local/ │ │ ├── entity/ # Entités Room (@Entity) │ │ ├── dao/ # Data Access Objects (@Dao) │ │ ├── converter/ # TypeConverters Room │ │ └── AppDatabase.kt │ ├── sync/ │ │ ├── caldav/ # Client CalDAV (HTTP + XML) │ │ └── vtodo/ # Parser/générateur VTODO │ └── repository/ # Implémentations des repositories ├── ui/ │ ├── navigation/ # Navigation Compose │ ├── inbox/ # Vue Inbox │ ├── today/ # Vue Today │ ├── project/ # Vue Projet │ ├── scheduled/ # Vue Scheduled │ ├── labels/ # Vue Labels │ ├── task/ # Création/édition tâche │ ├── settings/ # Paramètres │ └── components/ # Composants réutilisables └── di/ # Modules Hilt ``` ## Build variants | Variant | Description | |---------|-------------| | `debug` | Logs activés, débogage activé | | `release` | Optimisé, ProGuard activé | ```bash ./gradlew assembleDebug # APK debug ./gradlew assembleRelease # APK release (nécessite keystore) ./gradlew test # Tests unitaires ./gradlew connectedTest # Tests instrumentés (émulateur requis) ``` ## Contribution Les branches suivent la structure par milestone : ``` main └── develop ├── milestone/lot-1-architecture ├── milestone/lot-2-navigation ├── milestone/lot-3-taches ├── milestone/lot-4-caldav ├── milestone/lot-5-avancees └── milestone/lot-6-polish ``` Chaque commit référence l'issue correspondante : `feat: [#X] description`. ## Licence MIT