Files
wiki/Catalogue-Self-Hosted/apps/app-clean-slate.md
T
2026-06-09 18:40:21 +02:00

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
catalogue
tracking
calorie-tracker
food
health
nutrition
medium false
https://selfh.st/apps/
https://cleanslate.sh/
https://github.com/successible/cleanslate

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

  1. Cloner le dépôt : git clone https://github.com/successible/cleanslate && cd cleanslate
  2. Installer uuid-runtime (Debian/Ubuntu : apt install uuid-runtime)
  3. Lancer bash configuration.sh pour générer .env et Caddyfile
  4. Builder et démarrer : bash deploy.sh
  5. 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 valeur apiToken comme 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_SECRET donne 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

Pages Liées