SecondRound - Le Monde du Jeu Vidéo d'occasion

vues ​

À Propos du Projet

SecondRound est une mobile web app conçue pour transformer l'expérience d'achat et de vente de jeux vidéo d'occasion. Ce projet est le fruit d'un défi intense de 10 jours réalisé en collaboration avec deux autres développeurs Full Stack. Ensemble, nous avons couvert chaque aspect du développement, de la conception visuelle à la mise en production, avec l'ambition de simplifier et d'enrichir les interactions entre les détenteurs de magasins de jeux vidéo et les joueurs.

Fonctionnalités pour les Vendeurs

  • Auto-génération de fiches produits: Photographiez les jeux et obtenez automatiquement une fiche produit détaillée, prête pour la vente.
  • Gestion des réservations: Visualisez et acceptez facilement les réservations en cours directement depuis l'accueil.
  • Stock et modifications: Un espace dédié pour gérer le stock et mettre à jour les fiches de jeux vidéo.

Fonctionnalités pour les Joueurs

  • Recherche simplifiée: Trouvez des jeux vidéo d'occasion près de chez vous grâce à la recherche et à l'auto-localisation.
  • Itinéraire et timer: Visualisez l'itinéraire pour récupérer votre jeu et suivez le timer de récupération sur la page d'accueil.

Technologies Utilisées

  • Ruby on Rails : Utilisé pour la gestion backend et la logique métier de l'application.
  • JavaScript : Utilisé pour rendre l'interface utilisateur dynamique et interactive.
  • Bootstrap : Utilisé pour la mise en page et le style de l'application.
  • PostgreSQL : Base de données relationnelle utilisée pour stocker les données des articles et des utilisateurs.
  • Redis : Stocker en cache les informations prise via l'appareil photo de l'utilisateur.
  • API GiantBomb & OpenAI : Intégrés pour récupérer les jackets des jeux video puis envoyer vers ChatGPT pour une génération de fiche produit.

Job logique

La logique principale de l'application est encapsulée dans GetGameInfosJob, un job programmé qui traite les données de jeux vidéo à partir de photos prises par les utilisateurs. Ce job utilise GetGameInfos, un service pour extraire des informations via une API externe et mettre à jour les données du jeu en conséquence. Ensuite, AttachGamePicture est appelé si le titre en anglais du jeu est présent, ce qui ajoute une image du jeu à la fiche. Enfin, le résultat est diffusé en temps réel via ActionCable pour mettre à jour l'utilisateur sur le statut du traitement.

get_game_infos_job.rb
class GetGameInfosJob < ApplicationJob
queue_as :default
 
retry_on ArgumentError, wait: 5.seconds, attempts: 1
 
def perform(game, game*user_photo, game_uuid)
game_infos_service = GetGameInfos.new(game_user_photo: game_user_photo)
game_infos = game_infos_service.call
game.update_with_api_data(game_infos)
AttachGamePicture.new(game: game).call if game.english_title.present?
ActionCable.server.broadcast("get_game_infos_channel*#{game_uuid}", { gameId: game.id })
end
end

Réflexions

SecondRound a été un challenge stimulant et formateur, offrant une plongée profonde dans les mécaniques de développement web et mobile sous contraintes de temps. Ce projet a non seulement amélioré nos compétences techniques mais aussi permis de tester de nouvelles approches pour améliorer l'interaction utilisateur dans le secteur du commerce de jeux vidéo d'occasion.

Project image