Aller au contenu
T TranscribIA
Fiche d'architecture technique

L'architecture de TranscribIA, décrite pour vos équipes techniques.

Document de référence le plus demandé en avant-vente. TranscribIA est une plateforme de transcription audio conçue pour des organisations qui doivent comprendre, auditer et maîtriser la chaîne de traitement de leurs enregistrements. Cette fiche décrit les composants, le flux des données, l'isolation multi-tenant, les mesures de sécurité intégrées, les deux modèles de déploiement et la chaîne de sous-traitance — de façon factuelle, sans sur-déclarer.

Fiche technique v1.0 — 30 juin 2026. Éditeur : AMBASSADIA SARL (Monaco). Contact : contact@transcribia.fr.

Composants

Une architecture en services dédiés

Chaque responsabilité est portée par un service distinct, orchestré via Docker Compose (8 services). Aucune donnée ne transite par un composant dont le rôle ne l'exige pas.

# Schéma général des composants

┌─────────────────────────────────────────────────────────────┐
│  Utilisateurs — Frontend React 19 / TypeScript / Vite       │
└──────────────────────────┬──────────────────────────────────┘
                           ▼   HTTPS · TLS 1.2+
┌─────────────────────────────────────────────────────────────┐
│  Nginx — reverse proxy + termination TLS                    │
└─┬──────────────────────┬──────────────────────┬────────────┘
  ▼                      ▼                      ▼
┌──────────────┐   ┌──────────────────┐   ┌────────────────────┐
│  API Laravel │   │  Laravel Reverb  │   │  ClamAV            │
│  12 / PHP 8.3│   │  (WebSocket)     │   │  antivirus uploads │
│  + Sanctum   │   │  progression RT  │   │                    │
└──┬───────┬───┘   └──────────────────┘   └────────────────────┘
   │       │
   ▼       ▼
┌──────────────┐   ┌──────────────────────────────────────────┐
│  PostgreSQL  │   │  Redis 7 — cache · queues · sessions     │
│  16          │   └──────────────────────────────────────────┘
│  1 schéma /  │   ┌──────────────────────────────────────────┐
│  organisa-   │   │  Workers transcription (consommateurs)    │
│  tion        │   └─────────────────┬────────────────────────┘
└──────────────┘                     ▼
                          ┌────────────────────────────────────┐
                          │  Serveur GPU — WhisperX / pyannote │
                          │  transcription + diarisation       │
                          └─────────────────┬──────────────────┘
                                            ▼
                          ┌────────────────────────────────────┐
                          │  IA — OpenRouter (Anthropic/OpenAI)│
                          │  post-traitement · no-train        │
                          └────────────────────────────────────┘

  Sauvegardes : age (chiffrement) + rclone → Backblaze B2 / Scaleway (UE)

Frontend

React 19 · TypeScript · Vite

  • SPA build statique servie par Nginx
  • Progression temps réel via Reverb (WebSocket)
  • Aucune logique métier côté navigateur

API Laravel

Laravel 12 · PHP 8.3 · Sanctum

  • Cœur métier, REST, orchestration des jobs
  • Authentification Sanctum + 2FA TOTP
  • RBAC à 5 niveaux, moindre privilège

PostgreSQL

PostgreSQL 16 · multi-tenant

  • Un schéma dédié par organisation
  • Chiffrement at-rest (disque + base)
  • Aucune requête inter-tenant

Redis

Redis 7 · cache · queues

  • Cache applicatif et sessions
  • Files de transcription (queues)
  • Coordination des workers

Laravel Reverb

WebSocket temps réel

  • Progression de transcription en direct
  • Notifications et statuts de jobs
  • Canal cloisonné par organisation

Workers transcription

Consommateurs de queue

  • Orchestrent ClamAV → GPU → IA
  • Traitement asynchrone et reproductible
  • Isolation par job et par tenant

Serveur GPU

