--- title: Perfice created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, tracking, habitudes, productivity, flutter, dart, sqlite] confidence: medium contested: false sources: [https://selfh.st/apps/, https://github.com/saketh-are/perfice] --- # Perfice 🎯 > Un habit tracker minimaliste écrit en Dart/Flutter, livré en binaire unique avec SQLite embarqué. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://perfice.sakethare.me/ | | **GitHub** | https://github.com/saketh-are/perfice | | **License** | AGPL-3.0 | | **Langage principal** | Dart (Flutter) | | **Étoiles GitHub** | ⭐25 | | **Dernière MAJ** | 2026-04-22 | | **Catégorie** | [[cat-tracking]] | ## Description Perfice est un **suivi d'habitudes** qui se veut volontairement épuré : on crée une habitude, on la coche chaque jour, et l'application trace la régularité sur un calendrier. Contrairement à des concurrents plus lourds (Habitica, Loop Habit Tracker côté Android), Perfice mise sur la **simplicité radicale** — pas de gamification, pas de système de points, juste la métrique pure. L'application est écrite en **Dart/Flutter** et le serveur de synchronisation est compilé en **binaire unique Go-like** (compilé AOT), ce qui la rend très facile à déployer : un seul fichier exécutable, une base SQLite à côté, et c'est tout. L'interface client (web + mobile) communique via une API REST documentée. Le projet supporte les **habitudes mesurables** (compteur, durée, valeur numérique) en plus des simples cases à cocher, ce qui permet de suivre aussi bien « boire 2L d'eau » que « méditer 15 minutes » ou « lire 30 pages ». Les données sont **chiffrées au repos** par défaut. ## Installation ### Via Docker (recommandé) ```yaml services: perfice: container_name: perfice image: ghcr.io/saketh-are/perfice:latest restart: unless-stopped ports: - "8085:8085" volumes: - perfice-data:/data environment: - PERFICE_DB_PATH=/data/perfice.db - PERFICE_ENCRYPTION_KEY=changez-moi-32-chars-min volumes: perfice-data: ``` ### Installation manuelle 1. Télécharger le binaire depuis la page Releases (`perfice-server-linux-x64`). 2. Créer un dossier `/opt/perfice` et y placer le binaire. 3. `chmod +x perfice-server && ./perfice-server` (écoute par défaut sur `:8085`). 4. Servir le client web statique (Nginx) pointant vers `perfice-client/`. ## Configuration - Générer une **clé de chiffrement** forte (32 caractères minimum) et l'exporter en variable d'environnement. - Créer le **premier compte** via l'interface web, qui devient administrateur. - Configurer la **fréquence de rappel** (notifications push via Web Push, nécessite VAPID keys). - Définir les **types d'habitudes** globaux : booléen, numérique, durée — chaque utilisateur peut ensuite créer ses propres habitudes basées sur ces types. ## Alternatives ### Open source - [[app-loops]] — habit tracker Telegram-first en self-hosted - **Habitica** — gamifié, RPG-like (le plus connu) - **Loop Habit Tracker** — Android uniquement, open source - **Streaks** — fork communautaire de Loop ### Propriétaires - **Streaks (iOS/macOS)** — très poli mais fermé et payant - **Productive** — design léché, abonnement obligatoire ## Sécurité - **Chiffrement côté serveur** des données utilisateur (AES-256) avec la clé d'environnement. - **Authentification** par email/mot de passe (bcrypt), sessions JWT. - **Aucune télémétrie** par défaut — vérifier la config de l'image Docker. - En production, placer **derrière un reverse proxy HTTPS** (Caddy/Traefik). - Sauvegarder régulièrement le fichier SQLite (le chiffrement rend les sauvegardes inopérantes sans la clé — stocker la clé dans un vault). ## Ressources - Site officiel : https://perfice.sakethare.me/ - Dépôt GitHub : https://github.com/saketh-are/perfice - Issues : https://github.com/saketh-are/perfice/issues - selfh.st : https://selfh.st/apps/ ## Pages Liées - [[cat-tracking]] - [[recettes-docker-compose]]