跳到正文
DEV Community· Thimotée·· 3 小時前AI 評分26

HACKAVPI:連接 HackAVP 2026 各應用程式的共用 API

HACKAVPI

AI 導讀

新喀裏多尼亞大學 MIAGE 碩士班學生為 HackAVP 2026 開發 HACKAVPI,以 REST API 集中管理候選人、履歷和職位空缺資料,讓各團隊的應用程式互通。API 支援 PDF、PNG、JPEG 履歷上載,檔案上限為 10 Mo,並連接 CVForge 自動擷取履歷中的技能、經驗和學歷。

正文

Dans le cadre de notre Master MIAGE à l'Université de la Nouvelle-Calédonie 🎓, toute notre promotion participe au projet HackAVP 2026 !

Avec Dan, nous avons pris en charge une pièce centrale du projet : HACKAVPI, l'API qui permet aux différentes applications développées par la classe de communiquer entre elles et d'échanger des données.

Dans cet article, on vous explique ce qu'est une API, pourquoi le projet en avait besoin, et comment nous avons construit la nôtre. Pas besoin d'être développeur pour suivre : on détaille les termes techniques au fur et à mesure. 👇


🤔 Une API, c'est quoi au juste ?

Une API (Application Programming Interface, ou interface de programmation) est un intermédiaire qui permet à des logiciels de dialoguer entre eux.