WhisperX · pyannote

  • Transcription audio haute précision
  • Diarisation (identification des locuteurs)
  • Serveur dédié, externe à l’API

IA (post-traitement)

OpenRouter · Anthropic / OpenAI

  • Mise en forme et post-traitement du texte
  • Clause de non-entraînement (no-train)
  • Données éphémères, non conservées

Le trajet d'un enregistrement

Du fichier audio au livrable chiffré

Chaque enregistrement suit exactement cette chaîne, dans cet ordre. Aucune étape n'est skippable : l'antivirus précède toujours la transcription, et le stockage final est toujours chiffré au repos.

1

Upload chiffré

Le fichier audio transite par HTTPS (TLS 1.2+) jusqu’à Nginx, puis l’API Laravel.

2

Antivirus (ClamAV)

Scan systématique de l’upload avant tout traitement. Tout fichier suspecté est rejeté.

3

Mise en file (Redis)

Le job de transcription est placé dans la queue Redis, isolé par organisation.

4

Transcription GPU

Un worker transmet l’audio au serveur GPU : WhisperX (transcription) + pyannote (diarisation).

5

Post-traitement IA

Appel via OpenRouter (Anthropic / OpenAI) pour la mise en forme. Clause no-train, données éphémères.

6

Stockage chiffré au repos

La transcription et les métadonnées sont écrites dans le schéma PostgreSQL dédié au tenant (at-rest).

7

Export

L’utilisateur exporte le livrable (texte, sous-titres) ; la progression est visible en temps réel via Reverb.

Cloisonnement

Une organisation, un schéma PostgreSQL dédié

L'isolation des données n'est pas obtenue par un simple filtre applicatif : chaque organisation dispose de son propre schéma dans la base de données.

TranscribIA applique un modèle schema-per-organisation sur PostgreSQL 16 : les données d'un client ne sont jamais stockées dans la même structure que celles d'un autre. L'isolation est structurelle, au niveau de la base, et non pas uniquement logique au niveau de l'application.

Concrètement, cela signifie qu'aucune requête ne peut, par construction, croiser les données de deux organisations : le schéma cible est résolu à l'ouverture de la session de l'organisation. Cette approche facilite également l'export complet, l'effacement (droit à l'oubli) et une éventuelle extraction on-premise d'un tenant.

Les journaux d'activité (activity_logs) sont eux aussi tenus par organisation, et les journaux de plateforme (audit_logs) retracent les actions sensibles sans exposer le contenu des transcriptions.

Garanties d'isolation

  • Schéma dédié. Un schéma PostgreSQL distinct par organisation, résolu à la session.
  • Aucune requête inter-tenant. Impossible par construction de croiser les données de deux clients.
  • Files cloisonnées. Les jobs de transcription sont isolés par tenant dans Redis.
  • Canal temps réel privé. Les évènements Reverb (progression) sont cloisonnés par organisation.
  • Purge par tenant. Export ZIP complet et effacement ciblé d’une organisation sans impact sur les autres.

Sécurité by design

Des contrôles intégrés à la plateforme

Les mesures ci-dessous sont natives et vérifiables. Elles sont présentées comme des contrôles techniques, sans préjuger du cadre de conformité propre à votre organisation.

Chiffrement (transit & repos)

  • TLS 1.2+ obligatoire, HTTPS partout (in-transit)
  • Chiffrement at-rest : disque et base PostgreSQL
  • Sauvegardes chiffrées avec age (X25519 + ChaCha20-Poly1305)
  • Secrets applicatifs protégés (AES-256-CBC)

Authentification forte

  • Authentification Laravel Sanctum
  • 2FA TOTP conforme RFC 6238, enrôlement par rôle
  • Step-up password sur les actions destructives
  • Rate limiting, CORS strict et politique CSP

Contrôle d’accès (RBAC)

  • RBAC à 5 niveaux : super_admin, agent, manager, team_lead, user
  • Principe du moindre privilège
  • Permissions par rôle et par organisation
  • Aucun privilège implicite hors périmètre tenant

