Description du projet

Lino est un projet visant à bonifier l'initiative des boîtes à livres et encadrer les activités littéraires de la communauté étudiante.Initié par le CLUM à l'automne 2023, le projet des boîtes à livres sert à promouvoir les échanges et partages au sein de la communauté étudiante. Installés dans plusieurs pavillons du campus, elles permettent à tous de trouver et se procurer des livres gratuitement et réduisent potentiellement le gaspillage en encourageant les étudiants à échanger leurs livres.

Cependant, l'infrastructure actuelle limite la portée de l'initiative...

Ce projet consiste à concevoir une application répondant aux objectifs suivants:

Exigences

Besoins fonctionnels

Besoins non-fonctionnels

Infrastructure

Design

lien vers le Miro du design

Rapport d'avancement

  • Exigences & Analyse
  • Prototypage & Conception
  • Implémentation: Infrastructure & Application
  • Validation

Semaine 1 –

Ouverture de projet & Élaboration des exigences

Objectifs

  • Prendre en main les outils qui seront utilisés pour le projet
  • Produire une première version de l'échéancier
  • Déterminer les exigences du projet
  • Étudier le domaine, les notions et outils envisagés pour le projet

Réalisations

  • Déterminer le public ciblé
  • Dresser une liste non exhaustive des exigences
  • Comprendre le domaine
  • Choisir la technologie pour la base de données (MongoDB)

Notes

Discussions sur la portée du projet, voir quelques projets similaires , quelques fonctionnalitées, exigences ou technologies utilisées (NFC, airtags). Evocation d'aide de personnes extérieurs ( principalement pour aider à avoir un retour sur le design et le ressenti de l'application ) Discussions pour avoir un ordre d'idée des fondements principaux à avoir le plus tôt possible dans le projet ( avoir les sketchs papier, avoir les buts UI / UX et les exigences)

Semaine 2 –

Finalisation des exigences et public cible

Exigences

  • recevoir une notification lorsque X livre est insere / enleve dans une boite a livre du campus
  • Connaitre les livres dans la boite a livre
  • Statistiques sur les livres (fréquence de transfert, categories les plus populaires, nombre de livre, analytiques en general)
  • possibilte de feedback sur l application
  • possibilte de feedback sur l application sur les livres
  • bouton d action flottant avec des actions importantes ( acces a la camera, laisser une review )
  • carte avec toutes les boites a livre du campus

