Skip to content

gschmirgal/frontMkmPy

Repository files navigation

frontMkmPy

Symfony PHP Doctrine Bootstrap Chart.js Turbo License

frontMkmPy est une application web Symfony moderne dédiée au suivi professionnel de l'évolution des prix des cartes Magic: The Gathering.

Elle sert d'interface front-end sophistiquée pour la base de données du projet mkmpy et intègre l'intelligence artificielle de MKMOraclePy pour des prédictions de prix avancées.

📖 Table des matières

✨ Fonctionnalités

📊 Analytics & Visualisation

  • Graphiques interactifs Chart.js avec évolution des prix et prédictions IA
  • Statistiques en temps réel avec animations de compteurs sur la homepage
  • Rankings dynamiques : top gainers/losers en absolu et pourcentage (1j/7j/30j)
  • Système de cache intelligent en base de données (TTL 25h, warmup automatique)
  • Comparaisons historiques et analyse de tendances
  • Export de données en CSV et autres formats

🌐 Interface utilisateur moderne

  • Design responsive Bootstrap 5 avec support mobile complet
  • Thème adaptatif clair/sombre avec détection automatique du système
  • Navigation SPA ultra-rapide avec Turbo.js
  • Animations fluides et transitions élégantes
  • Homepage impactante avec sections modulaires

🔍 Recherche & Navigation

  • Recherche avancée multi-critères avec filtres intelligents
  • Navigation fluide avec URLs localisées (EN/FR)
  • Pagination optimisée avec KnpPaginator
  • Tri dynamique des tables avec localStorage

🌍 Internationalisation

  • Support multilingue complet (Français/Anglais)
  • Sélecteur de langue avec drapeaux et URLs localisées
  • Traductions dynamiques dans les contrôleurs et templates
  • Interface adaptative selon la locale

🎮 Fonctionnalités Magic: The Gathering

  • Intégration Scryfall pour images et métadonnées
  • Hover d'images avec prévisualisation des cartes
  • Gestion des extensions avec comptage automatique des cartes
  • Support des cartes foil et versions alternatives
  • Flip cards avec animations CSS

🛠️ Stack technique

Backend

  • Symfony 7.3 - Framework PHP moderne
  • Doctrine ORM 3.5+ - Mapping objet-relationnel
  • PHP 8.2+ - Dernières fonctionnalités du langage
  • MySQL/MariaDB - Base de données relationnelle

Frontend

  • Twig 3.x - Moteur de templates modulaire
  • Bootstrap 5 - Framework CSS responsive
  • Turbo.js - Navigation SPA sans JavaScript complexe
  • Chart.js 4.x - Graphiques interactifs
  • Bootstrap Icons - Iconographie cohérente

Architecture

  • AssetMapper - Gestion d'assets moderne sans Webpack
  • Symfony UX - Composants réactifs (Turbo, ChartJS, TwigComponent)
  • Composants Twig - Architecture modulaire et réutilisable
  • JavaScript modulaire - Code organisé en modules ES6+

📋 Prérequis

  • PHP >= 8.2 avec extensions : pdo_mysql, intl, opcache
  • Composer 2.x - Gestionnaire de dépendances PHP
  • MySQL 8.0+ ou MariaDB 10.6+
  • Symfony CLI (recommandé pour le développement)
  • Git pour le versioning

🚀 Installation

1. Cloner le dépôt

git clone https://github.com/gschmirgal/frontMkmPy.git
cd frontMkmPy

2. Installer les dépendances

composer install

3. Configuration

# Copier le fichier de configuration
cp .env .env.local

# Éditer .env.local et configurer DATABASE_URL
# DATABASE_URL="mysql://user:password@127.0.0.1:3306/frontmkmpy"

4. Base de données

# Créer la base de données
php bin/console doctrine:database:create

# Appliquer les migrations
php bin/console doctrine:migrations:migrate

5. Assets

# Compiler les assets
php bin/console asset-map:compile

6. Cache warmup (optionnel)

# Générer le cache initial pour les statistiques et rankings
curl http://localhost:8000/cache/warmup

# Ou via la commande console
php bin/console app:stats-cache:invalidate

7. Lancer l'application

# Avec Symfony CLI (recommandé)
symfony server:start

# Ou avec PHP built-in server
php -S 0.0.0.0:8000 -t public

🌐 Utilisation

URLs principales

  • Homepage : / (redirige vers /en ou /fr)
  • Extensions : /fr/expansions
  • Cartes d'une extension : /fr/expansion/{id}
  • Détail d'une carte : /fr/card/{cardid}/{expansionid}
  • Rankings : /fr/rankings?timeframe=7d&foil=normal
  • Recherche : /fr/search?search=motclef
  • Administration : /fr/admin/logs/mkmpy

Fonctionnalités clés

  • Changement de langue via le sélecteur dans la navbar
  • Thème sombre/clair automatique ou manuel
  • Rankings de prix : visualisez les plus fortes hausses/baisses sur différentes périodes
  • Filtres avancés : normal/foil, variations absolues/relatives, 1j/7j/30j
  • Export CSV depuis les tables de données
  • Graphiques interactifs sur les pages de détail des cartes
  • Cache automatique pour des performances optimales

📁 Structure du projet

frontMkmPy/
├── src/
│   ├── Command/             # Commandes console (cache, stats)
│   ├── Controller/          # Contrôleurs avec logique métier
│   ├── Entity/              # Entités Doctrine ORM
│   ├── Repository/          # Requêtes optimisées (rankings, stats)
│   ├── Service/             # Services métier (cache, stats)
│   └── Twig/Components/     # Composants Twig réutilisables
├── templates/
│   ├── components/          # Composants UI modulaires
│   │   └── home/           # Composants de la homepage
│   ├── card/               # Pages des cartes
│   ├── expansion/          # Pages des extensions
│   └── ranking/            # Pages des rankings
├── assets/
│   ├── js/                 # JavaScript modulaire
│   └── styles/             # Styles CSS personnalisés
├── config/
│   ├── packages/           # Configuration des bundles
│   └── routes.yaml         # Routes localisées
├── translations/           # Fichiers de traduction (EN/FR)
└── migrations/             # Migrations de base de données

🔧 Configuration

Variables d'environnement (.env.local)

DATABASE_URL="mysql://user:pass@host:3306/db"
APP_ENV=prod
APP_SECRET=your-secret-key

Cache et performances

# Invalider et régénérer tous les caches
php bin/console app:stats-cache:invalidate

# Nettoyer les entrées de cache expirées
php bin/console app:stats-cache:clean

# Warmup via HTTP (pour cron)
curl https://votre-domaine.com/cache/warmup

Production

# Optimisation pour la production
php bin/console cache:clear --env=prod
php bin/console asset-map:compile

# Permissions (Linux/Unix)
sudo chown -R www-data:www-data var/
sudo chmod -R 775 var/

# Configuration cron recommandée (warmup quotidien)
0 1 * * * curl -s https://votre-domaine.com/cache/warmup > /dev/null 2>&1

🤝 Contribution

  1. Forkez le projet
  2. Créez une branche feature (git checkout -b feature/ma-feature)
  3. Commitez vos modifications (git commit -m 'Ajout ma feature')
  4. Poussez la branche (git push origin feature/ma-feature)
  5. Ouvrez une Pull Request

🔗 Liens utiles

Projets liés

  • mkmpy - Script Python de collecte de données CardMarket
  • MKMOraclePy - Intelligence artificielle pour prédictions de prix
  • Portfolio - Portfolio du développeur

Documentation

APIs externes

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

About

Symfony front for mkmpy

Resources

Stars

Watchers

Forks