Ce projet est un système d'authentification complet développé avec la stack PERN (PostgreSQL, Express.js, React et Node.js). Il met en œuvre une architecture client-serveur moderne permettant la gestion sécurisée des utilisateurs au travers d'une API REST et d'une interface web React.
L'objectif principal de ce projet est de proposer une base solide pour le développement d'applications web nécessitant une authentification robuste, tout en appliquant les bonnes pratiques de développement backend, de sécurité et d'organisation du code.
Le système permet notamment :
- Création d'un compte utilisateur
- Authentification des utilisateurs
- Déconnexion sécurisée
- Protection des routes privées
- Gestion des profils utilisateurs
- Chiffrement des mots de passe avec bcrypt
- Authentification basée sur JSON Web Token (JWT)
- Validation des données reçues par l'API
- Gestion centralisée des erreurs
- Configuration par variables d'environnement
.
├── backend
│ ├── config
│ ├── controllers
│ ├── middlewares
│ ├── models
│ ├── routes
│ ├── services
│ ├── utils
│ └── server.js
│
├── frontend
│ ├── public
│ ├── src
│ │ ├── components
│ │ ├── pages
│ │ ├── context
│ │ ├── services
│ │ ├── hooks
│ │ └── App.jsx
│
└── README.md
L'application est organisée selon une architecture modulaire afin de faciliter la maintenance, les évolutions futures et la séparation des responsabilités entre les différentes couches de l'application.
- Node.js
- Express.js
- PostgreSQL
- JWT (JSON Web Token)
- bcrypt
- dotenv
- CORS
- React
- React Router
- Axios
- Context API
- CSS
git clone https://github.com/votre-utilisateur/pern-authentication.git
cd pern-authenticationcd backend
npm installcd frontend
npm installCréer un fichier .env dans le dossier backend.
PORT=
DB_HOST=
DB_PORT=
DB_USER=
DB_PASSWORD=
DB_NAME=
JWT_SECRET=
JWT_EXPIRES_IN=Démarrer le serveur backend :
npm run devDémarrer le client React :
npm run dev| Méthode | Route | Description |
|---|---|---|
| POST | /api/auth/register | Création d'un compte |
| POST | /api/auth/login | Authentification |
| POST | /api/auth/logout | Déconnexion |
| GET | /api/auth/me | Informations de l'utilisateur connecté |
Le processus d'authentification suit les étapes suivantes :
- L'utilisateur soumet ses identifiants via le client React.
- L'API Express vérifie les informations reçues.
- Le mot de passe est comparé à sa version chiffrée enregistrée dans PostgreSQL.
- Si l'authentification est valide, un jeton JWT est généré.
- Ce jeton est utilisé pour accéder aux ressources protégées de l'application.
Ce projet pourra être enrichi par plusieurs fonctionnalités complémentaires, notamment :
- Authentification à deux facteurs (2FA)
- Vérification d'adresse électronique
- Réinitialisation du mot de passe
- Authentification via Google ou GitHub (OAuth)
- Gestion des rôles et des permissions (RBAC)
- Conteneurisation avec Docker
- Déploiement automatisé (CI/CD)
Ce projet est distribué sous licence MIT.
Mmor Mbow
Étudiant en génie logiciel, passionné par le développement backend, les API REST, les bases de données et les architectures web modernes.