Nous t'invitons à coder un jeu génial nommé Da Movie Quiz, qui teste la culture cinématographique du joueur. Le principe de base est ultra simple:
Pour un film donné, le joueur doit trouver parmi une liste de 2 acteurs, lequel a réellement joué dans le film. Si le joueur donne une bonne réponse, il marque un point et la partie continue, sinon la partie s'arrête.
Et voilà, plutôt basique, mais efficace et fun.
-
Nous attendons que tu réalises la partie backend de ce jeu en exposant une API qui permettrait à un client frontend de l'implémenter. Pour cela il te faudra :
- Un endpoint pour créer une partie. (
POST /game
) - Un endpoint pour récupérer un film et la liste d'acteurs parmi laquelle le joueur devra trouver la bonne réponse. (
GET /game/<hash>/play
) - Un endpoint pour soumettre une réponse. (
POST /game/<hash>/play
) - Un endpoint pour récupérer le score et l'état de la partie du joueur. (
GET /game/<hash>
)
- Un endpoint pour créer une partie. (
-
Des tests unitaires sur une classe te seront demandés.
-
Une explication sur la façon dont tu aurais implémenté des tests fonctionnels sur ton API.
Important - Tu n'es pas obligé de développer tous les endpoints. Cependant celui qui propose un film et celui qui permet de répondre sont obligatoires.
-
Nous souhaitons que tu utilises le framework Symfony ou le micro-framework Silex. Pas de raw PHP
-
Côté stockage des données, Redis semble tout indiqué, mais si tu es plus à l'aise avec du Mongo ou autre, pas de soucis. (du Mysql/PostgreSQL relationnel semble lourd et innutile pour ce petit exo)
-
Pour récupérer les données cinématographiques, nous te proposons d'utiliser l'API de The Movie Database Tu es libre d'en utiliser une autre si tu as envie !
Tu ne seras pas jugé sur le jeu en lui-même et sur le fait qu'il fonctionne ou non. Nous regarderons essentiellement la façon dont tu as structuré ton projet, tu manipules les données et si les endpoints que tu auras implémentés sont complets.
Réalise le tout dans un repo git pour qu'on puisse ensuite voir comment tu organises tes commits, faire les codes reviews nécessaires, etc..
Une fois ton jeu finalisé et prêt à être commercialisé, on souhaite voir ton code (comme tu auras tout pushé consciencieusement sur git, pas de problème).
Des questions ?
A tout moment, tu peux m'envoyer un email => [email protected]