API REST open source pour le jeu de cartes Altered, construite avec Symfony 8, API Platform et PostgreSQL. Elle expose les cartes, sets.
- PHP 8.4 + Symfony 8
- API Platform 4
- PostgreSQL 16
- Doctrine ORM + migrations
- JWT (LexikJWTAuthenticationBundle)
- Gedmo (traductions, soft delete)
- Docker (PostgreSQL via Symfony CLI)
Documentation disponible ici !
Cet installation est recommandé car on est sur d'avoir tous le même environnement de dev (mais peut être plus compliqué pour les personnnes n'ayant aucune connaissance en docker)
- PHP 8.4
- Composer
- Symfony CLI
- Docker (pour PostgreSQL)
git clone <repo-url>
cd altered-corecomposer installcp .env .env.localÉditer .env.local avec tes credentials PostgreSQL :
DATABASE_URL="postgresql://user:password@127.0.0.1:5432/altered_core?serverVersion=16&charset=utf8"symfony server:startLe Symfony CLI détecte automatiquement le compose.yaml et démarre PostgreSQL via Docker.
symfony console doctrine:database:create
symfony console doctrine:migrations:migratesymfony console lexik:jwt:generate-keypairUn fichier CSV est disponible dans datas/card_set.csv.
symfony console app:import:setsLes cartes proviennent du dépôt communautaire AlteredCommunity/databases. Créer un lien symbolique vers le répertoire local contenant les JSON :
ln -s /chemin/vers/community_database datas/databasesPuis lancer l'import :
# Toutes les cartes
symfony console app:import:cards
# Un set spécifique
symfony console app:import:cards --set CORE
symfony console app:import:cards --set ALIZEL'import est idempotent : il peut être rejoué sans créer de doublons.
La documentation interactive (Swagger UI) est disponible à :
http://localhost/api/docs
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/cards |
Liste paginée des cartes |
| GET | /api/cards/{id} |
Carte par ID |
| GET | /api/cards/reference/{reference} |
Carte par référence (ex: ALT_CORE_B_AX_01_C) |
| GET | /api/sets |
Liste des sets |
| GET | /api/sets/{id} |
Set par ID |
?set.reference=CORE
?faction.code=AX
?rarityInt=3
?typeInt=8
?name=Sierra
?promo=true
?kickstarter=false
?order[cardNumber]=asc
?order[rarityInt]=desc
Les routes protégées nécessitent un token JWT.
POST /api/auth/login
Content-Type: application/json
{ "username": "email@example.com", "password": "..." }Le projet est ouvert aux contributions de la communauté Altered.
Rejoins le canal #dev du Discord Altered et présente ce sur quoi tu veux travailler.
La coordination est essentielle pour éviter que plusieurs personnes travaillent sur la même chose en parallèle.
- Tout le travail se fait via Pull Request — aucun push direct sur
main - Une PR = une fonctionnalité ou un correctif
- Discuter de la PR sur Discord avant de la soumettre si le changement est conséquent
- Les PRs doivent passer la review d'au moins un autre contributeur avant d'être mergées
1. Fork / branche depuis main
2. Développe ta feature
3. Ouvre une Pull Request avec une description claire
4. Discussion & review
5. Merge
- Nouvelles routes API (collections joueurs, decks, etc.)
- Filtres supplémentaires sur les cartes
- Amélioration de l'import
- Tests automatisés
- Documentation
Projet communautaire — les données des cartes appartiennent à Equinox.