L'image la plus parlante est celle du serveur au restaurant 🍽️ :

  • vous (l'application) consultez le menu et passez commande ;
  • le serveur (l'API) transmet la demande à la cuisine (la base de données) ;
  • puis il vous rapporte le plat (les données demandées).

Vous n'avez jamais besoin d'entrer en cuisine : vous passez par le serveur, qui sait exactement quoi demander et à qui.

Notre API est de type REST, la manière la plus répandue de concevoir une API sur le web. Concrètement, chaque information est accessible à une adresse précise, qu'on appelle une route. Par exemple, une application pourrait interroger une route comme /avp pour obtenir la liste des offres d'emploi, ou /candidats pour obtenir celle des candidats.

Les réponses sont envoyées au format JSON, un format texte simple, lisible aussi bien par les humains que par les machines :

{
  "prenom": "Léa",
  "metier": "Développeuse web",
  "competences": ["JavaScript", "SQL", "React"]
}

🎯 Le projet HackAVP

L'objectif de HackAVP est de faciliter la mise en relation entre candidats et recruteurs 🤝. Le nom vient des AVP, les avis de vacance de poste, c'est-à-dire les offres d'emploi publiées par les recruteurs.

Pour y parvenir, notre classe s'est répartie en plusieurs équipes, chacune développant sa propre application :

  • 📄 l'analyse automatique des CV ;
  • 💼 la consultation des offres d'emploi ;
  • ⚖️ la comparaison des profils des candidats avec les postes proposés ;
  • 📊 l'analyse statistique des offres et des candidatures.

Toutes ces applications ont un point commun : elles manipulent les mêmes données (des candidats, des CV, des offres). Sans coordination, chaque équipe aurait dû créer sa propre base de données, avec le risque d'avoir des informations en double, incohérentes ou impossibles à partager.

💡 C'est là qu'intervient HACKAVPI : elle centralise toutes les données du projet et met à disposition des routes communes à toutes les équipes. Chaque application vient y chercher ce dont elle a besoin, et l'ensemble fonctionne comme un tout cohérent.


🎬 Un scénario concret : le parcours de Léa

Pour mieux comprendre le rôle de HACKAVPI, suivons Léa, développeuse à la recherche d'un nouveau poste 👩‍💻

  1. 📝 Léa crée son compte sur l'une des applications du projet. Grâce à notre système d'authentification commun, ce même compte lui servira sur toutes les autres applications : pas besoin de s'inscrire cinq fois.
  2. 📤 Elle dépose son CV au format PDF. Avant de l'enregistrer, HACKAVPI vérifie que le fichier est valide (bon format, taille raisonnable) et le prépare pour la suite.
  3. 🤖 CVForge entre en jeu : ce service lit automatiquement le CV de Léa et en extrait ses compétences, ses expériences et ses formations, qu'il nous renvoie sous forme de données structurées.
  4. ⚖️ Le matching : une autre application interroge HACKAVPI pour comparer le profil de Léa aux offres d'emploi disponibles, et lui propose les postes qui lui correspondent le mieux.
  5. 📊 En coulisses, l'équipe Insight Squad récupère des statistiques sur les candidatures et les offres. Léa y est comptabilisée… sans jamais pouvoir être identifiée.
  6. 🔑 Quelques jours plus tard, Léa a oublié son mot de passe ? Elle reçoit un e-mail de réinitialisation, et c'est reparti !
👩‍💻 Léa ──► 📝 Compte ──► 📤 CV ──► 🤖 CVForge ──► ⚖️ Matching avec les offres
                                                          │
                                         📊 Statistiques anonymisées (Insight Squad)

🔗 Six étapes, plusieurs applications développées par des équipes différentes… et une seule API au centre de tout.

Voyons maintenant, fonctionnalité par fonctionnalité, ce qui se passe derrière ce parcours.


🛠️ Les fonctionnalités développées

1. 🗂️ La gestion des données

Le premier rôle de HACKAVPI est de stocker et distribuer les données du projet, en particulier :

  • les avis de vacance de poste (AVP) : intitulé du poste, description, compétences recherchées… ;
  • les informations des candidats : profil, CV, données extraites par l'analyse.

Toutes ces données sont échangées au format JSON. Ce choix n'est pas anodin : c'est un standard que tous les langages de programmation savent lire. Qu'une équipe travaille en JavaScript, en Python ou avec un outil d'automatisation, elle peut exploiter nos données sans effort particulier.

2. 📤 Le dépôt des CV

Les candidats peuvent déposer leur CV directement via l'API, dans les conditions suivantes :

Critère Valeur
Formats acceptés PDF, PNG, JPEG
Taille maximale 10 Mo
Traitement Vérification + préparation avant stockage

Accepter des fichiers envoyés par des utilisateurs n'est jamais sans risque 🔒 : un fichier peut être corrompu, trop volumineux, ou volontairement piégé. C'est pourquoi chaque CV est contrôlé avant d'être enregistré : on vérifie qu'il s'agit bien d'un PDF ou d'une image, et qu'il respecte la taille maximale. Il est ensuite préparé pour que l'étape d'analyse puisse le traiter dans de bonnes conditions.

3. 🤖 La connexion avec CVForge

Nous avons connecté notre API à CVForge, le service développé par Florian qui analyse automatiquement les CV.

CVForge repose sur n8n, un outil d'automatisation qui permet d'enchaîner des tâches sous forme de workflow, c'est-à-dire une suite d'étapes exécutées automatiquement, un peu comme une chaîne de montage. Ici, la chaîne consiste à recevoir un CV, à le lire, puis à en extraire les informations utiles.

👤 Candidat ──► 📤 Dépôt du CV
                   │
                   ▼
            ⚙️ HACKAVPI (vérification + préparation)
                   │
                   ▼
            🧠 CVForge (workflow n8n)
                   │
                   ▼
            📦 Données extraites, renvoyées en JSON

Le résultat : un CV, document pensé pour être lu par un humain, devient des données structurées (une liste de compétences, des expériences datées, des diplômes…) que les autres applications peuvent exploiter, notamment pour comparer les candidats aux offres d'emploi 🎯.

4. 📊 Des statistiques pour Insight Squad

L'équipe Insight Squad est chargée d'analyser l'activité de la plateforme : combien d'offres sont publiées, combien de candidatures sont reçues, quelles tendances se dégagent… Nous avons travaillé avec eux pour concevoir des routes adaptées à leurs besoins, avec deux approches complémentaires :

Type de route Principe Exemple
🧾 Données brutes L'API fournit les données détaillées, Insight Squad fait ses propres calculs La liste des candidatures avec leur date et le poste visé
📈 Agrégats L'API calcule directement les indicateurs Le nombre de candidatures par offre ou par mois

Les données brutes leur laissent toute liberté d'analyse, tandis que les agrégats leur font gagner du temps sur les indicateurs les plus courants.

🛡️ Confidentialité avant tout : toutes les données exposées par ces routes sont anonymisées. Les statistiques indiquent par exemple qu'une candidature a été envoyée pour un poste, mais jamais qui l'a envoyée. Aucun nom, aucune adresse e-mail, aucune information permettant d'identifier une personne.

5. 🔐 L'authentification et la gestion des accès

HACKAVPI centralise l'authentification de tout le projet, c'est-à-dire la vérification de l'identité des utilisateurs. Tous les services qui ont besoin de comptes s'appuient sur les mêmes identifiants : un seul compte, valable sur toutes les applications ! 🙌

Pour cela, l'API propose des routes permettant de :

  • 📝 créer un compte ;
  • 🔓 se connecter : l'utilisateur reçoit alors un token de connexion ;
  • 📧 réinitialiser son mot de passe grâce à un lien envoyé par e-mail.

Le token fonctionne comme un badge d'accès temporaire 🎫 : une fois connecté, l'utilisateur le présente à chaque requête, ce qui évite de renvoyer son mot de passe à chaque fois.

Tous les utilisateurs n'ont pas non plus les mêmes droits. Grâce à un système de rôles 👥, chacun n'accède qu'aux fonctionnalités qui le concernent : un candidat peut gérer son propre profil, mais il ne peut évidemment pas modifier celui des autres.

Enfin, certains services n'ont pas d'utilisateur humain derrière eux. C'est le cas du workflow n8n de CVForge, qui échange automatiquement avec notre API. Nous lui avons attribué une clé API 🔑 : une sorte de mot de passe réservé aux machines, qui lui permet de s'identifier et de communiquer avec nous de manière sécurisée, sans passer par un compte utilisateur classique.

6. 📚 La documentation avec Swagger

Une API n'est utile que si les autres savent s'en servir ! Pour faciliter le travail des équipes, nous utilisons Swagger, un outil qui génère automatiquement une documentation interactive.

Concrètement, c'est une page web qui liste toutes les routes disponibles, explique ce que chacune attend et ce qu'elle renvoie, et permet même de les tester directement depuis le navigateur, sans écrire une seule ligne de code. Un vrai « mode d'emploi » vivant de notre API.

📊 27 routes sont disponibles au total !

👉 Accéder à la documentation Swagger HACKAVPI


☁️ Déploiement : disponible 24h/24

HACKAVPI est un hub qui relie l'ensemble des services du projet : si elle tombe, ce sont toutes les applications qui se retrouvent bloquées. La disponibilité était donc une contrainte majeure dès le départ. ⚡

Pour y répondre, nous avons fait trois choix :

  • 🖥️ Un VPS externe : un VPS (serveur privé virtuel) est un serveur loué en ligne, qui tourne en permanence. Plutôt que de faire fonctionner l'API sur nos ordinateurs personnels, nous l'avons déployée très tôt sur ce serveur, pour qu'elle soit accessible 24h/24 et que les autres équipes puissent commencer à l'utiliser rapidement.
  • 🔄 Une pipeline de déploiement continu : c'est un processus automatisé qui, dès que nous publions une modification du code, met à jour l'API en ligne en quelques minutes, sans intervention manuelle. Les autres équipes nous sollicitaient régulièrement pour de nouvelles routes ou des ajustements : ce système nous a permis de répondre vite et de rester réactifs.
  • 🌐 Un nom de domaine gratuit avec DuckDNS : un nom de domaine est une adresse lisible (comme un nom de rue) qui pointe vers notre serveur, plutôt qu'une suite de chiffres difficile à retenir. DuckDNS nous permet d'utiliser gratuitement l'adresse hackavp-api.duckdns.org.
💻 Modification du code ──► 🔄 Déploiement automatique ──► 🖥️ VPS ──► 🌐 hackavp-api.duckdns.org

🏁 Pour conclure

HACKAVPI, c'est la colonne vertébrale du HackAVP : un point d'entrée unique pour les données, l'authentification, le dépôt et l'analyse des CV, les statistiques… le tout sécurisé, documenté et disponible en continu.

Au-delà de la technique, ce projet nous a appris à travailler au service des autres équipes : comprendre leurs besoins, leur fournir des outils fiables et nous adapter rapidement à leurs demandes.

Merci de nous avoir lus ! N'hésitez pas à laisser vos questions ou vos retours en commentaire 💬🔥

來源:DEV Community · dev.to