candidate-management-system

Système de Gestion de Candidats

Un système complet de gestion de candidats avec gestion de documents, développé avec Next.js, NestJS et PostgreSQL

🚀 Fonctionnalités

Gestion des Candidats

Gestion des Documents

Interface Utilisateur

🛠️ Technologies Utilisées

Frontend

Backend

🚀 Installation et Démarrage

Option 1 : Démarrage Rapide avec Docker

Prérequis

Démarrage Automatique

Sur Linux/Mac :

chmod +x start.sh
./start.sh

Sur Windows :

start.bat

Démarrage Manuel avec Docker

# Construire et démarrer tous les services
docker-compose up --build -d

# Voir les logs
docker-compose logs -f

# Arrêter les services
docker-compose down

Option 2 : Installation Manuelle

Prérequis

1. Configuration de la Base de Données

Créez une base de données PostgreSQL :

CREATE DATABASE candidate_manager;

1.1. Installation et Configuration de pgAdmin4

Installation de pgAdmin4 :

  1. Téléchargement :
  2. Première configuration :
    • Lancez pgAdmin4
    • Créez un mot de passe maître pour pgAdmin4
    • Ajoutez votre serveur PostgreSQL :
      • Nom : Local PostgreSQL (ou nom de votre choix)
      • Hôte : localhost
      • Port : 5432
      • Nom d’utilisateur : postgres (ou votre utilisateur)
      • Mot de passe : votre mot de passe PostgreSQL
  3. Création de la base de données :
    • Clic droit sur “Databases” → “Create” → “Database”
    • Nom : candidate_manager
    • Owner : postgres (ou votre utilisateur)
    • Cliquez sur “Save”
  4. Vérification de la connexion :
    • Testez la connexion dans pgAdmin4
    • Vérifiez que la base candidate_manager apparaît dans la liste

Configuration du fichier .env du backend :

# Dans backend/.env
DATABASE_URL="postgresql://postgres:votre_mot_de_passe@localhost:5432/candidate_manager"

Dépannage pgAdmin4 :

2. Configuration du Backend

cd backend
npm install

# Copier et configurer les variables d'environnement
cp .env.example .env
# Modifier .env avec vos paramètres de base de données

# Générer le client Prisma
npx prisma generate

# Exécuter les migrations
npx prisma migrate dev

# Démarrer en mode développement
npm run start:dev

3. Configuration du Frontend

cd frontend
npm install

# Démarrer en mode développement
npm run dev

🌐 Accès à l’Application

📚 API Endpoints

Candidats

Méthode Endpoint Description
GET /candidates Liste des candidats avec pagination
POST /candidates Créer un candidat
GET /candidates/:id Détails d’un candidat
PUT /candidates/:id Modifier un candidat
DELETE /candidates/:id Supprimer un candidat

Documents

Méthode Endpoint Description
GET /documents/candidate/:candidateId Documents d’un candidat
POST /documents/:candidateId Ajouter un document
PUT /documents/:id/status Modifier le statut d’un document
DELETE /documents/:id Supprimer un document

🎯 Fonctionnalités Spéciales

Alertes Automatiques

Validation des Données

Interface Responsive

Gestion des Documents

🔧 Scripts Disponibles

Backend

npm run start:dev    # Développement avec hot reload
npm run build        # Compilation TypeScript
npm run start:prod   # Production
npm run test         # Tests unitaires
npm run test:e2e     # Tests end-to-end
npx prisma studio    # Interface graphique pour la base de données

Frontend

npm run dev          # Développement
npm run build        # Build de production
npm run start        # Démarrage production
npm run lint         # Vérification du code

Docker

docker-compose up -d          # Démarrer les services
docker-compose down           # Arrêter les services
docker-compose logs -f        # Voir les logs
docker-compose restart        # Redémarrer les services

📝 Notes de Développement

Architecture

Sécurité

Performance

Qualité du Code

🐛 Dépannage

Problèmes Courants

Erreur de connexion à la base de données :

# Vérifier que PostgreSQL est démarré
# Vérifier les paramètres de connexion dans .env

Erreur CORS :

# Vérifier que le backend est accessible sur le bon port
# Vérifier la configuration CORS dans le backend

Problèmes Docker :

# Nettoyer les conteneurs et images
docker-compose down -v
docker system prune -a

🤝 Contribution

  1. Fork le projet
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Committez vos changements (git commit -m 'Add some AmazingFeature')
  4. Poussez vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails. Développé dans le cadre d’un test technique pour une alternance en développement web.