À propos du projet

OpenMTG est une application web d’auto-hébergement pour gérer une collection de cartes Magic: The Gathering. Elle s’adresse aux individus et petits groupes souhaitant garder leurs données d’inventaire, de decks et de prix sur leur propre serveur, plutôt que dans un service hébergé. La gestion de collection permet d’ajouter des cartes par nom via une recherche floue Scryfall, et d’enregistrer la quantité, l’état, le statut foil, la langue, le prix et l’édition. Les prix sont automatiquement actualisés depuis Scryfall à un intervalle configurable (par défaut 72 heures) avec un taux de requête limité (2 par seconde). Les collections et decks peuvent être importés/exportés dans plusieurs formats, et les listes de decks de Moxfield, MTGO ou Arena peuvent être collées pour créer un deck pré-rempli en une seule étape, avec un indicateur de progression par carte. Le constructeur de decks prend en charge les zones mainboard, sideboard et commander, ainsi qu’une vue d’analyse du deck couvrant le CMC, la courbe de mana et la distribution des couleurs. Une page de statistiques décompose la collection par rareté, couleur, type, état, édition et valeur estimée. Une liste de souhaits suit le prix actuel, l’historique des prix sur 90 jours et envoie des alertes lorsque les cartes passent sous un prix cible. D’autres fonctionnalités incluent des comptes multi-utilisateurs gérés par l’admin avec des collections isolées, des échanges de cartes entre utilisateurs sur la même instance (avec confirmation des deux côtés avant transfert), le suivi des prêts avec nom du destinataire et date, le téléchargement de photos recto/verso, les favoris, un flux d’ajout rapide, le support USD et EUR plus des devises définies par l’admin avec actualisation automatique des taux, et une page Showroom publique affichant uniquement les cartes et decks sélectionnés explicitement (désactivable par instance). Une intégration optionnelle avec Home Assistant envoie des alertes d’échange et de liste de souhaits via des webhooks par utilisateur, et expose les statistiques de collection en temps réel via un endpoint pull authentifié par bearer — elle est bloquée par l’admin et désactivée par défaut. La pile technologique est Python 3.14 avec FastAPI, SQLAlchemy et Alembic en backend, et React avec Vite et TanStack Query en frontend. Le stockage est PostgreSQL 16 ou SQLite (selon le fichier Compose utilisé, fixé à la première configuration). Nginx sert de proxy inverse, et le déploiement se fait via Docker et Docker Compose, écoutant sur le port 8080 par défaut. La configuration passe par un fichier .env et un panneau d’admin, avec des migrations de base de données exécutées automatiquement au démarrage. La télémétrie est opt-in et anonyme, désactivable via la variable d’environnement NOTEL. Le projet est sous licence AGPL-3.0 ; un compte admin est créé au premier lancement, puis seuls les admins peuvent créer des utilisateurs supplémentaires.