AeViso (2021)

Lien du projet front sur Github: ici

Lien du projet api sur Github: ici

Stack: JS, Vite.js, React.js, TypeScript, Tailwind CSS, ReactQuery, API, Express, Joi, JWT, PostgresSQL, Docker

Ce projet est l'aboutissement de la formation de 5 mois à la Wild Code School. Il représente les compétences acquises lors de notre cursus.

Le porteur de projet, Maxime Savoie, est responsable d'un cabinet comptable. Beaucoup de ses clients sont des entreprises innovantes pouvant bénéficier de crédits d’impôt innovation (CII) ou recherche (CIR). Mais il est arrivé à une conclusion: si elles ne sont pas assidues quant au heures à déclarer pour bénéficier de ces crédits d'impot, elles perdent un temps non négligeable à la fin de l'année comptable pour fournir les justificatifs nécessaires. Ce qui est chronophage, et amène même certains de ses clients à ne pas faire de R&D voire même en faire mais ne pas la déclarer de peur de ne pas réussir à justifier le temps passé.

Il a donc décidé de faire confiance à la Wild pour que nous l'aidions à développer un outil capable de comptabiliser les heures de R&D provenant d'un entreprise. Le cabinet doitpouvoir générer des rapports en précisant une fourchette de date qui servira alors pour déclarer ces heures auprès des services des impôts.

Le tableau de bord que nous avons créé proposera trois interfaces, car nous avons dégagé des rôles différents en fonction des utilisateurs qui se connectent:

  • Les super administrateurs ( voir ci dessus ☝️) seront les personnes du cabinet comptable AeViso, ils mettront en place leur réseau de clients utilisant l'application. Ils doivent pour cela leur créer un compte et communiquer les identifiants aux responsables d'entreprises (qui devront remplacer leur mot de passe à la première connexion). Cette interface leur permet aussi de générer le rapport de n'importe quel projet de n'importe quelle entreprise. Ils ont le droit de lecture et d'écriture sur tous les endpoints de l'API mais l'interface développée dans le temps imparti ne comporte que les fonctionnalités vitales pour l'utilisation globale de l'application.

  • Les administrateurs seront les responsables d'entreprise. C'est l'interface la plus fournie, car une fois connectée la personne peut maintenant créer des identifiants pour ses collaborateurs, créer des projets de R&D pour lesquels il veut comptabiliser les heures passées dessus (y assigner seulement les collaborateurs qui travailleront dessus), générer un rapport concernant n'importe quel projet de son entreprise seulement. Il peut également s'assigner à un projet et créer des rapports de temps passé.
  • Les collaborateurs sont au coeur du projet, c'est grâce à leur remontés que les entreprises pourront prétendre à d'éventuels crédits d'impôt. C'est pour cela que leur interface doit être simple d'utilisation et intuitive. Ils ont seulement accès à la section de remplissage de rapport dans cette version

Bien sûr, tous ces rôles et autorisations sont contrôlés par l'api. Basée sur Express, nous utilisons des middleware pour vérifier les permissions de chaque rôle, empêcher un utilisateur d'écrire sur une ressource ne lui appartenant pas. Au login, un JWT est signé et envoyé en HTTP cookie only dans le header

Améliorations envisagées:

  • Cette version développée en à peine deux mois comporte les fonctionnalités minimales pour que l'application soit utilisable, mais l'interface Super Admin par exemple est dépourvue de beaucoup d'UX en comparaison avec ce que prévoit son rôle. L'api est développée pour lui offrir beaucoup plus d'accès. Le projet front mériterait donc d'être plus aboutie.
  • La façon dont le super administrateur créé le compte de l'administrateur n'est pas optimale, car il rédige son mot de passe, il faudrait par la suite que chaque utilisateur puisse créer son propre compte, et réinitialise son mot de passe par email.
  • La structure des composants React pourrait être plus découpée, certains composants se ressemblent.