Vue d'ensemble
Une plateforme moderne d'envoi de SMS conçue pour la RDC et l'Afrique.
Gydn Message Send est une solution complète qui connecte votre entreprise aux 4 opérateurs mobiles de la RDC : Vodacom, Airtel, Orange et Africell. Elle gère l'envoi de codes d'authentification (OTP), les notifications transactionnelles, les campagnes marketing et bien plus.
Fonctionnalités
Tout ce que vous pouvez faire avec la plateforme.
Envoi de SMS simples
Envoyez des SMS individuels via notre API ou l'interface admin.
- API REST
- Interface web
- Historique complet
Codes OTP
Codes à 6 chiffres sécurisés avec expiration et cooldown.
- TTL configurable
- Usage unique
- Anti brute-force
Notifications
Confirmations, alertes, rappels automatiques.
- Templates dynamiques
- Variables personnalisables
- Multi-destinataires
Campagnes massives
Envoyez des milliers de SMS en un clic.
- Import CSV
- Sélection utilisateurs
- Suivi temps réel
Templates réutilisables
Modèles avec variables {{code}}, {{nom}}…
- Éditeur intégré
- Prévisualisation
- Versionning
Notifications in-app
Centre de notifications avec badges et filtres.
- Badge topbar
- Marquage lu/non lu
- Historique
Architecture
Comment les différents composants communiquent entre eux.
┌──────────────────────────────────────────────────────┐
│ │
│ 👤 Utilisateur → 🌐 Interface publique (Blade) │
│ 🛡️ Admin → 🎛️ Panneau admin │
│ │
└──────────────────┬───────────────────────────────────┘
│
┌──────────▼──────────┐
│ Contrôleurs │
│ (HTTP + Services) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ MySQL 8.0 │
│ users, sms_*, │
│ settings │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Redis │
│ Queue + Cache OTP │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ eSMS Africa API │
│ (Bearer Auth) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Vodacom · Airtel │
│ Orange · Africell │
└─────────────────────┘
Rôles utilisateur
3 niveaux d'accès avec permissions distinctes.
- ✓ Gestion utilisateurs (CRUD)
- ✓ Gestion templates SMS
- ✓ Envoi groupé et campagnes
- ✓ Configuration du site
- ✓ Sauvegarde / Restauration
- ✓ Impression des données
- ✓ Accès à tous les SMS
- ✓ Vidage des tables système
- ✓ Voir les utilisateurs
- ✓ Gestion templates SMS
- ✓ Envoi groupé
- ✓ Voir l'historique SMS
- ✗ Supprimer utilisateurs
- ✗ Modifier les rôles
- ✗ Configuration système
- ✗ Sauvegarde / Restauration
- ✓ Dashboard personnel
- ✓ Ses propres statistiques
- ✓ Modifier son profil
- ✓ Ses notifications
- ✓ Changer mot de passe
- ✗ Accès admin
- ✗ Voir autres utilisateurs
- ✗ Envoi groupé
Authentification & 2FA
Connexion sécurisée par email OU téléphone + code OTP.
Saisie email OU téléphone + mot de passe. Détection automatique du format par regex.
Code aléatoire à 6 chiffres stocké dans Redis. TTL configurable (10 min par défaut).
Le code est envoyé par SMS via eSMS Africa avec le Sender ID "eSMSDRC".
Comparaison en temps constant (hash_equals) pour éviter les timing attacks.
Cooldown 60s · Blocage après 5 tentatives · Lockout 15 minutes.
Le code est invalidé immédiatement après utilisation réussie.
Admin/Manager → /admin/dashboard · Utilisateur → /dashboard.
/admin/settings
ou individuellement par utilisateur dans son profil.
Envoi d'un SMS
Comment envoyer un SMS via le service Laravel.
Envoyez un SMS en utilisant le service
SmsService :
app(\App\Services\Sms\SmsService::class)->send(
to: '0893338800', // → normalisé en +243893338800
body: 'Votre message' // → 1 à 6 segments (918 char max)
);
📊 Étapes du traitement
Ligne dans sms_messages avec statut queued
Job SendSmsJob envoyé sur la queue Redis
Le worker appelle EsmsProvider->send()
0893338800 → +243893338800 (format E.164)
POST vers https://sms.esmsafrica.io/api/messages/send
Statut → sent ou failed
Webhook met à jour → delivered
Envoi groupé (Bulk SMS)
Envoyez des SMS à des milliers de destinataires en un clic.
⚙️ Caractéristiques
Destinataires groupés par paquets de 50
Vitesse limitée à ~10 SMS/seconde
Barre de progression dynamique dans l'interface
Bouton "Annuler" pendant l'envoi
Envoyés, délivrés, échoués, coût cumulé
Calculé avant lancement
Base de données
Structure des tables principales (MySQL 8.0).
users
— Utilisateurs
Identité, contact, rôle, statut, préférences 2FA
sms_messages
— Messages SMS
Destinataire, contenu, provider, statut, coût, dates
sms_templates
— Templates SMS
Modèles avec variables dynamiques {{code}}, {{nom}}
sms_campaigns
— Campagnes
Campagnes groupées avec statistiques globales
settings
— Configuration
Configuration dynamique du site (nom, logo, couleurs)
notifications
— Notifications
Notifications in-app (Laravel standard)
Fournisseur SMS — eSMS Africa
Configuration et fonctionnement de l'API eSMS.
⚙️ Configuration .env
SMS_PROVIDER=esms ESMS_API_KEY=esms_live_xxxxx ESMS_SENDER_ID=eSMSDRC ESMS_BASE_URL=https://sms.esmsafrica.io ESMS_TIMEOUT=15
Authorization: Bearer [KEY]
POST /api/messages/send
API REST
Intégrez nos services dans vos applications (mobile, web, etc.).
L'API utilise Laravel Sanctum pour l'authentification par token. Chaque utilisateur dispose de tokens personnels.
🔗 Endpoints disponibles
/api/health
/api/auth/login
/api/user
/api/sms/send
/api/sms/messages
/api/webhooks/sms/esms/status
Administration
Toutes les fonctionnalités admin disponibles.
Utilisateurs
CRUD complet avec filtres et statistiques
/admin/users
Templates SMS
Créer et gérer les modèles de messages
/admin/sms-templates
Historique SMS
Voir tous les SMS envoyés
/admin/sms-messages
Envoi groupé
Créer et suivre les campagnes
/admin/bulk-sms
Configuration
Nom, logo, couleurs, options
/admin/settings
Outils système
Sauvegarde, restauration, vidage
/admin/settings#system-tools
Impression
Imprimer les tables de données
/admin/print/users
Dashboard
Vue d'ensemble avec statistiques
/admin/dashboard
Sécurité
Mesures de sécurité mises en place dans la plateforme.
Toutes les données sensibles sont chiffrées. Clés API stockées en environnement.
Chaque connexion peut nécessiter un code OTP unique.
Limites configurées sur toutes les routes sensibles (login, OTP, API).
Blocage automatique après 5 tentatives échouées.
Mots de passe hashés avec bcrypt (12 rounds).
HttpOnly, Secure (en prod), SameSite=Strict.
Tokens CSRF sur tous les formulaires POST.
Requêtes préparées via Eloquent (anti-injection).
Échappement automatique via Blade {{ @{{ }} }}.
Logs complets des actions sensibles.
Backups automatiques quotidiens (Spatie Backup).
Endpoint /health + Sentry pour les erreurs.
Commandes essentielles
Toutes les commandes utiles pour gérer l'application.
Développement
npm run dev:all
npm run dev
php artisan serve
php artisan queue:work redis --tries=1
Base de données
php artisan migrate:fresh --seed
php artisan migrate
php artisan db:show
Caches
php artisan optimize:clear
php artisan config:clear
php artisan cache:clear
Sauvegardes
php artisan backup:run
php artisan backup:list
php artisan backup:clean
SMS
php artisan sms:check-pending
php artisan queue:work redis
Déploiement
Comment mettre la plateforme en production.
📋 Étapes de déploiement
- 1 Créer un compte Forge + DigitalOcean
- 2 Créer un serveur 2GB RAM / 1 vCPU (Frankfurt)
- 3 Créer un site avec domaine personnalisé
- 4 Connecter le dépôt Git
- 5 Configurer .env.production
- 6 Créer un Queue Worker (default,sms,sms-bulk)
- 7 Activer SSL Let's Encrypt
- 8 Configurer le Scheduler (schedule:run)
- 9 Configurer le webhook eSMS
- 10 Tester l'envoi réel d'un SMS
composer install --no-dev --optimize-autoloader php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:cache php artisan queue:restart
Prêt à envoyer vos premiers SMS ?
Créez votre compte gratuitement ou connectez-vous à votre espace.