Rayan Benachour

Alternance recherchée pour septembre 2026

Développeur fullstack.
Trois applications en production,
des utilisateurs dessus.

Rayan Benachour, 21 ans. Je rentre en Licence 3 MIAGE en alternance à l'Université Paris Cité et je cherche une entreprise pour septembre 2026, rythme 2 jours à l'université, 3 jours en entreprise.

  • React
  • Next.js
  • TypeScript
  • Tailwind CSS
  • Node.js
  • Python
  • API REST
  • PostgreSQL
+3 675
Joueurs inscrits sur Tournouah
6
Éditions de tournoi livrées
2 500
De lots distribués par mes systèmes
2029
Fin du M2, si vous me gardez

01

Ce que j'ai construit

Trois de ces projets sont ouverts au public, les autres tournent chez le client ou sur ma machine. Dans tous les cas il n'y avait personne d'autre sur le clavier.

Aperçu de Tournouah
L'accueil entre deux éditions. Le compte à rebours et les trois compteurs du bas sont calculés en base, pas écrits en dur.

Tournouah

Faire tourner un tournoi de plusieurs centaines de joueurs sans qu'il s'écroule

Seul sur le projet, du schéma de base jusqu'à la garde pendant les tournois

Organiser un tournoi communautaire à la main, c'est un tableur et un salon Discord saturé. J'ai remplacé ça par une plateforme qui prend le tournoi des inscriptions jusqu'à la remise des lots : arbres de compétition, pronostics des spectateurs, tirages au sort diffusés en direct, envoi automatique des récompenses. Connexion par Discord en OAuth 2.0.

Le sujet compliqué, c'était la synchronisation. Le site, le bot Discord et l'overlay du stream doivent afficher la même chose à la même seconde. Un décalage d'une demi-seconde et les spectateurs voient un résultat qui n'existe pas encore. C'est cette contrainte qui a dicté toute l'architecture.

  • 3 675 joueurs inscrits
  • 6 éditions, 2 500 euros distribués
  • Synchronisation temps réel
  • Bot Discord
  • Next.js
  • TypeScript
  • Supabase
  • PostgreSQL
  • Tailwind CSS
  • Discord.js
  • WebSocket
  • Remotion
  • Recharts

PalPortal

Rendre lisible un serveur de jeu que personne ne pouvait consulter

Les données d'un serveur Palworld vivent dans un fichier de sauvegarde binaire propriétaire, illisible pour les joueurs comme pour l'administrateur. J'ai livré un portail qui les ouvre. Vingt-deux pages : profils des joueurs et des guildes, encyclopédie des espèces, classements, succès, statistiques, carte interactive du monde, calculateur de reproduction, plus un espace d'administration avec synchronisation et journaux. Les données sont rafraîchies toutes les quinze secondes environ. Hébergé en Docker derrière un proxy, sans que l'adresse du serveur ne soit jamais exposée.

Les pages ne savent jamais d'où viennent les données. Une variable d'environnement suffit à basculer entre un monde fictif en mémoire, la base, l'API du jeu, un accès FTP Nitrado ou une sauvegarde. Les sauvegardes sont des fichiers binaires propriétaires : plutôt que d'écrire un parseur qu'il aurait fallu réparer à chaque mise à jour du jeu, j'ai mis un adaptateur devant un convertisseur externe. La carte, elle, est écrite à la main, sans librairie de cartographie. C'est le choix le plus discutable du projet, Leaflet aurait fait l'affaire, mais je voulais le zoom, le déplacement et les filtres exactement comme je les avais en tête.

  • 22 pages
  • 5 sources de données interchangeables
  • Docker et docker-compose
  • Next.js 15
  • TypeScript
  • Prisma
  • SQLite
  • Zod
  • TanStack Query
  • Recharts
  • Docker
  • Vitest
  • Playwright
Le détail technique

RoyaleMetrics

Voir le site

Le projet où j'ai appris à ne pas casser ce qui est en production

Une plateforme de statistiques et d'overlays personnalisables à poser dans OBS. PostgreSQL piloté par Prisma, connexion Discord ou Twitch via NextAuth, niveaux d'accès gérés avec Stripe et un bot Discord par-dessus.

Dès qu'un abonnement Stripe est en jeu, une régression n'est plus un désagrément, c'est un remboursement. C'est ce qui m'a poussé à travailler les tests ici plus que partout ailleurs. Jest pour l'unitaire, Playwright pour les parcours complets, et des suites à part pour la sécurité, la performance et la non-régression.

  • Paiements Stripe en production
  • Suites de tests séparées
  • OAuth Discord et Twitch
  • Next.js 14
  • TypeScript
  • Prisma
  • PostgreSQL
  • NextAuth
  • Stripe
  • Discord.js
  • Jest
  • Playwright
Le détail technique

Outils personnels

  • Overlay de diffusion par vision

    Lire un jeu en temps réel, sans API

    L'API du jeu ne renvoie pas les parties en cours. Donc je lis l'écran. Le flux vient d'un émulateur piloté en ADB, OpenCV et Tesseract en sortent les pseudos, le score et l'élixir, et un serveur Flask pousse le tout en WebSocket vers l'overlay affiché dans OBS. L'affichage se remet à zéro seul quand la partie se termine.

  • CompteurTwitchBot

    Un bot de chat qui suit la partie en direct

    Bot connecté au chat Twitch qui affiche les stats de la partie en cours dans une surcouche OBS, avec un indicateur d'humeur calculé sur la série de résultats récents.

  • cr-datamine

    Je décode les ressources du jeu pour alimenter mes autres projets

    Outillage qui dépaquette une application mobile et décode ses ressources, jusqu'à sortir un référentiel reliant les identifiants internes aux noms lisibles. Sans ça, mes trois autres projets afficheraient des numéros de cartes à la place des noms.

