---
title: FluidCalendar
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, calendar, typescript, nextjs, tasks, modern-ui]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=calendar, https://github.com/dotnetfactory/fluid-calendar]
---

# FluidCalendar 📅

> Interface calendrier moderne (Next.js + TypeScript) avec vue agenda, tâches, intégration CalDAV et design soigné façon Apple Calendar.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://fluid-calendar.app |
| **GitHub** | https://github.com/dotnetfactory/fluid-calendar |
| **License** | MIT |
| **Langage** | TypeScript (Next.js) |
| **Étoiles** | 63 ⭐ |
| **Dernière MAJ** | 2025 |
| **Catégorie** | [[cat-calendar]] |

## Description

**FluidCalendar** est une application web élégante pensée comme une **alternative moderne aux interfaces vieillissantes** (Radicale web UI, generic CalDAV clients). Le projet mise tout sur l'expérience utilisateur : typographie soignée, animations fluides, vues multiples (jour, semaine, mois, agenda), drag-and-drop pour déplacer des événements, et un mode sombre bien calibré.

Côté fonctionnalités, FluidCalendar supporte les **comptes CalDAV** (lecture/écriture sur un serveur [[app-radicale]], [[app-baikal]] ou Nextcloud existant), la **gestion de tâches** intégrée avec deadlines et priorités, et la **synchronisation multi-comptes** (superposition de plusieurs calendriers en couleurs). Une API REST permet l'intégration avec des outils tiers.

L'architecture est **Next.js 14** avec App Router, base **PostgreSQL** ou **SQLite** au choix, authentification par magic-link ou credentials. Le déploiement se fait classiquement via Docker ou en one-click sur Vercel. C'est probablement l'UI calendrier la plus « design » du moment dans l'écosystème self-hosted.

## Installation

### Docker Compose (recommandé)

```yaml
services:
  fluidcalendar:
    image: ghcr.io/dotnetfactory/fluid-calendar:latest
    container_name: fluidcalendar
    restart: unless-stopped
    environment:
      - DATABASE_URL=postgresql://fluid:***@db:5432/fluid
      - NEXTAUTH_SECRET=change...ndom
      - NEXTAUTH_URL=https://cal.example.com
    depends_on:
      - db
    ports:
      - "3000:3000"
  db:
    image: postgres:16-alpine
    container_name: fluid-db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=fluid
      - POSTGRES_PASSWORD=changeme
      - POSTGRES_DB=fluid
    volumes:
      - fluid-db:/var/lib/postgresql/data

volumes:
  fluid-db:
```

### Manuelle (Node.js)

```bash
git clone https://github.com/dotnetfactory/fluid-calendar.git
cd fluid-calendar
npm install
cp .env.example .env  # éditer DATABASE_URL, NEXTAUTH_SECRET
npm run build
npm start
```

## Configuration

- Premier lancement : créer le compte admin via l'UI.
- Ajouter des **comptes CalDAV** : URL du serveur (Radicale, Baïkal, Nextcloud), identifiants, intervalle de synchro.
- Configurer les **calendriers visibles** par défaut et leurs couleurs.
- Activer les notifications (email ou web-push) pour les événements à venir.
- Optionnel : intégrer un serveur SMTP pour les invitations.

## Alternatives

- **Open Source** : [[app-radicale]] (serveur CalDAV minimal, UI austère), [Baïkal](https://github.com/sabre-io/Baikal) (serveur CalDAV/CardDAV), [Nextcloud Calendar](https://nextcloud.com/calendar/) (intégré à Nextcloud), [DAVx⁵](https://www.davx5.com/) (client Android CalDAV)
- **UI moderne alternative** : [Cal.com](https://github.com/calcom/cal.com) (prise de RDV, plus booking-oriented), [Easy!Appointments](https://github.com/alextselegidis/easyappointments) (PHP, prise de RDV)
- **Propriétaire** : Google Calendar, Apple iCloud Calendar, Outlook.com (excellent mais fermés)
- **Mobile** : [ICSx⁵](https://icsx5.bitfire.at/) (Android open source pour CalDAV)

## Sécurité

- **NEXTAUTH_SECRET** : obligatoire, doit être long et aléatoire (`openssl rand -hex 32`).
- **HTTPS** : indispensable (magic-links d'auth dans les emails).
- **Reverse-proxy** : Caddy/Traefik/Nginx avec HSTS, headers de sécurité.
- **DB credentials** : variables d'environnement, jamais en clair.
- **Backups** : exporter régulièrement la base Postgres (qui contient les comptes et préférences).

## Ressources

- [selfh.st — Calendar](https://selfh.st/apps/?tag=calendar)
- [GitHub dotnetfactory/fluid-calendar](https://github.com/dotnetfactory/fluid-calendar)
- [Demo live](https://demo.fluid-calendar.app) (si disponible)

## Pages Liées

- [[cat-calendar]]
- [[recettes-docker-compose]]
- [[app-radicale]] — serveur CalDAV compatible
- [[app-baikal]] — alternative CalDAV