Journalisation & audit

  • activity_logs par organisation + audit_logs de plateforme
  • Traçabilité de toutes les actions sensibles
  • Exports CSV/JSON pour vos audits
  • Journaux scrubbés : pas de contenu de transcription

Anti-malware & durcissement

  • ClamAV sur tous les uploads, avant traitement
  • Scan rejetant les fichiers suspects
  • Composants et signatures tenus à jour
  • Services cloisonnés (Docker, un rôle par service)

Résilience & sauvegardes

  • Sauvegardes quotidiennes chiffrées offsite UE
  • rclone vers Backblaze B2 / Scaleway (UE)
  • Snapshots pré-restauration (anti-écrasement)
  • Restauration granulaire par tenant

Deux modèles de déploiement

SaaS souverain France ou on-premise

Les deux modes partagent strictement le même produit. La différence porte sur qui exploite les contrôles de sécurité et où résident les données.

SaaS souverain (France)

Service géré, hébergé en France, rapidement opérationnel.

Périmètre opéré par l’éditeur (AMBASSADIA SARL)

  • Hébergement Hostinger, data center Strasbourg (France)
  • L’éditeur supervise TLS, sauvegardes, mises à jour, ClamAV, durcissement
  • Stack complète managée (8 services Docker Compose)
  • Sauvegardes offsite UE (Backblaze B2 / Scaleway)
  • DPA et documentation de conformité prêts à l’emploi

On-premise (votre infrastructure)

Déploiement autonome dans votre environnement, aucune donnée sortante.

Périmètre opéré par votre organisation

  • Docker Compose autonome (8 services), dans votre infrastructure
  • Votre RSSI pilote durcissement, journaux, sauvegardes, supervision
  • Serveur GPU et IA configurables (modèles locaux possibles)
  • Maîtrise totale de l’inventaire et des contrôles
  • Convient aux environnements classifiés ou à forte contrainte RSSI

En SaaS souverain, l'éditeur exploite et documente les contrôles pour vos audits. En on-premise, la responsabilité opérationnelle des mesures (durcissement, supervision, sauvegardes, mise à jour) est portée par votre organisation. Les 8 services Docker Compose sont identiques dans les deux cas.

Chaîne d'approvisionnement

Sous-traitants et flux externes

TranscribIA s'appuie sur un nombre limité de sous-traitants, tous situés en Union européenne. Aucun transfert hors UE par défaut.

Hostinger

Hébergement SaaS (compute + stockage primaire)

Localisation
Strasbourg, France
Données
Fichiers audio, métadonnées, base PostgreSQL (chiffrés at-rest)

Backblaze B2 + Scaleway

Sauvegardes offsite chiffrées (age + rclone)

Localisation
Union européenne (B2 UE / Scaleway France)
Données
Backups chiffrés uniquement — pas de données en clair

OpenRouter (Anthropic / OpenAI)

Routage IA pour le post-traitement du texte

Localisation
Transit API, clause no-train
Données
Transcriptions / prompts éphémères — aucune conservation, aucun entraînement

Serveur GPU (WhisperX / pyannote)

Transcription audio + diarisation des locuteurs

Localisation
Infrastructure dédiée, Union européenne
Données
Fichiers audio transitoires, traités puis éliminés

La liste exhaustive des sous-traitants, leurs garanties contractuelles et la politique de conservation sont détaillées dans le dossier de conformité public.

Documentation & contact

Pour vos DSI, RSSI et acheteurs

Le dossier complet de conformité — registre des traitements, DPA modèle, mesures de sécurité, politique de conservation, sous-traitants, schémas d'architecture — est consultable publiquement, sans création de compte. Notre équipe vous accompagne dans l'analyse technique de votre organisation.

Éditeur : AMBASSADIA SARL (Monaco). Contact : contact@transcribia.fr. Fiche technique v1.0 — 30 juin 2026.