Thanks to visit codestin.com
Credit goes to github.com

Skip to content

phillipian413/kidime

Repository files navigation

INSEED — RGPH-3 : Plateforme de Recrutement

Application web de recrutement des Superviseurs et Assistants Informaticiens pour le Troisième Recensement Général de la Population et de l'Habitat (RGPH-3) au Tchad.

Développée pour l'Institut National de la Statistique, des Études Économiques et Démographiques (INSEED).

URL de production : https://recrutement.rgph3-tchad.org


Architecture technique

Composant Technologie
Frontend React 18, React Router 6, Axios, Recharts, Lucide Icons
Backend Django 5.x, Django REST Framework, django-filter
Base de données SQLite (dev) / PostgreSQL 15 (production)
Serveur web Nginx (reverse proxy + fichiers statiques)
Serveur WSGI Gunicorn
Conteneurisation Docker & Docker Compose

Fonctionnalités principales

Système dual-poste

  • Superviseur : encadrement d'équipes, logistique terrain, leadership
  • Assistant Informaticien : réseaux, maintenance tablettes, CAPI, support IT

Formulaire public (5 étapes)

  1. Informations personnelles — Identité, téléphone (format tchadien), e-mail, MOOV/Airtel Money, province
  2. Formation — Niveau d'étude, diplôme obtenu
  3. Expérience — Enquêtes statistiques, opérations tablette, expériences spécifiques au poste
  4. Langues — Langues parlées (arabe, français, langues locales)
  5. Documents — CV, diplôme, lettre de motivation, pièce d'identité (PDF/JPG/PNG, max 5 Mo)

Scoring automatique (0–100)

  • ≥ 80 : Candidat prioritaire
  • 50–79 : Candidat moyen
  • < 50 : Candidat à revoir
  • Bloc commun (50 pts) + bloc spécifique au poste (50 pts)

Dashboard d'administration

  • Statistiques avec visualisation graphique (par sexe, province, statut, score)
  • Ventilation par poste (Superviseur / Assistant Informaticien)
  • Filtrage, recherche, actions en lot
  • Export CSV intelligent (colonnes dynamiques selon le poste filtré)
  • Détail candidature complet + changement de statut

Sécurité

  • Rate limiting (5 soumissions/heure, 10 tentatives login/heure)
  • Headers de sécurité (CSP, X-Frame-Options, HSTS en production)
  • Sessions sécurisées avec cookies HttpOnly
  • Protection CSRF

Structure du projet

kidime/
├── backend/
│   ├── config/                  # Settings, URLs, WSGI, middleware
│   ├── recruitment/             # App Django (models, views, serializers, admin)
│   ├── manage.py
│   └── requirements.txt
├── frontend/
│   ├── public/
│   ├── src/
│   │   ├── components/
│   │   │   ├── RecruitmentForm.jsx
│   │   │   ├── formSteps/       # PersonalInfo, Education, Experience, Languages, Documents
│   │   │   └── dashboard/       # Login, DashboardLayout, Statistics, ApplicationsList, ApplicationDetail
│   │   ├── constants/formOptions.js
│   │   ├── services/api.js
│   │   └── styles/App.css
│   └── package.json
├── docker-compose.yml
├── nginx/nginx.conf
├── .env.example
└── README.md

API REST

Endpoint Méthode Description
/api/candidatures/ POST Soumettre une candidature
/api/admin/login/ POST Connexion admin
/api/admin/logout/ POST Déconnexion admin
/api/admin/candidatures/ GET Liste des candidatures (paginée, filtrable)
/api/admin/candidatures/<id>/ GET Détail d'une candidature
/api/admin/candidatures/<id>/statut/ PATCH Modifier le statut
/api/admin/candidatures/bulk-statut/ POST Mise à jour en lot
/api/admin/candidatures/export/ GET Export CSV (filtres : poste, statut, catégorie score)
/api/admin/dashboard/stats/ GET Statistiques tableau de bord

Installation en développement

Prérequis

  • Python 3.10+
  • Node.js 18+
  • npm 9+

Backend

cd backend
python -m venv venv

# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

pip install -r requirements.txt
python manage.py makemigrations recruitment
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 8000

Frontend

cd frontend
npm install

# Configurer l'URL de l'API
# Créer .env avec : REACT_APP_API_URL=http://localhost:8000/api

npm start
  • Frontend : http://localhost:3000
  • Backend : http://localhost:8000
  • Admin Django : http://localhost:8000/admin/
  • Dashboard React : http://localhost:3000/admin/login

Déploiement en production (Docker)

Prérequis serveur

  • Docker 24+
  • Docker Compose v2
  • Nom de domaine pointant vers le serveur : recrutement.rgph3-tchad.org

1. Cloner le projet

git clone <repository-url> /opt/rgph3-recrutement
cd /opt/rgph3-recrutement

2. Configurer l'environnement

cp .env.example .env
nano .env

Modifier les valeurs dans .env :

  • DJANGO_SECRET_KEY : générer avec python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
  • POSTGRES_PASSWORD : mot de passe fort pour la base
  • Les autres valeurs sont pré-configurées pour le domaine recrutement.rgph3-tchad.org

3. Lancer les conteneurs

docker compose up -d --build

4. Initialiser la base de données

docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser
docker compose exec backend python manage.py collectstatic --noinput

5. Configurer SSL (Let's Encrypt)

# Installer certbot sur l'hôte
sudo apt install certbot
sudo certbot certonly --webroot -w /opt/rgph3-recrutement/certbot/www -d recrutement.rgph3-tchad.org

# Les certificats seront montés dans le conteneur nginx via docker-compose
# Relancer nginx après obtention du certificat
docker compose restart nginx

Commandes utiles

# Voir les logs
docker compose logs -f

# Redémarrer
docker compose restart

# Appliquer les migrations après mise à jour
docker compose exec backend python manage.py migrate

# Export des candidatures
docker compose exec backend python manage.py dumpdata recruitment --indent 2

# Backup PostgreSQL
docker compose exec db pg_dump -U rgph3_user rgph3_db > backup_$(date +%Y%m%d).sql

Variables d'environnement

Variable Description Défaut
DJANGO_SECRET_KEY Clé secrète Django (insecure dev key)
DJANGO_DEBUG Mode debug True
DJANGO_ALLOWED_HOSTS Hôtes autorisés localhost,127.0.0.1
DATABASE_URL URL de connexion PostgreSQL sqlite:///db.sqlite3
CORS_ALLOWED_ORIGINS Origines CORS autorisées http://localhost:3000,...
CSRF_TRUSTED_ORIGINS Origines CSRF de confiance http://localhost:3000,...
REACT_APP_API_URL URL de l'API pour le frontend http://localhost:8000/api

Contraintes métier

  • Date limite de candidature : 10 avril 2026 à 15h30 (heure de N'Djamena)
  • Numéros de téléphone : 8 chiffres (ex: 66XXXXXX) ou avec indicatif +235
  • Taille max fichiers : 5 Mo par document
  • Postes : Superviseur, Assistant Informaticien
  • Numéro de dossier : Généré automatiquement (RGPH3-SUP-XXXX / RGPH3-AI-XXXX)

Thème visuel

Couleurs du drapeau du Tchad :

  • Bleu : #002664
  • Jaune : #FECB00
  • Rouge : #C60C30

INSEED — Institut National de la Statistique, des Études Économiques et Démographiques République du Tchad

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors