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.

1

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.

2

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.

3

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.

4

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.

5

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-media renvoie les documents de l'utilisateur connecté.
  • /api/v1/all-documents permet 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. 1 Déclenchement sur push/merge vers les branches develop (staging) ou main (production).
  2. 2 Installation des dépendances (PHP Composer, Node NPM/Yarn).
  3. 3 Exécution des linters et des tests automatisés (unitaires, intégration, E2E).
  4. 4 Build des assets frontend (Next.js) et déploiement sur Vercel.
  5. 5 Build de l'application backend Laravel et déploiement sur le serveur Infomaniak.
  6. 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.