Architecture CNX LINK
Comprendre l'architecture technique, le modèle de données et les flux de la plateforme CNX LINK.
Workflow général
CNX LINK agit comme hub métier pour centraliser les projets, requêtes, événements, discussions et documents autour de vos utilisateurs et de leurs entreprises.
Authentification & contexte utilisateur
Un utilisateur se connecte via l'API (Sanctum, routes d'authentification). Son rôle
(status) et son entreprise associée définissent ensuite ce qu'il peut voir et faire.
Projets & événements
Les projets regroupent les informations client, le contexte métier, les livrables et l'historique de statut. Les événements (spots, annonces, etc.) complètent la communication et le planning.
Requêtes & traitement
Les requêtes représentent les demandes (support, projet, administratif, etc.). Elles ont un type, une priorité, un cycle de vie (ouverture, traitement, clôture) et peuvent être enrichies de commentaires et de pièces jointes.
Discussions, messages & notifications
Les discussions et messages permettent d'échanger autour des projets et requêtes, tandis que les notifications (email + base) informent les utilisateurs des actions importantes.
Médiathèque & reporting
Les documents (projets, requêtes, commentaires, événements) sont accessibles via des vues
agrégées (/user-media, /all-documents) et les activités
sont tracées dans les logs pour l'audit.
Scénarios d'usage
Suivi de projets clients
- Un projet regroupe le contexte client, les documents, les livrables et le sponsor.
- Les membres CNX (administrateurs) suivent le pourcentage d'avancement.
- Les documents (business case, chart, offres, livrables…) sont accessibles via l'API.
Traitement des requêtes internes
- Les utilisateurs créent des requêtes typées (Technique, Projet/Tâche, Document…).
- Les administrateurs traitent, commentent et joignent des pièces justificatives.
- Les décisions (approbation, rejet, annulation) sont historisées.
Médiathèque documentaire
- Les documents issus des projets, requêtes, commentaires et événements sont agrégés.
-
/api/v1/user-mediarenvoie les documents de l'utilisateur connecté. -
/api/v1/all-documentspermet aux rôles autorisés de voir tout le périmètre.
Suivi de l'activité & conformité
- Chaque action importante peut être loggée dans les journaux d'activité.
- Les notifications assurent un suivi temps réel (email + in-app).
- Les fiches d'identité PDF centralisent les informations d'un utilisateur.
Modèle de données
Cette section résume les entités principales de CNX LINK. Pour le détail complet, référez-vous aux migrations et à la documentation API (schémas Swagger).
Utilisateurs & entreprises
-
users : informations personnelles, rôle (
status), sécurité, photo de profil. - enterprises : entreprise rattachée (nom, pays, domaine d'activité).
- Relation : un utilisateur appartient à une entreprise (facultatif pour certains cas).
Projets & historique
- projects : informations projet, type, priorité, budget, sponsor, documents, livrables.
- project_status_histories : historique des changements de statut.
- Pivots : association des projets avec plusieurs utilisateurs (équipe projet).
Requêtes & commentaires
- requests : demandes avec type, priorité, statut, pièce jointe.
- request_comments : commentaires associés avec pièces jointes éventuelles.
- Pivots : association des requêtes à plusieurs destinataires.
Discussions & messages
- discussions : fils de discussion autour d'un projet ou d'un contexte donné.
- messages : messages texte (ou média) envoyés dans ces discussions.
Événements & documents
- events : événements programmés ou déjà publiés (spots, annonces…).
- Les événements peuvent aussi être liés à des documents (fichiers médias).
Notifications & logs
- notifications (table Laravel) : notifications en base pour les utilisateurs.
- activity_logs (ou équivalent) : traces d'activité pour l'audit.
Stack technique
Backend
- Framework: Laravel 11 (PHP 8.2+)
- Base de données: MySQL 8+ / PostgreSQL
- Cache & Queues: Redis
- Temps réel: Laravel Echo, Soketi ou Pusher
- API: RESTful, authentification via Laravel Sanctum
- Tests: PHPUnit, Pest
Frontend
- Framework: Next.js 14 (React 18)
- Langage: TypeScript
- Styling: TailwindCSS, Headless UI
- Gestion d'état: Zustand / React Query / Context API
- Formulaires: React Hook Form
- Tests: Jest, React Testing Library
DevOps & Infrastructure
- Hébergement Backend: Infomaniak (Cloud Server, Jelastic PaaS)
- Hébergement Frontend: Vercel
- CI/CD: GitHub Actions
- Conteneurisation: Docker (pour développement/staging)
- Serveur Web: Nginx (pour Laravel)
- Monitoring: Sentry, Prometheus/Grafana (potentiel)
Mesures de sécurité
Authentification & Autorisation
- Authentification API robuste via Laravel Sanctum (Tokens SPA / API).
- Authentification Web sécurisée via sessions Laravel standards.
- Option d'authentification à deux facteurs (2FA) pour les utilisateurs.
- Politiques de mots de passe forts et hachage sécurisé (Bcrypt par défaut).
- Gestion fine des permissions basée sur les rôles (Gates & Policies Laravel).
Protection des Données & Application
- Chiffrement des données sensibles en transit (HTTPS/TLS obligatoire).
- Protection contre les failles OWASP Top 10 (XSS, CSRF, SQL Injection) via les mécanismes intégrés de Laravel.
- Validation et sanitization rigoureuse de toutes les entrées utilisateur.
- Rate limiting sur les API pour prévenir les abus et attaques DoS.
- Headers de sécurité HTTP (CSP, HSTS, X-Frame-Options, etc.).
- Mises à jour régulières des dépendances et du framework.
Catégorisation des rôles
Les rôles de la plateforme CNX LINK sont organisés en deux catégories principales pour faciliter la gestion des permissions et l'accès aux fonctionnalités.
Rôles Admin
Rôles avec privilèges administratifs et accès étendu à la plateforme.
- super-admin : Administration globale de la plateforme
- admin : Membre de l'équipe CNX avec droits avancés
- viewer : Accès en lecture seule aux données
Rôles User
Rôles utilisateurs standards avec accès limité à leurs propres ressources.
- prospect : Utilisateur en découverte
- client : Client standard
- client-promoter : Client promoteur
- assistant : Assistant client
- partenaire : Partenaire externe
- sponsor, copil, cso, cs : Rôles métier spécifiques
Stratégie de déploiement
Environnements cibles
Développement Local
- Backend: Docker (Laravel Sail) pour une reproductibilité aisée.
-
Frontend: Serveur de développement Next.js (
npm run dev).
Staging / Pré-production
- Réplique de l'environnement de production sur un sous-domaine.
- Permet les tests d'intégration et la validation client avant mise en production.
Production
- Backend Laravel: Infomaniak Cloud Server (VPS) ou Jelastic PaaS pour scalabilité. Nginx comme serveur web.
- Frontend Next.js: Déploiement optimisé sur Vercel.
- Base de données: Service MySQL managé par Infomaniak.
- Cache & Queues: Service Redis managé par Infomaniak.
Processus CI/CD avec GitHub Actions
Le déploiement est automatisé pour assurer la cohérence et réduire les erreurs humaines.
-
1
Déclenchement sur push/merge vers les branches
develop(staging) oumain(production). - 2 Installation des dépendances (PHP Composer, Node NPM/Yarn).
- 3 Exécution des linters et des tests automatisés (unitaires, intégration, E2E).
- 4 Build des assets frontend (Next.js) et déploiement sur Vercel.
- 5 Build de l'application backend Laravel et déploiement sur le serveur Infomaniak.
- 6 Notifications (Slack, email) du statut du déploiement.
Sauvegardes et Monitoring
Sauvegardes
Gérées par Infomaniak pour la base de données (quotidiennes, rétention) et les fichiers serveur. Sauvegardes additionnelles possibles via scripts.
Monitoring
Utilisation d'outils comme Sentry pour le suivi des erreurs applicatives. Monitoring de l'infrastructure via les outils Infomaniak et potentiellement Prometheus/Grafana pour des métriques avancées.