Terminé
Scolaire

AREA - Plateforme d'Automatisation de Flux de Travail

2025
Web Application
AREA - Plateforme d'Automatisation de Flux de Travail

À propos du projet

AREA (Action Reaction Execution Area)

Projet d'envergure développé dans le cadre de ma formation à Epitech. L'objectif était de concevoir une plateforme d'automatisation logicielle type IFTTT ou Zapier, permettant d'interconnecter des services hétérogènes pour créer des flux de travail automatisés.

Le besoin :

Dans un environnement numérique fragmenté, les utilisateurs perdent un temps précieux à effectuer des tâches répétitives entre plusieurs applications (copier un email vers Discord, créer une tâche Notion depuis GitHub, etc.). Le manque d'interopérabilité entre ces outils freine la productivité.

Ma solution digitale :

  • Centralisation : Un hub unique pour gérer toutes ses connexions (Google, Discord, GitHub, Twitter, Twitch, Notion).
  • Automatisation 'If This Then That' : Création de scénarios simples : 'SI je reçois un email important, ALORS m'envoyer une notification Discord'.
  • Accessibilité Cross-Platform : Une expérience unifiée accessible via un navigateur web ou une application mobile native.
  • Gain de productivité : Exécution automatique des tâches de fond sans intervention humaine.

Fonctionnalités clés :

  • Système d'authentification unique (SSO) et OAuth2 avec services tiers (Google, GitHub, etc.).
  • Moteur de création d'applets (AREAs) avec configuration dynamique des paramètres.
  • Gestion de triggers (déclencheurs) variés : emails reçus, issues GitHub, streams Twitch, tweets, etc.
  • Exécution de réactions : envoi de mails, post de messages, création de pages Notion.
  • Tableau de bord de suivi des activités et gestion des services connectés.

Résultat :

  • Interopérabilité réussie : Communication fluide entre des APIs très différentes.
  • Architecture robuste : Système capable de gérer de nombreux utilisateurs et scénarios simultanés.
  • Expérience utilisateur soignée : Interfaces modernes et réactives, pensées pour la simplicité.

Ce projet m'a apporté :

  • Maîtrise de l'intégration d'APIs complexes et de l'authentification OAuth2.
  • Compétences avancées en architecture logicielle (monorepo, microservices, dockerisation).
  • Gestion d'un projet full-stack complet (Mobile + Web + Backend + Base de données).

Technologies & Outils

NestJS
TypeScript
React 19
React Native (Expo)
PostgreSQL
Prisma ORM
Docker
OAuth2
Tailwind CSS
Redis/BullMQ
Vite
Git/GitHub Actions

Détails Techniques

Architecture et Stack Technique

Contexte technique :

Développement d'une suite logicielle complète organisée en Monorepo. Le projet sépare strictement le backend (API REST), le client web (SPA) et le client mobile, le tout orchestré via Docker.

Stack Technique :

  • Backend : NestJS (Node.js) avec TypeScript. Architecture modulaire, injection de dépendances et utilisation de Guards/Interceptors.
  • Frontend Web : React 19 + Vite. Utilisation de Tailwind CSS pour le styling et Lucide React pour l'UI.
  • Mobile : React Native avec Expo (v54) et Expo Router. Application native Android/iOS.
  • Base de données : PostgreSQL géré via l'ORM Prisma. Modélisation relationnelle complexe.
  • DevOps : Conteneurisation Docker et orchestration Docker Compose.

Défis techniques et Implémentation :

  • Moteur d'Automatisation (Polling) :
    • Mise en place d'un système de Polling intelligent pour surveiller les changements sur les services tiers (ex: vérifier les nouveaux emails toutes les X secondes).
    • Gestion des états via la table PollingState pour éviter les doublons d'exécution.
    • Architecture extensible permettant d'ajouter de nouveaux services (Service -> AvailableAction -> Action) sans refondre le coeur du système.
  • Sécurité et Authentification :
    • Implémentation de Passport.js pour la gestion des stratégies OAuth2 (Google, GitHub, Discord, etc.).
    • Système de JWT (Access Token) et Refresh Token pour sécuriser les sessions API.
    • Chiffrement des tokens d'accès des services tiers en base de données.
  • Modélisation de Données (Prisma/PostgreSQL) :
    • Schéma relationnel complexe liant Users, Areas, Actions, Reactions et Services.
    • Utilisation de types JSONB pour stocker les paramètres dynamiques des actions/réactions (ex: ID d'un channel Discord, objet d'un mail), offrant une grande flexibilité.
  • Performance et Scalabilité :
    • Utilisation de BullMQ (basé sur Redis) pour la gestion des files d'attente de tâches asynchrones (traitement des triggers).
    • Découplage des services pour une maintenance facilitée.

Ce projet démontre une capacité à construire une architecture logicielle complexe, fiable et maintenable, intégrant des technologies modernes et respectant les standards de l'industrie.