141 lines
4.4 KiB
Markdown
141 lines
4.4 KiB
Markdown
# 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
|