📚 Documentation officielle

Guide complet de Gydn Message Send

Plateforme professionnelle d'envoi de SMS vers la RDC et l'Afrique. Codes OTP, notifications, campagnes massives, API REST — tout ce que vous devez savoir.

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.

Framework
Laravel 12
Base
MySQL 8.0
Cache & Queue
Redis
PHP
8.3+
SMS
eSMS Africa
Design
Tailwind v4
Auth
OTP 2FA
API
REST + Sanctum
Livraison en moins de 5 secondes
Chiffrement AES-256 + 2FA par SMS
Statistiques temps réel
Couverture des 4 opérateurs RDC

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 │
        └─────────────────────┘
Traitement asynchrone
Les SMS passent par Redis Queue pour ne pas bloquer les requêtes HTTP.
Cache performant
Les OTP et settings sont cachés dans Redis pour un accès instantané.

Rôles utilisateur

3 niveaux d'accès avec permissions distinctes.

Admin
Accès total
  • ✓ 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
Manager
Droits étendus
  • ✓ Voir les utilisateurs
  • ✓ Gestion templates SMS
  • ✓ Envoi groupé
  • ✓ Voir l'historique SMS
  • ✗ Supprimer utilisateurs
  • ✗ Modifier les rôles
  • ✗ Configuration système
  • ✗ Sauvegarde / Restauration
Utilisateur
Accès personnel
  • ✓ 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.

Connexion

Saisie email OU téléphone + mot de passe. Détection automatique du format par regex.

Génération OTP

Code aléatoire à 6 chiffres stocké dans Redis. TTL configurable (10 min par défaut).

Envoi SMS

Le code est envoyé par SMS via eSMS Africa avec le Sender ID "eSMSDRC".

Vérification

Comparaison en temps constant (hash_equals) pour éviter les timing attacks.

Sécurités

Cooldown 60s · Blocage après 5 tentatives · Lockout 15 minutes.

Usage unique

Le code est invalidé immédiatement après utilisation réussie.

Redirection

Admin/Manager → /admin/dashboard · Utilisateur → /dashboard.

💡 Astuce La 2FA peut être désactivée globalement dans /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

1
Création en base

Ligne dans sms_messages avec statut queued

2
Dispatch du job

Job SendSmsJob envoyé sur la queue Redis

3
Worker processing

Le worker appelle EsmsProvider->send()

4
Normalisation

0893338800+243893338800 (format E.164)

5
Appel API

POST vers https://sms.esmsafrica.io/api/messages/send

6
Mise à jour statut

Statut → sent ou failed

7
Réception DLR

Webhook met à jour → delivered

Envoi groupé (Bulk SMS)

Envoyez des SMS à des milliers de destinataires en un clic.

Saisie manuelle
Un numéro par ligne
Utilisateurs
Sélection multiple
Fichier CSV
Upload .csv

⚙️ Caractéristiques

Traitement par lots

Destinataires groupés par paquets de 50

Rate limiting

Vitesse limitée à ~10 SMS/seconde

Progression temps réel

Barre de progression dynamique dans l'interface

Annulation possible

Bouton "Annuler" pendant l'envoi

Statistiques

Envoyés, délivrés, échoués, coût cumulé

Coût estimé

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
🔐 Authentification
Authorization: Bearer [KEY]
📤 Endpoint d'envoi
POST /api/messages/send
💬 Sender ID par défaut
eSMSDRC
💰 Coût par SMS
~0.059 USD
⚠️ Sender ID personnalisé Le Sender ID "SMSNOTIF" doit être approuvé par eSMS avant utilisation. En attendant, utilisez le Sender ID par défaut "eSMSDRC".

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

GET /api/health
POST /api/auth/login
GET /api/user
POST /api/sms/send
GET /api/sms/messages
POST /api/webhooks/sms/esms/status
🚧 API en développement L'API REST avec Sanctum sera disponible dans la prochaine version. La structure est déjà prête.

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
🔑 Identifiants de test
Admin: admin@sms-notifier.local
Manager: manager@sms-notifier.local
User: user@sms-notifier.local
⚠️ Changez ces mots de passe immédiatement en production.

Sécurité

Mesures de sécurité mises en place dans la plateforme.

Chiffrement AES-256

Toutes les données sensibles sont chiffrées. Clés API stockées en environnement.

2FA par SMS

Chaque connexion peut nécessiter un code OTP unique.

Rate Limiting

Limites configurées sur toutes les routes sensibles (login, OTP, API).

Anti brute-force

Blocage automatique après 5 tentatives échouées.

Hash bcrypt

Mots de passe hashés avec bcrypt (12 rounds).

Cookies sécurisés

HttpOnly, Secure (en prod), SameSite=Strict.

Protection CSRF

Tokens CSRF sur tous les formulaires POST.

Protection SQL

Requêtes préparées via Eloquent (anti-injection).

Protection XSS

Échappement automatique via Blade {{ @{{ }} }}.

Journalisation

Logs complets des actions sensibles.

Sauvegardes

Backups automatiques quotidiens (Spatie Backup).

Monitoring

Endpoint /health + Sentry pour les erreurs.

Commandes essentielles

Toutes les commandes utiles pour gérer l'application.

Développement

Démarrer tout
npm run dev:all
Vite seulement
npm run dev
Serveur Laravel
php artisan serve
Worker queue
php artisan queue:work redis --tries=1

Base de données

Reset + seed
php artisan migrate:fresh --seed
Migrations seules
php artisan migrate
Voir le statut
php artisan db:show

Caches

Vider tous les caches
php artisan optimize:clear
Config seulement
php artisan config:clear
Cache applicatif
php artisan cache:clear

Sauvegardes

Créer un backup
php artisan backup:run
Lister les backups
php artisan backup:list
Nettoyer anciens
php artisan backup:clean

SMS

Vérifier en attente
php artisan sms:check-pending
Worker queue
php artisan queue:work redis

Déploiement

Comment mettre la plateforme en production.

Solution recommandée
Laravel Forge + DigitalOcean (18$/mois)

📋 Étapes de déploiement

  1. 1 Créer un compte Forge + DigitalOcean
  2. 2 Créer un serveur 2GB RAM / 1 vCPU (Frankfurt)
  3. 3 Créer un site avec domaine personnalisé
  4. 4 Connecter le dépôt Git
  5. 5 Configurer .env.production
  6. 6 Créer un Queue Worker (default,sms,sms-bulk)
  7. 7 Activer SSL Let's Encrypt
  8. 8 Configurer le Scheduler (schedule:run)
  9. 9 Configurer le webhook eSMS
  10. 10 Tester l'envoi réel d'un SMS
Script de déploiement (deploy.sh)
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.