Création d'une app web avec React

Tags :
  • POK
  • 2024-2025
  • temps 2
Auteurs :
  • Guillaume OLIANA

Un POK autour de React.js pour la création d'une application web de gestion de tâches style to-do list.

  • Connaissances de base en JavaScript.
  • Familiarité avec React.js (components, props, hooks).
  • Notions de base en HTML et CSS pour le styling.

Contexte du Projet

J'ai entrepris de créer une application de gestion de tâches, un projet basique mais qui permet selon mes recherches d'acquérir les bases. L'idée était de développer une application web qui soit à la fois légère, fonctionnelle et agréable à utiliser. Je n'ai pas vraiment atteint ce dernier objectif mais le sprint 2 me permettra d'aller plus loin dans le front end pur, les animations,

Horodatage

Mon parcours de développement s'est étalé sur plusieurs sessions de travvail :

Date Heures passées Activités
01/11/2024 2h Réflexion sur l'architecture, premiers paramétrages
02/11/2024 3h Création des premiers composants de liste
05/11/2024 2h Exploration et intégration de Firebase
07/11/2024 3h Développement du formulaire d'ajout de tâches
09/11/2024 3h Mise en place des filtres et de la logique de catégories
11/11/2024 2h "Raffinement" l'interface utilisateur
13/11/2024 2h Stylisation et harmonisation visuelle
15/11/2024 2h Tests, débogage et derniers ajustements

Parcours de Développement

Choix Technologiques

Après quelques réflexions, j'ai opté pour une stack moderne :

Étapes de Réalisation

Initialisation et Configuration

Les premiers jours ont été consacrés à mettre en place l'environnement de développement. J'ai configuré Vite pour avoir un projet React et j'ai intégré Tailwind CSS pour le design.

Développement des Composants

La construction des composants a été progressive mais la structure a été établie dès le début:

Intégration de Firebase

L'ajout de Firebase a été un tournant crucial. Il m'a permis de mettre en place une authentification sécurisée rapidement sans me préoccuper du système d'authentification.

Comme je l'ai developpé dans mon MON2.1, l'utilisation de Firebase permet de développer un système d'authentification sans trop de mal de façon rapide et pratique pour ne pas s'attarder sur cette tâche.

Fonctionnalités Implémentées dans le Code

Authentification Firebase :

Gestion de l'inscription et de la connexion des utilisateurs via Firebase Authentication. Utilisation des fonctions pour vérifier si un utilisateur est déjà connecté (persistance des sessions). Alternance entre les modes "Connexion" et "Créer un compte" via une logique conditionnelle dans l'interface.

Gestion des tâches :

Ajout d'une tâche avec des champs tels que : Titre Catégorie Niveau de priorité Date et heure Les données saisies dans le formulaire sont validées avant d'être enregistrées.

Stockage Firebase Firestore :

Les tâches créées par l'utilisateur sont enregistrées dans Firestore. Chaque tâche est associée à l'utilisateur connecté grâce à l'ID unique de celui-ci. A

ffichage des tâches :

Les tâches récupérées depuis Firestore sont affichées dynamiquement dans une liste. La liste est triée ou filtrée selon des critères comme la date ou la priorité.

Mise à jour et suppression des tâches :

Fonctionnalité pour éditer les détails d'une tâche existante. Suppression d'une tâche directement depuis l'interface, avec une synchronisation en temps réel avec Firestore.

Structure du Frontend :

Le frontend est conçu en React. Utilisation de composants pour organiser le code (ex. : TaskList, TaskForm, LoginForm). Les états globaux et locaux sont gérés efficacement via useState et useEffect.

Backend Firebase :

Firestore est utilisé pour gérer la base de données en temps réel. Les règles de sécurité Firestore assurent que chaque utilisateur accède uniquement à ses propres tâches.

Défis Rencontrés

Le développement n'a pas été un long fleuve tranquille. J'ai dû :

Apprentissages Clés

Ce projet m'a permis de :

Perspectives pour le SPRINT 2 :

Pour les prochaines versions, j'envisage :

  1. Ajouter des notifications
  2. Implémenter un système de sous-tâches
  3. Améliorer le design responsive
  4. Ajouter une barre de progression des tâches.
  5. Utiliser un formulaire pour ajouter des tâches (laisser seulement un bouton "Ajouter une tâche" sur la page)