Ce projet est un clone de X (anciennement Twitter) développé pour apprendre et maîtriser Node.js et Express. Il intègre plusieurs technologies et concepts avancés pour offrir une application web complète.
Le projet est accompagné de notices détaillées (dans le dossier /notice) qui permettent de reproduire le projet étape par étape depuis zéro. Ces notices sont numérotées et couvrent tous les aspects du développement :
- Initialisation du projet
- Gestion des tweets avec MongoDB et Mongoose
- Refactorisation et gestion des erreurs
- Authentification
- Protection des routes et gestion des profils
- HTTPS et sécurité
- Configuration VPS et GitHub
- Lancement du serveur en production
- Recherche et suivi d'utilisateurs
- Validation par email et réinitialisation de mot de passe
- Node.js & Express : Pour le développement du serveur et des API.
- MongoDB & Mongoose : Pour la gestion de la base de données, avec MongoDB Atlas pour l'hébergement.
- Passport : Pour la gestion des sessions et l'authentification, incluant la connexion via Google OAuth.
- Nodemailer :
- Sparkpost en production pour l'envoi d'emails
- Mailtrap en développement pour tester les fonctionnalités d'email
- Multer : Pour la gestion des fichiers, permettant aux utilisateurs de choisir un avatar.
- HTTPS : Configuration pour sécuriser les communications.
- Architecture MVC : Pour une séparation claire des responsabilités dans le code.
- Middlewares : Pour protéger les routes et gérer les accès.
- Authentification : Connexion avec des identifiants classiques ou via Google OAuth.
- Gestion des utilisateurs : Création, modification, suppression de comptes, et gestion des avatars.
- Gestion des tweets : Création, lecture, mise à jour et suppression de tweets.
- Système de suivi : Suivre et ne plus suivre d'autres utilisateurs.
- Envoi d'emails : Validation de l'email lors de l'inscription et réinitialisation du mot de passe.
- Interface utilisateur : Utilisation de SweetAlert pour des notifications élégantes.
- SweetAlert : Pour des alertes et notifications interactives.
- Day.js : Pour la gestion des dates et heures.
- UUID : Pour la génération de tokens uniques.
- Bcrypt : Pour le hachage des mots de passe.
-
Cloner le dépôt :
git clone https://github.com/HenriTeinturier/node-app-x.git cd node-app-x -
Installer les dépendances :
npm install
-
Configurer les variables d'environnement : Créez un fichier
.envavec les configurations nécessaires (voir.env.example). -
Lancer le serveur :
npm run dev:http
-
Accéder à l'application : Ouvrez votre navigateur et allez à
http://localhost:3000.
Le projet est configuré pour être déployé sur un VPS avec PM2 pour la gestion des processus. Les certificats SSL sont gérés avec Let's Encrypt.
- Utilisation de Mailtrap pour tester l'envoi d'emails en environnement de développement
- Configuration facile via les credentials Mailtrap dans les variables d'environnement
- Utilisation de Sparkpost pour l'envoi réel d'emails
- Configuration via les API keys Sparkpost dans les variables d'environnement
Les contributions sont les bienvenues. Veuillez soumettre une pull request pour toute amélioration ou correction.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.