5.7 KiB
title, created, updated, type, tags, confidence, contested, sources
| title | created | updated | type | tags | confidence | contested | sources | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Clean Slate | 2026-06-07 | 2026-06-07 | app |
|
medium | false |
|
Clean Slate 🧘
Tracker de calories libre et bienveillant, conçu pour les personnes en lutte avec les régimes et la relation à la nourriture.
| Métadonnée | Valeur |
|---|---|
| Site web | https://cleanslate.sh/ |
| GitHub | https://github.com/successible/cleanslate |
| License | Apache-2.0 |
| Langage principal | TypeScript (Next.js) |
| Étoiles GitHub | ~234 (dépôt mirror très actif) |
| Dernière MAJ | 2026-05 (v4.22.0) |
| Catégorie | cat-tracking |
Description
Clean Slate est une application web de suivi alimentaire et calorique qui se distingue volontairement des trackers classiques par son approche non-jugeante. Le projet, développé originellement pour aider ses créateurs à rompre avec les cycles de restriction et de frénésie, abandonne la rhétorique punitive habituelle (« tu as échoué », calories restantes, etc.) au profit d'une interface neutre. L'objectif est de faciliter un journal alimentaire régulier sans générer de culpabilité.
L'application permet de chercher et journaliser des aliments (base Open Food Facts pour les codes-barres), créer des recettes personnalisées, suivre les protéines et l'exercice, et fonctionne sur tout appareil disposant d'un navigateur. Une instance publique gratuite est maintenue par l'auteur sur cleanslate.sh avec authentification Apple, GitHub et Google ; l'auto-hébergement reste néanmoins pleinement supporté via Docker Compose.
Techniquement, Clean Slate s'appuie sur une stack moderne : Next.js + TypeScript côté front, Hasura (GraphQL) comme couche API, PostgreSQL pour la persistance, et Caddy comme reverse-proxy HTTPS automatique. Le projet est en production depuis plusieurs années avec un rythme de releases soutenu (≈150 releases).
Installation
Via Docker (recommandé)
services:
cleanslate:
image: ghcr.io/successible/cleanslate:latest
container_name: cleanslate
restart: unless-stopped
ports:
- "3000:3000"
environment:
- HASURA_GRAPHQL_ADMIN_SECRET=change-me-strong-secret
- NEXT_PUBLIC_HASURA_URL=http://cleanslate:8080/v1/graphql
- DOMAIN_NAME=https://cleanslate.example.com
volumes:
- ./data:/app/.user
depends_on:
- postgres
postgres:
image: postgres:16-alpine
container_name: cleanslate-db
restart: unless-stopped
environment:
POSTGRES_PASSWORD: change-me
POSTGRES_DB: cleanslate
volumes:
- ./postgres:/var/lib/postgresql/data
Note : la procédure officielle clone le dépôt et exécute
bash configuration.sh+bash deploy.sh, qui génère Caddyfile + .env automatiquement. L'image GHCR est un placeholder honnête : référez-vous au README pour le docker-compose de production exact.
Installation manuelle
- Cloner le dépôt :
git clone https://github.com/successible/cleanslate && cd cleanslate - Installer
uuid-runtime(Debian/Ubuntu :apt install uuid-runtime) - Lancer
bash configuration.shpour générer.envetCaddyfile - Builder et démarrer :
bash deploy.sh - Créer un utilisateur depuis la console Hasura
https://cleanslate.example.com/console
Configuration
- HASURA_GRAPHQL_ADMIN_SECRET : secret administrateur de l'API GraphQL (obligatoire, choisir une valeur forte).
- DOMAIN_NAME : FQDN public utilisé pour le reverse-proxy Caddy et les origines CSRF.
- Authentification : deux modes — locale (par défaut, simple) ou Firebase (plus complexe, nécessaire pour Login with Apple/Google).
- Création du premier utilisateur : se connecter à la console Hasura, insérer une ligne dans la table
public.profiles, puis utiliser la valeurapiTokencomme mot de passe sur l'interface web. - Mises à jour :
git pull && bash deploy.sh(les images Docker sont reconstruites avec un délai d'environ 20 minutes après chaque release GitHub).
Alternatives
Open source
- app-beaverhabits — Tracker d'habitudes (pas de nutrition)
- Tandoor Recipes — Gestion de recettes avec planification de repas
- Open Food Facts — Base de données alimentaire utilisée par Clean Slate (projet parent, à auto-héberger en option)
Propriétaires
- MyFitnessPal — Tracker dominant, freemium agressif et base d'aliments私有
- Lose It! — Approche similaire mais avec objectifs stricts et paywall lourd
- Yazio — Interface moderne, fonctionnalités limitées en gratuit
Sécurité
- Reverse-proxy HTTPS : Caddy gère automatiquement Let's Encrypt ; port 443 à ouvrir en permanence.
- Secret Hasura : le
HASURA_GRAPHQL_ADMIN_SECRETdonne accès à toute la base — choisir une valeur aléatoire longue (32+ caractères) et la traiter comme un mot de passe root. - Authentification : par défaut, authentification locale avec
apiToken(long, opaque). Pour une utilisation multi-utilisateur, préférer Firebase Auth ou OIDC. - Caddyfile : généré par
configuration.sh, expose correctement les en-têtes HSTS et le CSP. - Mises à jour : suivre les releases GitHub, releases régulières incluant patches de sécurité.
Ressources
- Site officiel : https://cleanslate.sh/
- Code source : https://github.com/successible/cleanslate
- Démo hébergée : https://cleanslate.sh/ (gratuite)
- Reddit r/selfhosted : https://www.reddit.com/r/selfhosted/comments/88pxhd/self_hosted_calorie_counter/
- selfh.st apps : https://selfh.st/apps/