Django à Solvay, chaque année la même chose?

Chaque année, les vacances de Pâques sont synonymes de cauchemars et nuits blanches pour les étudiants de Solvay. Effectivement, ils auront 2 jours virgule 5 pour recréer Airbnb, BlaBlaCar, Vivino ou encore Tricount à l’aide du célèbre framework Django. Une tâche d’autant plus difficile que la majeure partie des étudiants ne comprend pas grand chose, parfois rien, à la programmation et à Python… Et si je vous disais que ces projets aux apparences très différentes sont en réalité les mêmes avec des appellations différentes?

A travers cet article, je vous propose de prendre un peu de recul pour extraire les similitudes et caractéristiques communes de ces projets. Qu’est-ce que Mr Bersini cherche à évaluer chez ses étudiants?

Story commune

Une plateforme qui met en relation 2 types d’utilisateurs : ceux qui proposent un bien/service et ceux qui en bénéficient. Chaque utilisateur peut se créer un compte et se connecter. Une fois connecté, l’utilisateur peut mettre un bien à disposition (vin, voiture, appartement,…) de la communauté moyennant un prix. Cette communauté peut acheter/louer ce bien et ensuite laisser un feedback (rating). Finalement, l’utilisateur peut consulter les réservations/achats qu’il a effectués et/ou voir les reservations/achats qu’il a reçus/obtenu pour son bien.

Caractéristiques communes

Comme nous venons de le voir, les scénarios se ressemblent. Mais en terme de « code » qu’est ce que ça signifie? Simplement que les fonctionnalités et donc les « controllers » (= les fonctions) et les « templates » (= les pages html) à mettre en place se ressemblent très fort. Essayons de les lister :

  1. Page de connexion : l’utilisateur se connecte moyennant un nom d’utilisateur et un système d’identification (password, réponse à une question secrète, choix d’une couleur,… )
  2. Page de création de compte  : l’utilisateur se crée un nouveau compte en fournissant une série d’informations à son sujet (nom, prénom, âge, sexe, photo,…)
  3. Page de modification de profil : l’utilisateur peut mettre à jour son profil (sa photo, son numéro de téléphone, son âge,…)
  4. Page de mise à disposition de son bien : l’utilisateur fournit les caractéristiques du bien qu’il met à disposition (prix, disponibilités, photo, marque,…)
  5. Page pour visualiser les bien existants : pour effectuer une réservation/un achat, l’utilisateur doit pouvoir visualiser tous les bien disponibles et cliquer sur le bouton « réserver/acheter » du bien qui l’intéresse.
  6. Page récapitulative : l’acheteur et le vendeur peuvent visualiser les réservations qu’ils ont faites ou « reçues » (souvent au travers d’un calendrier)

Si l’étudiant crée ces 6 pages correctement, il obtiendra minimum 14/20. Pour faire grimper sa note, il peut réaliser l’une ou l’autre des fonctionnalités suivantes :

  1. Rating : suite à une réservation/achat, l’acheteur et le vendeur peuvent s’évaluer l’un l’autre (via un commentaire, une note sur 5, un like/unlike,…)
  2. Déconnexion : donner la possibilité à l’utilisateur de se déconnecter
  3. Chercher un bien : pour éviter de voir tous les biens existants, donner la possibilité à l’utilisateur d’effectuer une recherche via certains filtres (prix, dates, nombre de personnes,…)
  4. Ajouter des « options payantes » : petits déjeuners, checkin-late, bagages encombrants, …
  5. Améliorer le design (CSS) : Cette fonctionnalité est à prendre en compte en dernier lieu. Le professeur cherche à évaluer votre compréhension du code et nom votre goût artistique.

Avec ça, sa note pourra grimper jusqu’à 20/20 à conditions d’être bien réalisés.

Ce qui diffère

Comme nous venons de le voir, ces différents projets partagent un énorme tronc commun. Mais quelles sont les différences/nuances qui les distinguent? A nouveau, essayons de dresser une liste pour y voir plus clair :

  1. Le type de bien : du vin, une voiture, un mobile-home, son appartement, … Et si cette année c’était de la nourriture (Menu Next Door), des Bureaux (Bird Office), des services (List Minut), des cours particuliers (SuperProf),…?
  2. Le système de Login : il est peu probable que vous ayez simplement à introduire un nom d’utilisateur et un password pour vous connecter. Il faudra probablement répondre à une question secrète, choisir une couleur ou une forme parmi un panel de choix,… mais le principe reste le même : il faut introduire 2 informations et vérifier qu’elles sont liées.
  3. Le profil utilisateur : en fonction du type de bien, certaines informations seront plus ou moins pertinentes (l’âge, la marque de voiture, les études du prof particulier,…

Comment procéder ?

Une fois les consignes reçues, la manière de procéder elle aussi est la même chaque année. Et il est très important de s’y prendre correctement sans vouloir aller trop vite.

  1. Extraire les fonctionnalités des consignes : quels sont les différents types d’utilisateurs et que peuvent-ils faire sur ma plateforme?
  2. Réaliser les Wireframes : design grossier (au crayon sur une feuille) de tous les templates qui composeront votre site avec un scénario qui les relient entre eux (« quand je clique là, j’arrive là et ça modifie ça« ). Règle : une fonctionnalité = une page html.
  3. Conception de la base de données relationnelle :
    • Quels sont les différents objets à créer? ex : User, Bien, Booking, Feedback,..
    • Quelles sont les caractéristiques de chaque objet ? ex : Booking = date (DateField), prix(IntegerField), is_paid(=BooleanField), bien(ForeignKey–>Bien), client(ForeignKey–>User), …
    • Quelle est la relation entre eux? ex : un utilisateur peut faire plusieurs feedbacks mais un feedback n’est donné que par un et un seul utilisateur
  4. Faites chauffer du café et commencez à coder

Comment se préparer ?

Si chaque année les projets se ressemblent tellement, pourquoi ne pas anticiper et réaliser l’un des projets de l’année passée? Vous verrez, ce n’est pas si compliqué !

Il existe aussi pas mal de ressources sur internet pour vous aider (stackoverflow, la doc officielle de Django, openclassroom, …). Et évidemment le bouquin rédiger par Pierre Alexis et Hugues Bersini lui-même : Apprendre la programmation web avec Python et Django (Attention : vous n’aurez pas le temps de le lire durant vos 2 jours de projets).

J’espère que cet article vous sera utile. Si vous avez la moindre question ou si vous avez besoin d’aide ou de conseils n’hésitez pas à me contacter. Je ne peux pas faire le projet à votre place, mais je peux vous aider à comprendre ce que vous faites !

 

> pour recevoir les slides du cours
–> (laisser votre adresse email via ce lien et/ou en commentaire de cet article)

> pour recevoir le code – BlaBlaCar (pas encore disponible)
–> (laisser votre adresse email via ce lien et/ou en commentaire de cet article)

 

 

 

Laisser un commentaire