Files
Bonsai-android/README.md
T

141 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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