Génération de QR-codes reconfigurables

Encadrants : 

Occurrences : 

2019

Nombre d'étudiants minimum: 

2

Nombre d'étudiants maximum: 

4

Nombre d'instances : 

1

Contexte

QR-code pointant sur PAFLes codes barre en deux dimensions, ou QR-code, sont aujourd'hui présents sur tous les supports commerciaux, les affiches, les cartes de visite. La plupart du temps, ces QR-codes contiennent une URL qui pointe sur l'événement ou l'objet référencé.

Cependant, cet usage est assez limité : en effet, le QR-code présent sur une affiche de concert continuera, après que celui-ci ait eu lieu, à pointer sur la même page, qui finira par disparaître. Idéalement, il serait plus intéressant, une fois le concert passé, que ce QR-code pointe sur la page où on peut acheter les enregistrements de ces concerts, ou sur la page du groupe. Pour cela, il faudrait pouvoir changer la destination du QR-code, c'est-à-dire insérer un serveur situé à une adresse fixe qui redirige ensuite vers la page idoine.

De la même manière, dans un établissement qui change sans cesse de nom ou qui est amené à déménager dans un avenir proche, il peut être intéressant de produire des cartes de visite équipées de QR-code, sachant que les données pointées seront automatiquement mises à jour lorsque cela sera nécessaire sans besoin de réimprimer les cartes.

Les pièces du foyer des élèves, des associations, les bureaux, pourraient tous être équipées de QR-code adaptatif. Chacun pourrait, par exemple, faire pointer le code de sa chambre vers sa dernière réalisation, sa page Facebook, sa musique préférée, sans jamais avoir à modifier le QR-code affiché. Le bureau des sports pourrait rediriger son QR-code vers le prochain tournoi auquel il participera. Le bureau des élèves redirigerait le sien vers la page avec les horaires des permanences.

Réalisation

Dans le cadre de ce projet, vous allez réaliser un serveur web permettant de créer des QR-code qu'il est ensuite possible d'associer à des URLs qui varient au cours du temps. Ce serveur sera écrit dans le langage de programmation Elixir (utilisé notamment par WhatsApp, Pinterest, Lonely Planet) en utilisant le framework web Phoenix. Votre serveur sera ensuite déployé chez un hébergeur comme Gigalixir qui permet de déployer gratuitement une application Elixir.

Votre serveur devra :

  • permettre à un utilisateur d'utiliser un compte externe (par exemple un compte Google) afin de ne pas avoir à gérer la sécurité des mots de passe ;
  • permettre à un utilisateur de créer un QR-code en donnant un identifiant pour ce QR-code et une URL initiale ;
  • récupérer l'image du QR-code correspondant à un identifiant sous la forme d'un PNG ou d'un SVG ;
  • permettre à un utilisateur de voir la liste des ses QR-codes et de la télécharger sous la forme d'un fichier CSV contenant l'identifiant qu'il a donné, l'URL actuelle et un pointeur vers les images de ces QR-codes dans différents formats (PNG et SVG) ;
  • permettre à un utilisateur de modifier l'URL vers laquelle pointe un de ses QR-code ou de le supprimer ;
  • accumuler des statistiques sur l'utilisation des QR-codes afin de pouvoir les restituer à l'utilisateur.

Si le temps le permet, vous pourrez également ajouter les fonctionnalités suivantes :

  • permettre à l'utilisateur de créer des QR-code en masse ou de les mettre à jour en important un fichier CSV ;
  • générer des jetons, révocables après une certaine date ainsi qu'à la demande, permettant à l'utilisateur de gérer (créer, modifier, supprimer) ses QR-codes par le biais d'une API, le jeton servant d'authentification ;
  • permettre de choisir son style de QR-code (couleur, forme des points individuels, taille, etc.) ;
  • d'autres fonctionnalités que vous imaginerez.

Cible

Ce projet est prioritairement destiné à des personnes motivées par l'apprentissage d'un nouveau langage de programmation (Elixir) et prêtes à s'investir dans la découverte de nouveaux concepts (framework web Phoenix, génération de QR-codes, Javascript, APIs, Google OAuth, etc.). De plus, afin de pouvoir disposer des dernières versions des logiciels utilisés, il est souhaitable d'utiliser son propre ordinateur personnel pour travailler sur ce projet.