PalPortal
Rendre lisible un serveur de jeu que personne ne pouvait consulter
Livré à un client, hébergé et maintenu sur son infrastructure
Le projet
Les données d'un serveur Palworld vivent dans un fichier de sauvegarde binaire propriétaire, illisible pour les joueurs comme pour l'administrateur. J'ai livré un portail qui les ouvre. Vingt-deux pages : profils des joueurs et des guildes, encyclopédie des espèces, classements, succès, statistiques, carte interactive du monde, calculateur de reproduction, plus un espace d'administration avec synchronisation et journaux. Les données sont rafraîchies toutes les quinze secondes environ. Hébergé en Docker derrière un proxy, sans que l'adresse du serveur ne soit jamais exposée.
Ce qui a été difficile
Les pages ne savent jamais d'où viennent les données. Une variable d'environnement suffit à basculer entre un monde fictif en mémoire, la base, l'API du jeu, un accès FTP Nitrado ou une sauvegarde. Les sauvegardes sont des fichiers binaires propriétaires : plutôt que d'écrire un parseur qu'il aurait fallu réparer à chaque mise à jour du jeu, j'ai mis un adaptateur devant un convertisseur externe. La carte, elle, est écrite à la main, sans librairie de cartographie. C'est le choix le plus discutable du projet, Leaflet aurait fait l'affaire, mais je voulais le zoom, le déplacement et les filtres exactement comme je les avais en tête.
En chiffres
- 22 pages
- 5 sources de données interchangeables
- Docker et docker-compose
Technologies
- Next.js 15
- TypeScript
- Prisma
- SQLite
- Zod
- TanStack Query
- Recharts
- Docker
- Vitest
- Playwright
Les autres projets
- TournouahFaire tourner un tournoi de plusieurs centaines de joueurs sans qu'il s'écroule
- RoyaleMetricsLe projet où j'ai appris à ne pas casser ce qui est en production
- Overlay de diffusion par visionLire un jeu en temps réel, sans API
- CompteurTwitchBotUn bot de chat qui suit la partie en direct
Je cherche une alternance à partir de septembre 2026, rythme 2 jours à l'université, 3 jours en entreprise. Pourquoi recruter un profil licence.