{"id":24576190,"url":"https://github.com/cartesd/quiz","last_synced_at":"2026-05-19T00:34:34.604Z","repository":{"id":270232227,"uuid":"909423515","full_name":"CarteSD/quiz","owner":"CarteSD","description":"Quiz de culture générale pour Comus Party","archived":false,"fork":false,"pushed_at":"2025-03-10T08:16:39.000Z","size":23525,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T08:32:58.667Z","etag":null,"topics":["quiz","socket-io"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CarteSD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-28T16:56:23.000Z","updated_at":"2025-03-10T08:16:42.000Z","dependencies_parsed_at":"2025-03-10T08:38:08.296Z","dependency_job_id":null,"html_url":"https://github.com/CarteSD/quiz","commit_stats":null,"previous_names":["cartesd/quizz"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarteSD%2Fquiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarteSD%2Fquiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarteSD%2Fquiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarteSD%2Fquiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CarteSD","download_url":"https://codeload.github.com/CarteSD/quiz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244036395,"owners_count":20387507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["quiz","socket-io"],"created_at":"2025-01-23T22:22:09.440Z","updated_at":"2026-05-19T00:34:34.456Z","avatar_url":"https://github.com/CarteSD.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Informations\nCe jeu est dédié et créé pour fonctionner sur la plateforme de mini-jeux en ligne Comus Party.  \n\nComus Party est une application de mini-jeux en ligne, elle est développée dans le cadre de la SAE 3.01 du BUT Informatique à l'IUT de Bayonne et du Pays Basque.\n\nCe jeu est un quiz de culture générale présentant différentes personnalités, que les joueurs doivent trouver. Au bout d'un certain nombre de manches, qui peut être définis par l'hôte de la partie, le joueur ayant le plus de points remporte la partie.\n\n## Déroulé d'une partie\nLorsque l'hôte de la partie décidé de lancer la partie sur la plateforme Comus Party, un `\u003ciframe\u003e` est affiché sur l'écran de chacun de joueurs, affichant ainsi le serveur de jeu.\n\nLe jeu affiche une image et les joueurs doivent deviner qui est la personnalité représentée sur l'image au bout d'un temps imparti. Ce temps peut être défini par l'hôte de partie et est par défaut de 30 secondes.\n\nSi un joueur trouve la bonne réponse, il gagne un point. Si aucun joueur ne trouve la bonne réponse au bout du temps imparti, personne ne gagne de point.\n\nAfin qu'une réponse soit valide, celle-ci doit contenir au moins le nom de famille de la personnalité. Dans le cas où plusieurs personnalités ont le même nom, la personnalité de \"référence\" prend la priorité sur cet usage unique du nom.  \n*Exemple : Pour Brigitte Macron, seul \"Macron\" ne sera pas valide car la personnalité de \"référence\" est Emmanuel Macron.*\n\nÀ la fin de la partie, le serveur de jeu affiche le classement final en prenant en compte plusieurs points :\n- Si aucun joueur n'a marqué de point, il n'y a pas de vainqueur.\n- Si un seul joueur a le score le plus élevé, il est le vainqueur.\n- Si plusieurs joueurs ont le score le plus élevé *(exæquo)* ils sont tous vainqueurs.\n\n*N.B : Le serveur de jeu renvoyant uniquement le tableau des scores avec le vainqueur \"premier\", Comus Party n'est pas exclu de pouvoir traiter ce tableau d'une manière qui lui convient mieux.*\n\n## Informations techniques\nCe jeu est développé en JavaScript, et utilise la librairie Socket.io pour la communication entre le serveur et les clients.\n\nLe serveur de jeu est développé en Node.js, et utilise Express pour la gestion des routes.\n\nL'interface graphique est réalisée en HTML / CSS avec l'utilisation de la bibliothèque CSS TailwindCSS pour simplifier l'utilisation des classes dans le développement.\n\nAfin d'initialiser une partie, le serveur attend la réception d'une pré-requête, permettant ainsi de créer une nouvelle instance d'un quiz dans laquelle l'ensemble des joueurs est répertorié avec leur UUID ainsi qu'un token généré aléatoirement *(ces tokens sont gérés entièrement par Comus Party)*.\n\nNous utilisons des tokens afin d'éviter tout vol d'identité durant une partie. Dans le cas où nous n'utiliserions pas ces tokens, il serait possible pour un joueur de se connecter à une partie sans y être invité en connaissant simplement l'UUID d'un autre joueur.\n\nAfin de se connecter au serveur de jeu, la requête doit être de la forme `/:gameCode/:token`. C'est ici que le serveur de jeu vérifie que la partie existe bien, et que le joueur est également répertorié dans celle-ci.\n\nUne fois que le joueur est connecté, il peut envoyer des réponses aux questions posées par le serveur. Si la réponse est correcte, le joueur gagne un point, sinon il ne gagne rien.\n\nÀ la fin de la partie, le serveur de jeu envoi une requête retournant les scores ainsi que le(s) vainqueur(s) de la partie.\n\n## Informations supplémentaires\nCe jeu est une première version, très simple afin de pouvoir réaliser un produit minimum viable pour la présentation de notre projet lors des soutenances de fin de semestre. Il est donc possible que des bugs soient présents, et que des améliorations soient nécessaires.\n\n## Développer\nPour déployer ou développer ce jeu, il est nécessaire d'avoir Node.js installé sur votre machine (disponible sur [le site officiel de Node.js](https://nodejs.org/)).\n\n1. Dupliquer le projet\n```bash\ngit clone https://github.com/CarteSD/quiz\ncd quiz\n```\n\n2. Installer les dépendances\n```bash\nnpm install\n```\n\n3. Compiler le CSS\n```bash\nnpm run build # Pour déployer\nnpm run watch # Pour développer\n```\n\n4. Lancer le serveur de jeu *(À chaque modification du code, il est nécessaire de relancer le serveur, d'exécuter l'étape 5. ci-dessous et de recharger la page du jeu)*\n```bash\nnpm run start\n```\n\n5. Lancer une requête d'initialisation de partie *(Cf section 3 - Informations techniques)* en POST sur l'adresse `http://localhost:3001/123/init` avec par exemple le corps de la requête suivant :\n```json\n{\n    \"settings\": {\n        \"nbRounds\": 5,\n        \"roundDuration:\": 15\n    },\n    \"players\": [\n        { \"username\": \"Jean\", \"uuid\": \"abc-123\", \"token\": \"token-abc-def\" },\n        { \"username\": \"Paul\", \"uuid\": \"def-456\", \"token\": \"token-ghi-jkl\" }\n    ]\n}\n```\n\nLe serveur de jeu est maintenant accessible à l'adresse `http://localhost:3001` *(ou bien au port indiqué dans le fichier `config.json`)*.\n\nPour le rejoindre, il suffit de se connecter à l'adresse :  \n- `http://localhost:3001/123/token-abc-def` pour le joueur Jean\n- `http://localhost:3001/123/token-ghi-jkl` pour le joueur Paul.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartesd%2Fquiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcartesd%2Fquiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartesd%2Fquiz/lists"}