Rayan Benachour

Alternance recherchée pour septembre 2026

Rayan Benachour

Développeur fullstack. Je rentre en Licence 3 MIAGE en alternance à l'Université Paris Cité.

Je fais du web, surtout du Next.js et du TypeScript, avec du Python quand il faut lire des images. Trois des projets en dessous sont ouverts au public et ont des utilisateurs dessus, les autres tournent chez le client ou sur ma machine.

La plupart des offres qui me correspondent demandent un Bac+5. Voici l'autre côté du calcul : la MIAGE continue en M1 puis en M2, donc l'alternant que vous formez cette année est encore là en 2029. Et il arrive avec trois applications déjà en production.

Sevran, Île-de-FranceRythme 2 jours à l'université, 3 jours en entreprise
+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

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é
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
02

Compétences

En production sur les projets plus bas. Les quatre en gras 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

Projets

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

Voir le site

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

Livré à un client, hébergé et maintenu sur son infrastructure

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

RoyaleMetrics

Voir le site

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

Architecture, développement, tests et mise 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

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.

Toute la difficulté est dans la fiabilité de la lecture. Un chiffre mal reconnu au milieu d'un direct, ça se voit tout de suite et ça ne se rattrape pas.

  • Python
  • OpenCV
  • Tesseract OCR
  • Flask
  • Flask-SocketIO
  • ADB
  • NumPy

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.

  • Node.js
  • tmi.js
  • Express
  • WebSocket

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.

  • Python
  • Scripting
04

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

Contact

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. La MIAGE se poursuit ensuite en M1 puis en M2 : si vous me formez cette année, je suis encore là en 2029.