Public cible et partis intéressés

  • Personnel étudiant et de l université
  • Mairie de Montreal
  • Personne lambda (sans affiliation à l'université)
  • Gérant de la boite à livres / personnel gérant bénévole

Notes

Discussions sur le "feel" de l'application : devrait être éphémère, passager comme les livres dans la boîte, les discussions et threads sur les livres sont supprimés après un certain temps d inactivité La palette de couleur sera basée sur les couleurs LINO Discussions sur les applications de la technologie NFC

Partage d'un crash course pour le développement de backend : The Odin Project

Semaine 3 –

Premières discussions sur le design et l'architecture

Design

lien vers le Miro du design

Infrastructure

  • Flutter
  • MongoDBl
  • NodeJS
  • Typescript
  • Fastify

Écologie

Encourrager l'utilisation de l'application en amenant edes statistiques sur les arbres sauvés (consommation de papier évitée en n'ayant pas acheté le livre)

Notes

Création du serveur MongoDB Notes incomplètes, discussions sur le design de l'interface, difficile à noter Important : pouvoir justifier le choix de chacune des technologies de l'infrastructure nommés précédement

Création et suppression d'une branche "Proto-Flutter" pour tester rapidement le prototype de l'API avec Flutter, et pour l'apprentissage

Suivi d'un tutoriel pour apprendre à utiliser Flutter : lien

Semaine 4 –

Première itération du design et backend

Notes sur l'API :

Le mot de passe sera hashé selon l'algorithme de la librairie Argon2
Le "savedTrees" est discuté car avec un arbre, on peut produire en moyenne 196 livre par arbre ( source ), ce n'est donc pas un indicateur pertinent
"Tracked books" sont les livres que l'utilisateur a demandé à la communauté ou marqué comme étant désiré, une notification apparaîtra sur son appareil quand ce livre arrivera dans une boîte à livre


Fonctions implémentées (livres)
  • getBookfromBookBox
  • recupère livre d'une des bookBoxs en utilisant son id

  • addExistingBook
  • Ajoute un livre en utilisat son id

  • updateEcoImpact
  • ajoute au compte de l'utilisateur l'eau, les arbres et l'impact carbone sauvé par le livre qu'il a emprunté ou déposé, il ne peut pas utiliser deux fois le même livre

  • updateBooks
  • Met à jour les livres dans une BookBox

  • getBooksFromISbn
  • fetch un livre avec googleAPI et l'ISBN donné

  • searchBooks
  • filtre les livres selon plusieurs critères

Fonctions implémentées (threads)
  • createThread
  • Crée un thread avec un titre, un livre, username, etc.

  • addThreadMessage
  • Ajoute un message à un thread

  • toggleMessageReaction
  • find the thread, message, then add the reaction

  • searchThreads
  • Selon des critères,

  • getBooksFromISbn
  • fetch un livre avec googleAPI et l'ISBN donné

  • searchBooks
  • filtre les livres selon plusieurs critères

Fonctions implémentées (utilisateur)
  • loginUser
  • vérifie si l'utilisateur entré correspond au mot de passe et donne log in l'uitlisateur via un token

  • addToFavourites
  • ajoute un livre aux favoris de l'utilisateur

  • removeFromFavourites
  • enlève un livre des favoris de l'utilisateur

  • getFavourites
  • Renvoie les favoris

  • getEcologicalImpacct
  • renvoie l'impact écologique

  • getUserName
  • ernvoie le nom d'utilisateur par l'id d'utilisateur



Première itération du design

Logo Lino

Notes

Refresh tokens
Ne pas oublier la technologie NFC
Ajouter des recommendations quand l'on emprunte un livre ou quand l'on en recherche un
Ajouter un feedback après le fetch des informations du livres avec google lens

Semaine 5 –

Retours sur le design

Dernière itération du design

Deuxième itération du designde l'application

Retours sur le design

  • burger menu pas nécessaire, il faut repenser la disposition des éléments
  • La couleur jaunâtre des pages de paramètres est à revoir
  • ajouter des catégories de tri : genre, catégorie
  • Ajouter les pop ups pour la sélection de livre
  • revoir les threads
  • condenser le menu

Développement de tests unitaires dans l'API

Pour faciliter et accélerer le développement, les tests unitaires ont été implémentés en priorité

Architecture de l'application

Schéma décrivant les structures de données et leur intéractions

Notes

Abandon de l'idée des refresh tokens Beaucoup de discussions sur le design et un peu sur la portée du projet

Semaine 6 –

Début de l'implémentation, planification en détail de l'infrastructure

Version finale du diagramme de données

Lien vers le diagramme ici

Schéma décrivant les structures de données et leur intéractions

Schéma du Diagramme API

Premier dessin du Diagramme des interactions entre APIs

À faire au courrant de la semaine

  1. requirements généraux de l'application
  2. Diagramme API
  3. Compléter le diagramme de modèle de données
  4. Détailler les requirements propres à chaque page de l'app ( front end majoritairement )

Semaine 7 –

Assignation des issues et retour sur du travail déjà fait

Diagramme API

Schéma décrivant les structures de données et leur intéractions

Version non finale, sera aggrémentée au fil du développement

À faire au courrant de la semaine

  1. Faire les issues assignées pour chacun, voir ce lien pour la progression en temps réel des tâches
  2. Documenter les changements

Notes

Discussions sur la valeur et l'utilité des réactions (à la manière des upvotes Reddit) et si un utilisateur peut mettre une seule ou plusieurs réactions mention de faker, un package python qui genere des certaines donnees de maniere random mention de postman, service pour tester les APIs

Semaine 8 –

Retour sur le travail

Updates travail

  1. Refractor APIs, séparation du nommage des routes et des l'utilisation des fonctions
  2. readme dans backend/src pour keep track of
  3. dummy app

À faire au courrant de la semaine

  1. Documentation du code actuel
  2. version sans polish de l'application

Notes

Utilisation des NFCs et questions sur le fonctionnement vis à vis du hardware et de IOS vs Android