Évaluation Pratique : Création d'une ToDo App en TypeScript avec React
Objectif de l'évaluation:
Projet
- Développer une application ToDoList avec React, vite et TypeScript.
- Chaque tache doit avoir :
- Un titre
- Une description
- Une priorité
- Un état (à faire, en cours, terminé)
- Une date d'échéance
- Vous devez gérer pour chaque tache :
- La création
- La modification
- La suppression
- Vous devez pouvoir
- Filtrer des taches
- Par priorité
- Par état
- Par date d'échéance
- Rechercher des taches
- Par titre
- Par description
- Filtrer des taches
Technique
- Vous serez par groupe de 4
- Vous devez utiliser react et TypeScript
- Vous devez avoir une interface convenable d'utilisation
- Vous pouvez utiliser les outils de styles que vous voulez (Tailwind, Emotion...)
- Vous devez avoir un code propre et bien organisé
- Vous devez mettre vore projet sur Github, m'ajouter sur GitHub (opens in a new tab) et avoir un historique propre
- Vous devez heberger le projet sur Vercel
Instructions détaillées:
Étape 1: Configuration initiale
- Initialisez un nouveau projet React avec TypeScript et vite
npm create vite@latest ts-exam -- --template react-ts
# pnpm create vite ts-exam --template react-ts
# yarn create vite ts-exam --template react-ts
Vous obtenez la structure suivantes
.
├── public
│ └── vite.svg
├── src
│ ├── assets
│ │ └── react.svg
│ ├── App.css
│ ├── App.tsx
│ ├── index.css
│ ├── main.tsx
│ └── vite-env.d.ts
├── README.md
├── index.html
├── package.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
Installer les dépendances
npm i
Installer tailwindcss
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
npx tailwindcss init -p
Ajouter au fichier tailwind.config.js
content: ["./src/**/*.{html,js,ts,jsx,tsx}"],
Composants
- Créer les composants de base
ToDoList
: UI de liste des tâchesToDoItem
: Tache unique
Étape 2: ToDoItem avec TypeScript
- Définissez une interface pour ToDoItem avec les propriétés suivantes
- id
- description
- priority
- status
- dueDate.
- Utilisez des énumérations :
- priority (Low, Medium, High)
- status (ToDo, InProgress, Done).
- Créez un type pour gérer la date (jour, mois, année) et l'heure
Étape 3 : Gestion de l'état avec React et TypeScript
- Implémentez la logique d'état pour ajouter, modifier, et supprimer des tâches en utilisant le hook useState.
- Utilisez des fonctions génériques pour manipuler l'état des tâches de manière type-safe.
Étape 4 : Interactions et contrôles avancés
- Ajoutez des méthodes de classe dans un composant de classe ToDoManager pour gérer les actions.
- Utilisez des décorateurs pour ajouter des logs ou des vérifications de sécurité sur les méthodes de gestion des tâches.
- Implémentez une barre de recherche pour filtrer les tâches par description ou priorité, utilisant type guards pour assurer la sécurité des types lors des opérations.
Étape 5 : Déploiement
- Deployer votre projet sur Vercel
- Creer un repo sur Github et y ajouter votre code
Étape 6 : Bonus
- Stocker les taches en localstorage
- Intégrez une bibliothèque JavaScript externe pour ajouter une fonctionnalité spécifique (par exemple, notifications ou date picker).
- Créez un fichier .d.ts pour décrire les types de la bibliothèque externe utilisée, pratiquant l'extension des types globaux.
Critère d'évaluation
- Fonctionnalités implémentées
- Qualité de code
- Compréhension
- Organisation