Backend & données

Palimia

Une bibliothèque culturelle personnelle avec un catalogue normalisé côté serveur, des données privées séparées et des recommandations explicables.

Ethan Brosselard · Projet personnel

← Tous les projets Développement en cours ; hébergement prévu sur mon homelab.
Socle technique
  • Next.js
  • TypeScript
  • PostgreSQL
  • Prisma
  • Better Auth
Bibliothèque Palimia en mode sombre, avec des films de démonstration et leurs affiches.

Choix technique

Comment ça fonctionne

Catalogue externe normalisé côté serveur, séparé des données personnelles.
  1. Catalogues fournisseurs
  2. Validation et normalisation côté serveur
  3. Catalogue commun
  4. Bibliothèque et choix personnels
Dans cette étude

Ma contribution

Je développe seul Palimia, une application Next.js en TypeScript strict. Mon travail comprend notamment :

  • la modélisation du catalogue et de la bibliothèque personnelle avec PostgreSQL et Prisma ;
  • la validation et la normalisation des données fournisseurs côté serveur avant import ;
  • les recommandations explicables, l’export des données personnelles et la suppression du compte ;
  • les tests unitaires, composants, PostgreSQL et Playwright qui accompagnent le développement.

Les choix techniques et les limites présentés ci-dessous décrivent le travail en cours.

L’application en images

Ces captures proviennent de l’application exécutée localement en mode sombre, avec une bibliothèque de 12 films suivis et 9 suggestions calculées. Les titres et affiches proviennent de TMDB ; les notes, favoris et progressions sont des données de démonstration.

Bibliothèque Palimia en mode sombre : 12 films suivis et six entrées visibles avec leurs affiches, statuts, notes et progressions.
Voir un détail de l’interface
Détail d’Interstellar : statut terminé, note de démonstration de 9/10 et favori dans la bibliothèque Palimia.
Interstellar, Inception, Dune et d’autres films suivis avec leurs affiches, notes, favoris et progressions. Agrandir la capture
Six recommandations de films Palimia en mode sombre, avec leurs affiches et les raisons de leur sélection.
Extrait des neuf recommandations : chaque suggestion affiche les raisons de sa sélection. Agrandir la capture

Une bibliothèque culturelle personnelle

J’ai commencé Palimia par passion pour la technologie et parce que mes suivis culturels étaient dispersés entre plusieurs outils. Je voulais les réunir dans une application utile pour moi et pour d’autres, en la développant moi-même.

Palimia rassemble films, séries et jeux vidéo dans un même espace personnel. L’objectif est de remplacer les listes dispersées par une bibliothèque privée où chaque œuvre conserve son état, sa progression, sa note sur dix, son statut de favori et ses notes personnelles.

Le parcours principal va de la recherche dans un catalogue alimenté par des fournisseurs externes à l’ajout dans la bibliothèque, puis au suivi et aux statistiques personnelles. L’application est pensée comme un profil culturel qui pourra s’enrichir progressivement sans mélanger les données du catalogue avec les choix privés de l’utilisateur.

Un périmètre volontairement progressif

La première bêta prévue se concentre sur les films, les séries et les jeux vidéo. Les modèles de données et certaines intégrations anticipent aussi les anime, les manga et les livres, mais ces médias restent hors du périmètre de cette première bêta.

Les fonctions sociales développées — profils publics, avis, listes et relations — restent elles aussi désactivées. Le cœur du produit demeure donc un outil privé. Les recommandations sont implémentées : chaque suggestion est accompagnée de raisons compréhensibles pour expliquer sa sélection.

Deux choix qui structurent le projet

Garder une application cohérente

Le projet utilise un monolithe modulaire construit avec Next.js et TypeScript strict. PostgreSQL et Prisma portent le catalogue, les références vers les fournisseurs et les états personnels, tandis que Better Auth gère l’authentification. Les appels aux fournisseurs restent côté serveur et leurs données sont validées puis normalisées avant import.

Séparer le catalogue et les données personnelles

Par exemple, relancer un import fournisseur doit retrouver la même œuvre dans le catalogue, tout en conservant les notes et la progression propres à chaque personne. C’est le rôle de l’import idempotent et de la séparation des données.

Cette architecture conserve une identité commune pour chaque œuvre sans effacer les particularités de chaque média. Les imports sont conçus pour être idempotents et résistants à la concurrence, et la provenance des données reste séparée des notes, progressions et listes créées par l’utilisateur.

L’utilisateur peut également exporter ses données personnelles ou supprimer son compte. Ces parcours font partie du fonctionnement actuel de l’application.

Validation et limites actuelles

Palimia est en développement, sans lancement public. Le projet est préparé pour un accès gratuit, avec un bouton de soutien facultatif prévu. L’hébergement est envisagé sur mon futur homelab ; le déploiement et la validation sur cette infrastructure restent à réaliser.

Le dépôt comprend des tests unitaires, composants, PostgreSQL et Playwright, ainsi que des contrôles de sécurité, de confidentialité et de release. L’architecture de déploiement est préparée, mais les preuves sur un environnement cible — configuration, migrations, sauvegarde et restauration, supervision, tests de staging et contrôles de release — restent à compléter. Ces validations locales décrivent l’état technique du projet ; elles ne constituent ni une mise en production ni des métriques d’utilisateurs.