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

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

Semaine 9 –

Retour sur le travail, premiers pas vers un frontEnd cohérent

Updates travail

  1. Le déploiement est opérationel
  2. Documentation de l'API en cours
  3. Readme complet pour le backend
  4. page d'accueil et système de navigation + map widget

À faire

  1. HomePage
  2. Bouton Flottant fonctionnel
  3. Page d'exploration
  4. (si motivation : ) trouver des icones pour le bouton flottant, faire fonctionner sur android physique, mettre les coordonnées des bookboxes sur la carte

Semaine 10 –

Refractor du projet, meilleure organisation des fichiers

Updates travail

  1. Squelette de la page recherche
  2. Debut du polish de la page main
  3. Documentation backend finie

à avoir pour la semaine prochaine

  1. fonctionnalités majeures d ajout et de retranchement de livres
  2. polish du squelette de navigation
  3. ajout possibilité de cliquer sur les livres dans navigation, plus page "générée automatiquement", idéalement, la page d un livre suit un plan general avec tout le texte de la page genere a partir des données du livre

Notes

Refractor très important de l'organisation des fichiers, le projet est maintenant plus facilement scalable

Problème lors du lancement sur android physique avec "mapbox_maps_flutter"

Semaine 11 –

Avancement majeur sur les fonctionnalitées principales

Updates travail

  1. Squelette de la page profil
  2. Squelette des fonctionnalitées du bouton flottant et de l'ajout / retrait de livre vía QR code
  3. Polish et continuation des features de la page navigation
  4. Page forum finie sans polish

à avoir pour la semaine prochaine

  1. barre de recherche fonctionnelle custom qui affiche les livres avec leur couverture au fur et a mesure que l on tape
  2. pouvoir ajouter un livre à la database via QR Code ou formulaire
  3. supporter la map pour windows et android
  4. polish des pages de livres + trier par X dans page books
  5. Utiliser FireBase pour faire le login et password
  6. trouver une place pour le bouton flottant du forum
  7. Ajouter history des livres dans le user backend

Backlog

  1. gameification + challenges
  2. choix des preferences lors du premier login (landing page)
  3. documentation
  4. tags

Notes

Refractor très important de l'organisation des fichiers, le projet est maintenant plus facilement scalable
refaire le design du profil + layout
penser aux metriques relevant
plusieurs modes de la page map, accomoder un switch de mode

Semaine 12 –

Préparations pour la foire des projets

Updates travail

  1. Ajout de l'historique de livres dans le user backend
  2. Squelette et première implémentation fonctionnelle de l'ajout d'un livre dans la base de données
  3. Amélioration de a page profile
  4. Travail sur les threads
  5. Fluidification du flux de l'app

à avoir pour la semaine prochaine

  1. pouvoir ajouter un livre à la database via QR Code ou formulaire
  2. polish des pages de livres + trier par X dans page books

Notes

La foire nous a apporté la confirmation que les utilisateurs seraient intéressés par la fonctionnalité de demander des livres.

Semaine 13 –

Fin du projet et rapport

Updates travail

  1. Amélioration de la barre de recherche et de création de threads ( ajout de visuels )
  2. Visuels dans la page Map et page bookBox
  3. Amélioration de a page profile
  4. Travail sur les threads
  5. Fluidification du flux de l'app

à avoir pour la semaine prochaine

  1. pouvoir ajouter un livre à la database via QR Code ou formulaire
  2. Livres favoris dans la page des livres
  3. Gérer les typos dans la barre de recherche
  4. Faire le rapport du projet

Notes

Ne plus jamais utiliser "Rebase" de github, manque de compréhension de l'utilité de la fonction.
Penser à la présentation du projet