Retour aux projets
Code
mai 2026 - mai 2026

Pondi - l'application de suivi de mes poules

Pondi est une PWA auto-hébergée que j'ai conçue pour suivre au quotidien la vie de mon poulailler.

Pondi - l'application de suivi de mes poules
DockerGitLabCI/CDTypeScript

Présentation

Pondi est une PWA auto-hébergée que j'ai conçue pour suivre au quotidien la vie de mon poulailler. L'idée est née d'un constat simple : les applications existantes ne répondaient pas à mes besoins, et je voulais garder le contrôle total sur mes données.

L'application permet de tracker les œufs pondus, les vermifuges, les nettoyages et l'alimentation, tout en gérant ses poules individuellement.

Fonctionnalités

  • Dashboard — compteur d'œufs du jour et raccourcis rapides
  • Gestion individuelle des poules — fiche par poule avec nom, race et couleur d'œuf
  • Suivi des événements — œufs, nettoyage, vermifuge, alimentation avec sélecteur de date
  • Rappels périodiques — notifications par email pour ne rien oublier
  • Multi-utilisateur — poulaillers partagés avec rôles Owner et Member
  • Inscription par invitation — contrôle d'accès via tokens avec expiration
  • Historique complet — tous les événements filtrables
  • PWA installable — utilisation native sur mobile
  • Stack technique

  • Frontend — Next.js 16 (App Router) + Tailwind CSS
  • Backend — API Routes Next.js + Prisma 7
  • Base de données — SQLite (better-sqlite3)
  • Auth — Auth.js v5 (credentials)
  • Email — Nodemailer (SMTP OVH)
  • Deploy — Docker multi-stage + docker-compose
  • CI/CD — GitLab CI (build puis deploy SSH)
  • Tests — Vitest + Testing Library
  • Architecture

    Le modèle de données repose sur un Event unifié avec un enum de types plutôt que des tables séparées. Ce choix simplifie les requêtes et l'historique tout en restant extensible.

    L'authentification utilise un split auth.config.ts (edge-safe) et auth.ts (Node.js) pour la compatibilité avec le middleware Next.js 16.

    Pourquoi SQLite ?

    Pour un projet self-hosted, SQLite est un choix pragmatique : pas de serveur de base de données à maintenir, des backups qui se résument à copier un fichier, et des performances largement suffisantes pour cet usage.

    Démo

    Une version de démonstration est disponible pour tester l'application sans créer de compte : pondi.fredericpinaud.cc/demo

    Déploiement

    L'application est déployée sur mon serveur personnel derrière Traefik en reverse proxy HTTPS. Le pipeline GitLab CI build l'image Docker et la déploie automatiquement via SSH à chaque push sur main.

    Code source

    Le projet est open source sur GitLab : gitlab.com/FredPi17/pondi

    2 vues