Bienvenue dans ce projet d’entraînement pour apprendre à développer une application React (client) avec un serveur Express (back).
Au fil de 21 exercices (un par jour), vous allez construire progressivement un mini-site complet qui simule quelques fonctionnalités d’Uber Eats (liste de restaurants, plats, panier, commande…).
- Structure du projet
- Installation et lancement
- Branches Git et workflow
- Comment réaliser un exercice et envoyer sa solution ?
- À propos des exercices
Le repository contient deux dossiers principaux :
- client/ : application front-end React, configurée avec Tailwind.
- server/ : application back-end Express, avec un endpoint de test
/api/test, et éventuellement d’autres endpoints à venir (CRUD, commandes, etc.).
Schéma rapide :
project-root
┣━━ client
┃ ┣━━ package.json
┃ ┣━━ vite.config.js (ou config CRA)
┃ ┣━━ tailwind.config.js
┃ ┣━━ postcss.config.js
┃ ┗━━ src
┃ ┣━━ App.jsx
┃ ┣━━ index.css
┃ ┗━━ ...
┣━━ server
┃ ┣━━ package.json
┃ ┣━━ server.js
┃ ┗━━ ...
┣━━ .gitignore
┣━━ README.md
┗━━ ...
Clonez le projet sur votre machine :
git clone <url_du_repo.git>
cd project-root- Pour le client :
cd client npm install - Pour le serveur :
cd ../server npm install
(Assurez-vous d’avoir Node.js >= 14 ou 16 sur votre machine.)
Il existe plusieurs manières de lancer le front et le back. La plus simple, en local, est de lancer chacun dans son propre terminal :
-
Serveur (Express)
cd server npm run devLe serveur tournera par défaut sur http://localhost:4000.
Testez : http://localhost:4000/api/test doit répondre{ message: "Hello from Express!" }. -
Client (React)
cd client npm run devL’interface web est disponible par défaut sur http://localhost:5173.
Nous utilisons ce schéma de branches :
- main : la branche principale, contenant la version stable du projet / la correction / la version d'Alexis.
- main/NOM: chaque développeur aura sa branche main de production (ex.
main/alexis,main/ethan, etc.). - dev/NOM : chaque développeur aura sa branche de travail (ex.
dev/alexis,dev/ethan, etc.).
- Récupérer la dernière version de
main:git checkout main git pull origin main
- Basculer sur votre branche de dev (ou la créer si c’est la première fois) :
git checkout -b dev/alexis # si elle n'existe pas encore # OU git checkout dev/alexis # si elle existe déjà
- Réaliser l’exercice (implémentation, tests, commits).
- Pousser vos modifications sur
dev/alexis:git add . git commit -m "Exo X - done" git push origin dev/alexis
- Créer une Pull Request depuis
dev/alexisvers votre branchemain/alexis. - Le lead/mentor révise la PR, la valide ou demande des corrections.
- Une fois validée : la PR est mergée dans votre branche
main/alexis.
Chaque jour, un nouvel exercice est publié via discord, dans le channel 💪・exercices. Suivez les étapes :
- Lisez l’énoncé de l’exercice du jour (20-30 minutes de travail).
- Sur votre branche de dev (ex.
dev/alexis), implémentez les changements demandés :- Ajoutez/modifiez le code front dans
client/srcsi besoin. - Ajoutez/modifiez le code back dans
server/si besoin.
- Ajoutez/modifiez le code front dans
- Vérifiez que tout fonctionne en local :
- Lancez le serveur
servervianpm run dev. - Lancez le front
clientvianpm run dev. - Testez le comportement demandé (affichage, CRUD, etc.).
- Lancez le serveur
- Commitez et poussez vos modifications :
git add . git commit -m "Exo X - Implementation" git push origin dev/alexis
- Ouvrez une PR de
dev/alexisversmain/alexis.- Donnez un titre clair à votre PR, par ex. « [Exo X] Ajout de la barre de recherche ».
- Ajoutez un petit commentaire décrivant ce que vous avez fait.
- Attendez la validation du mentor/lead. Il peut laisser des commentaires sur votre code.
- Faites les corrections si demandées et repoussez.
- Une fois validé, le mentor/lead merge la PR et l’exercice est considéré comme terminé.
Chaque exercice est pensé pour être court (20-30 minutes max), et s’inscrit dans la continuité du précédent.
À la fin des 21 jours, vous devriez avoir :
- Un listing de restaurants et de plats (CRUD complet),
- Un système de panier (ajout, suppression, total),
- Un processus de commande (progress bar, confirmation),
- Un peu de stockage local (localStorage pour conserver la recherche, le panier, etc.),
- Des fonctionnalités bonus comme la notation (rating) ou une connexion simple.
Le but est de pratiquer régulièrement et d’acquérir les fondamentaux de React, Express, l’intégration (Tailwind, barre de recherche, forms), et la gestion du versionning (Git, PR).
Bon courage et amusez-vous bien !
N’hésitez pas à poser vos questions, partager vos bloquages ou vos astuces sur le discord dans le canal dédié pour que tout le monde progresse ensemble.