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
| 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 |
- Superviseur : encadrement d'équipes, logistique terrain, leadership
- Assistant Informaticien : réseaux, maintenance tablettes, CAPI, support IT
- Informations personnelles — Identité, téléphone (format tchadien), e-mail, MOOV/Airtel Money, province
- Formation — Niveau d'étude, diplôme obtenu
- Expérience — Enquêtes statistiques, opérations tablette, expériences spécifiques au poste
- Langues — Langues parlées (arabe, français, langues locales)
- Documents — CV, diplôme, lettre de motivation, pièce d'identité (PDF/JPG/PNG, max 5 Mo)
- ≥ 80 : Candidat prioritaire
- 50–79 : Candidat moyen
- < 50 : Candidat à revoir
- Bloc commun (50 pts) + bloc spécifique au poste (50 pts)
- 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
- 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
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
| 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 |
- Python 3.10+
- Node.js 18+
- npm 9+
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 8000cd 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
- Docker 24+
- Docker Compose v2
- Nom de domaine pointant vers le serveur :
recrutement.rgph3-tchad.org
git clone <repository-url> /opt/rgph3-recrutement
cd /opt/rgph3-recrutementcp .env.example .env
nano .envModifier les valeurs dans .env :
DJANGO_SECRET_KEY: générer avecpython -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
docker compose up -d --builddocker compose exec backend python manage.py migrate
docker compose exec backend python manage.py createsuperuser
docker compose exec backend python manage.py collectstatic --noinput# 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# 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| 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 |
- 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)
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