Backend & data

Palimia

A personal cultural library with a catalog normalized on the server, separate private data and explainable recommendations.

Ethan Brosselard · Personal project

← All projects In development; hosting planned on my homelab.
Technical foundation
  • Next.js
  • TypeScript
  • PostgreSQL
  • Prisma
  • Better Auth
Palimia library in dark mode, with demonstration movies and their posters.

Technical decision

How it works

Provider catalogs are normalized on the server and kept separate from personal data.
  1. Provider catalogs
  2. Server-side validation and normalization
  3. Shared catalog
  4. Personal library and choices
In this case study

My contribution

I develop Palimia independently, using Next.js and strict TypeScript. My work includes:

  • modeling the catalog and personal library with PostgreSQL and Prisma;
  • validating and normalizing provider data on the server before import;
  • explainable recommendations, personal data export, and account deletion;
  • unit, component, PostgreSQL, and Playwright tests that support development.

The technical choices and limitations below describe the work in progress.

Inside the application

These screenshots show the application running locally in dark mode, with its French interface, 12 tracked movies, and 9 calculated suggestions. Titles and posters come from TMDB; ratings, favorites, and progress are demonstration data.

Palimia library in dark mode: 12 tracked movies and six visible entries with their posters, statuses, ratings, and progress.
View an interface detail
Interstellar detail: completed status, a demonstration rating of 9/10, and favorite status in the Palimia library.
Interstellar, Inception, Dune, and other tracked movies with their posters, ratings, favorites, and progress. Enlarge screenshot
Six Palimia movie recommendations in dark mode, with their posters and selection reasons.
A selection of the nine recommendations: each suggestion displays the reasons why it was selected. Enlarge screenshot

A personal cultural library

I started Palimia out of enthusiasm for technology and because my cultural tracking was scattered across several tools. I wanted to bring it into an application useful to me and others, building it myself.

Palimia brings movies, TV series, and video games together in one personal space. Its goal is to replace scattered lists with a private library where every work keeps its status, progress, rating out of ten, favorite state, and personal notes.

The main journey starts with searching a catalog supplied by external providers, continues with adding a work to the library, and leads to personal tracking and statistics. The application is designed as a cultural profile that can expand over time without mixing catalog data with each user’s private choices.

A deliberately gradual scope

The planned first beta focuses on movies, TV series, and video games. The data model and some integrations also anticipate anime, manga, and books, but these media remain outside the scope of this first beta.

Developed social features — public profiles, reviews, lists, and relationships — also remain disabled. The product therefore stays centered on a private tracker. Recommendations are implemented: each suggestion includes understandable reasons explaining why it was selected.

Two choices that shape the project

Keep one coherent application

The project is a modular monolith built with Next.js and strict TypeScript. PostgreSQL and Prisma support the catalog, provider references, and personal states, while Better Auth handles authentication. Provider calls remain server-side, and their data is validated and normalized before import.

Separate catalog data from personal data

For example, repeating a provider import should find the same catalog work while preserving each person’s ratings and progress. Idempotent imports and the data separation address this requirement.

This architecture gives each work a shared identity without flattening the characteristics of each media type. Imports are designed to be idempotent and safe under concurrency, while data provenance stays separate from the ratings, progress, and lists created by users.

Users can also export their personal data or delete their account. These flows are part of the application’s current implementation.

Validation and current limitations

Palimia is in development, with no public launch. Free access is planned, with an optional support button. Hosting is planned on my future homelab; deployment and validation on that infrastructure remain to be completed.

The repository includes unit, component, PostgreSQL, and Playwright tests, alongside security, privacy, and release checks. Its deployment architecture is prepared, but evidence from a target environment — configuration, migrations, backup and restore, monitoring, staging tests, and release checks — is still incomplete. These local checks describe the project’s engineering state; they are neither a production release nor user metrics.