6.0 KiB
6.0 KiB
Agenda
Équivalent : Google Calendar Statut : Partiel (API proxy CalDAV)
Résumé
Calendrier reproduisant rigoureusement le comportement et l'interface de Google Calendar, potentiellement comme frontend pour la solution CalDAV de Nextcloud.
État d'implémentation réel (mai 2026)
Déjà implémenté
- API backend montée sous
/api/v1/calendar(si Nextcloud activé). - Endpoints list calendriers, list événements, create événement, delete événement.
- Client CalDAV Nextcloud intégré côté serveur.
Partiel / incomplet
- Pas d'update événement avec gestion ETag/If-Match.
- Pas de free/busy ni gestion complète invitations/réponses participants.
- Recherche globale events pas encore branchée.
Non commencé
- Automatisations événements (webhooks complets, actions programmées).
- Expérience agenda frontend de production branchée backend réel.
- Intégration avancée meeting/ressources/salles.
Approche technique
Même logique qu'Ultidrive : on reproduit l'UX Google Calendar à l'identique, mais le backend calendrier peut être délégué.
Option "frontend Nextcloud"
L'approche la plus simple : Agenda = frontend custom pour le backend CalDAV de Nextcloud :
- Nextcloud Calendar gère le stockage, la sync CalDAV, les invitations, la récurrence
- Agenda = interface identique à Google Calendar (même stack que le reste de la suite)
- Avantage : interopérable avec tout client CalDAV standard (Thunderbird, Apple Calendar, etc.)
Backend alternatif
Si besoin de découpler de Nextcloud :
- Serveur CalDAV dédié (Radicale, Baikal, sabre/dav)
- Même API CalDAV, juste un backend différent
Points de différenciation vs Google Calendar
- Interface identique à Google Calendar (migration sans friction)
- CalDAV natif (interopérable avec tout client standard)
- Auto-hébergeable, données sous contrôle
- Créneaux de disponibilité partagés publiquement (style Calendly intégré)
- Automatisations à la création/modification d'événements (webhooks, notifications custom)
- Planification assistée par IA (suggestion de créneaux optimaux selon habitudes)
Fonctionnalités
Core
- Événements (titre, description, lieu, participants, récurrence)
- Multi-agendas (perso, pro, partagés)
- Vues jour / semaine / mois / planning
- Invitations et réponses (accepter, refuser, peut-être)
- Rappels et notifications
- Fuseaux horaires
Collaboration
- Agendas partagés (lecture / écriture / admin)
- Créneaux de disponibilité publics (booking)
- Recherche de créneaux libres entre participants
- Salles et ressources
Intégration suite
- Événements depuis les mails (invitations .ics dans Ultimail)
- Création automatique de lien Ultimeet
- Pièces jointes depuis Ultidrive
- Contacts comme participants (autocomplétion)
Automatisations
- Webhooks à la création/modif/suppression d'événements
- Actions programmées (rappels, envoi de docs avant réunion)
Intégration Nextcloud — étude technique
APIs CalDAV disponibles (confirmé)
Nextcloud utilise sabre/dav comme serveur CalDAV. Les endpoints :
| Opération | Méthode | Endpoint |
|---|---|---|
| Lister calendriers | PROPFIND | /remote.php/dav/calendars/{user}/ |
| Lister événements | REPORT (calendar-query) | /remote.php/dav/calendars/{user}/{calendar}/ |
| Créer événement | PUT | .../calendars/{user}/{calendar}/{uid}.ics |
| Modifier événement | PUT | Même (avec If-Match etag) |
| Supprimer événement | DELETE | Même |
| Sync incrémentale | REPORT (sync-collection) | Via sync-token |
| Événements à venir | GET | /ocs/v2.php/apps/dav/api/v1/events/upcoming |
| Free/busy | POST | /remote.php/dav/calendars/{user}/outbox/ |
Fonctionnement
- Les événements sont stockés au format iCalendar (.ics)
- Support natif : récurrence (RRULE), invitations (ATTENDEE + iMIP), rappels (VALARM)
- Sync-token pour synchronisation incrémentale efficace (le client ne recharge que les changements)
- Partage de calendriers via OCS ou CalDAV ACL
Avantages de cette approche
- Interopérable immédiatement — tout client CalDAV (Thunderbird, Apple Calendar, DAVx5 sur Android) fonctionne avec le même backend
- Pas de logique calendrier à recoder — récurrence, fuseaux horaires, invitations : tout est géré par sabre/dav
- Notifications serveur — Nextcloud push notifications pour les rappels même si le frontend n'est pas ouvert
- Même instance que celle utilisée pour Ultidrive → un seul backend à maintenir
Architecture cible
┌──────────────┐ CalDAV (REPORT, PUT, DELETE) ┌──────────────┐
│ Agenda │─────────────────────────────────────▶│ Nextcloud │
│ (frontend) │ OCS (upcoming events, sharing) │ (PHP-FPM) │
└──────────────┘ └──────────────┘
│
Même instance que
celle d'Ultidrive
Le frontend Agenda parse les réponses CalDAV (XML/iCalendar) et les affiche dans une UI identique à Google Calendar. Librairie JS recommandée pour parser iCalendar : ical.js ou tsdav (client CalDAV TypeScript).
Briques technologiques envisagées
| Besoin | Option retenue | Alternatives |
|---|---|---|
| Backend CalDAV | Nextcloud sabre/dav (même instance qu'Ultidrive) | Radicale, Baikal |
| Client CalDAV (JS) | tsdav (TypeScript) | ical.js + fetch custom |
| Parsing iCalendar | ical.js | — |
| Récurrence | rrule.js (expansion côté client) | — |
| Auth | Partagée via Ulti Suite (OIDC → NC) | — |
| Notifications/rappels | NC push + Service Worker | — |