Giter VIP home page Giter VIP logo

post-it's Introduction

Post-It

Post-It est une web-app responsive de gestion de notes fortement inspiré de Google Keep. Elle a été développée dans le but de mettre en pratique des connaissances acquises sur l'écosystème React à travers des MOOCs.

La web app permet de :

  • Créer un compte
  • Se connecter
  • Créer une nouvelle note
  • Modifier une note existante
  • Supprimer une note

La web app se base sur l'API Post-It pour persister les données de chaque utilisateur.

Status

La web est dans un état fonctionnel minimal. De nombreuses fonctionnalités sont encore à ajouter parmi lesquelles :

  • Drag & Drop des notes
  • Permettre la connexion à partir d'un compte Google, Facebook, etc..
  • Modification optimiste sans attendre le retour de l'API pour fluidifier l'expérience utilisateur. Rollback en cas d'erreur.
  • Permettre de choisir une couleur pour chaque note.
  • Modification du mot de passe d'un compte.
  • Implémentation de l'écran de mot de passe oublié.

Démo

Le web app est hébergée sur Netlify.
Le compte suivant de démonstration peut être utilisé pour découvrir l'application sans créer de compte :

L'API Post-It est quant à elle hébergée sur heroku

Technologies

La web app utilise React pour définir les interfaces graphiques. Le choix a été fait d'utiliser massivement les functional components et d'utiliser les hooks pour gérer les états et les effets de bords.

Ce projet a été initialisé et configuré grâce à CRA (Create React App)

La librairie de composants React Bootstrap a été utilisée. En plus des composants offerts par React Bootstrap, Bootstrap (V4) a été utilisé afin de pouvoir utiliser ses nombreuses classes utilitaires. Vu la simplicité des écrans de l'application, le système de Grid de Bootstrap a été très peu utilisé au profit de l'utilisation généralisée de flexbox.

Axios a été priviligié pour faire les appels à l'API.

Les icônes de l'application sont toutes issues de react-icons.

L'affichage des notes est gérée par le module react-masonry-css, implémentation optimisé pour React du principe de masonry qui optimise le placement d'éléments en fonction de leur hauteur et de l'espace vertical disponible.

Gestion d'état

Le choix a été fait au début du projet de ne pas utiliser de bibliothèque de gestion d'état. La compléxité du projet ne me semblait pas nécéssité l'utilisation d'une telle bibliothèque et ça permettait de se concentrer sur l'apprentissage de React.

Les états locaux, spécifiques à un composant ont été extraits dans des custom hooks quand ils devenaient trop imposant pour réduire au maximum la définition des composants aux aspects graphiques

Un custom hook de gestion des informations de l'utilisateur s'interfaçant avec l'API Post-It pour se connecter est rendu global à toute l'application grâce à l'utlisation d'un Contexte React.

Un custom hook est dédié à la gestion des notes d'un utilisateur. Celui-ci s'initialise avec les informations de l'API puis permet de créer, modifier et supprimer une note en s'interfaçant avec l'API Post-It. Ce custom hook est rendu accessible à tous les composants de l'écran d'affichage des notes (visible ci-dessous) grâce à l'utilisation d'un Contexte React. L'utilisation d'un Contexte n'était pas nécessaire dans ce cas étant donné la faible compléxité de l'arbre de composants de cette écran. Cela permettait cependant de se familiariser avec cette nouvelle fonctionnalité de React.

Screenshot de l'écran d'affichage des notes

Ce choix de ne pas utiliser de bibliothèque bien qu'enrichissant a rapidement rendu la gestion des états fastidieuse. Si c'était à refaire, je choisirais une solution plus structurée et éprouvée comme Redux ou je privilégierais une solution comme react-query pour simplifier l'interfaçage avec l'API Post-It.

Installation

Pour utiliser la web app en local, yarn est nécessaire.

Après avoir cloné le dépôt Git. Tapez la commande suivante pour installer les dépendances :

yarn

Pour lancer l'application, tapez la commande :

yarn start

Pour bundle l'application, il suffit de taper la commande :

yarn build

post-it's People

Contributors

lsinquin avatar

Watchers

Nicolas avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.