02

Les technologies

En production sur les projets ci-dessus. Les quatre en clair sont celles sur lesquelles j'irais en entretien technique sans réviser.

Front-end

  • React
  • Next.js
  • TypeScript
  • Tailwind CSS

Back-end

  • Node.js
  • Python
  • API REST
  • WebSocket
  • Flask

Données

  • PostgreSQL
  • Prisma
  • Supabase
  • SQLite
  • SQL

Outils et qualité

  • Git
  • Linux
  • Docker
  • Vercel
  • Stripe
  • OAuth 2.0
  • Jest
  • Playwright

Vu en formation, jamais mis en production

  • PHP
  • Laravel
  • Vue.js
  • C#
  • WinForms
  • Entity Framework
  • VB.NET
  • Power BI

Je préfère le dire ici plutôt que de me faire prendre dessus en entretien.

03

Le profil

J'ai 21 ans, je vis à Sevran et je développe depuis plusieurs années.

J'ai passé un BTS SIO option SLAM, obtenu avec 15,81 de moyenne et 20 sur 20 à l'épreuve de conception et développement d'applications. Je rentre en Licence 3 MIAGE à l'Université Paris Cité en septembre.

Depuis 2024, je travaille en freelance pour un créateur de contenu Supercell. Je m'occupe de sa plateforme de tournois et de l'overlay qu'il utilise en stream. J'ai écrit le code, choisi les technos, et c'est moi qu'on appelle quand ça casse un samedi soir en plein tournoi.

À côté je suis une unité d'enseignement de cybersécurité au CNAM, et j'anime une communauté de 17 000 membres.

Ce que je n'ai pas encore, c'est le travail en équipe. J'ai toujours été seul sur mes projets, sans revue de code ni personne pour me dire que je m'y prends mal. C'est exactement ce que je viens chercher en alternance.

Mobilité
Toute l'Île-de-France
Formation
L3 MIAGE, Université Paris Cité
Statut
Inscription définitive, attestée par le CFA
Puis
M1 et M2 MIAGE, jusqu'en 2029
Diplôme
BTS SIO option SLAM
Disponible
1er septembre 2026
Rythme
3 jours en entreprise
Langues
Français, anglais C1

04

Le parcours

Sept. 2026 à 2029

MIAGE, licence 3 puis master

Université Paris Cité

Méthodes informatiques appliquées à la gestion des entreprises. C'est la filière qui forme des profils à cheval entre le développement et le métier. Trois ans en alternance, de la L3 au M2.

Depuis 2024

Développeur web freelance

Ouahleouff, créateur Supercell

Trois projets livrés pour lui. Sa plateforme de tournois d'abord, puis le portail de son serveur de jeu et l'overlay qu'il utilise en stream. Je les maintiens toujours, et c'est moi qu'il appelle quand ça casse un samedi soir.

  • ·3 675 joueurs inscrits sur 6 éditions, 2 500 euros de lots envoyés automatiquement
  • ·Un portail de vingt-deux pages, en Docker, sur son infrastructure
  • ·Je suis de garde pendant les tournois, donc le samedi soir

2024 à 2026

BTS SIO option SLAM

Solutions logicielles et applications métiers

Trois ans de développement applicatif et de bases de données. Ce sont les cours de cybersécurité qui m'ont le plus marqué, au point que j'en ai repris une unité au CNAM en plus.

  • ·15,81 de moyenne générale
  • ·20 sur 20 en conception et développement d'applications
  • ·19 sur 20 en support et mise à disposition de services informatiques

En parallèle

Cyberstructure de l'internet, réseaux et sécurité

Conservatoire National des Arts et Métiers

Une unité d'enseignement du CNAM que je suis en plus de mes cours, le soir, parce que la sécurité m'intéresse plus que ce que le BTS en montrait.

05

Me joindre

Il me manque une équipe.

J'ai construit ces trois produits seul, sans revue de code et sans personne pour me dire que je m'y prenais mal. C'est la seule chose que je ne peux pas me donner tout seul.

Envoyez-moi votre offre, même si elle affiche Bac+5. Je vous réponds dans la journée en reprenant vos critères un par un, avec ce que j'ai déjà livré en face. Si ça ne colle pas, je vous le dirai aussi.

Les postes qui me vont

Fullstack React ou Next.js en priorité, c'est là que je suis le plus rapide. Back-end Node ou Python sans problème. Data analyst si c'est du SQL, j'aime bien mais je suis moins bon. Product owner junior aussi, si vous acceptez de me former dessus.

L'alternance démarre le 1er septembre 2026, rythme 2 jours à l'université, 3 jours en entreprise. Mon inscription est définitive et attestée par le CFA. La MIAGE se poursuit ensuite en M1 puis en M2 : si vous me formez cette année, je suis encore là en 2029.

J'ai détaillé cet argument sur une page à part, pourquoi recruter un profil licence.