Kamal Ichchou

Salut, moi c'est Kamal.Hi, I'm Kamal.

Je me pose des questions. Souvent, ça finit en appli. I ask myself questions. Often, they end up as apps.

Le jour, je suis data engineer en alternance chez Safran Electrical & Power à Toulouse, et étudiant en master MIAGE. Le reste du temps, je bricole : des bots, des petits outils, des apps. Je fais tout de A à Z, du serveur jusqu'à l'icône, surtout parce que c'est comme ça que j'apprends.

By day I'm an apprentice data engineer at Safran Electrical & Power in Toulouse, and a master's student. The rest of the time I tinker: bots, small tools, apps. I build everything myself, from the server to the app icon, mostly because that's how I learn.

Trois questions qui ont un peu dérapé :Three questions that got slightly out of hand:

Le point vert est en direct : la page interroge chaque site toutes les quelques secondes. Tout tourne sur mon petit serveur.The green dot is live: this page pings each site every few seconds. Everything runs on my own little server.

Dans le tiroir aussi : Goat, le coach Telegram qui me suit à la salle depuis plus de cent jours, avec son app Apple Watch ; un bot qui guette les annonces Leboncoin ; le scraper qui nourrit Brocando ; et ce site, écrit à la main.

Also in the drawer: Goat, the Telegram coach that has followed me to the gym for over a hundred days, with its Apple Watch app; a bot that watches Leboncoin listings; the scraper that feeds Brocando; and this site, written by hand.

Traces

Ce que tes apps savent vraiment de toi, où tes données sont stockées et ce que la loi de ton pays te garantit.

What your apps really know about you, where your data is stored, and what your country's law guarantees.

Le problèmeThe problem

Personne ne lit les politiques de confidentialité. Et quand on les lit, on ne sait pas ce qu'elles valent face au droit de son pays.

Nobody reads privacy policies. And when you do, you can't tell what they're worth under your own country's law.

Ce que j'ai construitWhat I built

  • 67 apps et 43 pays décortiqués, en 15 langues.
  • Chaque affirmation renvoie à au moins une source publique consultée. Sans source vérifiable, elle est supprimée et la suppression est consignée dans un journal public des corrections.
  • Pour chaque app, le déclaré (étiquettes App Store et Google Play) est confronté au détecté (rapports Exodus Privacy).
  • Le score d'intrusion n'est jamais saisi à la main : il est calculé à partir des niveaux de collecte, du chiffrement et des sanctions.
  • 67 apps and 43 countries broken down, in 15 languages.
  • Every claim links to at least one public source. If it can't be verified, it is removed and the removal is logged in a public corrections page.
  • For each app, what is declared (App Store and Google Play labels) is checked against what is detected (Exodus Privacy reports).
  • The intrusion score is never typed in by hand: it is computed from collection levels, encryption and fines.

React, Vite, React Router. Scripts Python qui valident la structure des données, les sources et les traductions, et testent chaque lien cité.React, Vite, React Router. Python scripts validate data structure, sources and translations, and test every cited link.

Ce n'est pas une capture : c'est le site, tu peux cliquer et faire défiler.Not a screenshot: it's the live site, click and scroll around.

Cabri

Un programme d'entraînement à ta mesure, puis une séance guidée à la fois. Chaque série te fait grimper en altitude.

A training plan that fits you, then one guided session at a time. Every set makes you climb.

D'où ça vientWhere it comes from

Je me suis d'abord fait un outil perso, Goat : un bot Telegram, une PWA et une app Apple Watch qui suivent mes séances depuis plus de cent jours. Cabri en reprend la mascotte et les mécaniques, mais n'importe qui peut composer son propre programme.

I first built a personal tool, Goat: a Telegram bot, a PWA and an Apple Watch app that have tracked my workouts for over a hundred days. Cabri keeps its mascot and mechanics, but anyone can build their own plan.

Ce que j'ai construitWhat I built

  • Quatre questions, un programme proposé et adapté au matériel et au niveau, puis tout est modifiable : séances, jours, exercices, séries, repos.
  • 116 exercices avec consignes de placement, erreur à éviter et variantes plus faciles ou plus dures, et 8 programmes types.
  • Repos chronométré, dernière performance pré-remplie, records, paliers d'altitude. La série compte les semaines d'objectif tenu : un jour de repos ne la casse pas.
  • Sans compte : les données restent sur le téléphone, exportables. Fonctionne hors ligne.
  • Four questions, a plan adapted to your equipment and level, then everything is editable: sessions, days, exercises, sets, rest.
  • 116 exercises with form cues, the most common mistake, easier and harder variations, plus 8 ready-made plans.
  • Rest timer, last performance pre-filled, personal records, altitude milestones. The streak counts weeks on target, so a rest day never breaks it.
  • No account: data stays on the phone and can be exported. Works offline.

JavaScript sans dépendance ni build, PWA avec service worker. Tests unitaires node:test et parcours complet automatisé avec Playwright.Dependency-free JavaScript with no build step, PWA with a service worker. node:test unit tests and a full end-to-end run with Playwright.

Écran d'accueil de Cabri : l'altitude atteinte, les séances de la semaine et la séance du jour.
En direct, compte de démoLive, demo account
Séance en cours dans Cabri : pec deck, série 1 sur 4, la dernière performance rappelée et les réglages de répétitions et de charge.
Pendant une séanceDuring a session

Brocando

Trouver la brocante de ce week-end, près de chez soi, sans écumer dix sites.

Find this weekend's flea market near you without digging through ten websites.

Ce que j'ai construitWhat I built

  • Une app mobile Flutter pour iOS et Android : recherche par ville, rayon et date, carte, favoris, et une notification si une brocante suivie est annulée.
  • Le pipeline de collecte qui agrège plus de 8 000 événements partout en France, avec son API, sa base de données et son monitoring.
  • Le site vitrine et les pages légales exigées par les stores, toute la fiche App Store et Google Play.
  • A Flutter mobile app for iOS and Android: search by city, radius and date, map, favourites, and a notification when a saved market is cancelled.
  • The data collection pipeline aggregating over 8,000 events across France, with its API, database and monitoring.
  • The landing site, the legal pages the stores require, and the full App Store and Google Play listings.

Flutter, Firebase Cloud Messaging. Collecte et API en Node.js avec PostgreSQL, métriques Prometheus et Grafana. Site en Astro. Auto-hébergé derrière Traefik.Flutter, Firebase Cloud Messaging. Collection and API in Node.js with PostgreSQL, Prometheus and Grafana metrics. Site built with Astro. Self-hosted behind Traefik.

Site en ligne, app en cours de publication sur les stores.Site live, app going through store review.

Bon après-midi, bonne chine !

Good afternoon, happy hunting!

Accueil de l'app Brocando : 117 brocantes à Paris, avec la date, le lieu, les horaires et les favoris.

ParcoursBackground

  1. En alternanceApprenticeship

    Data engineer, Safran Electrical & Power

    Chaîne décisionnelle sur le site de Blagnac : SQL Server, flux ETL SSIS sur des données SAP, et le pipeline de calcul des prix, que je refactorise.

    Business intelligence pipeline at the Blagnac site: SQL Server, SSIS ETL flows on SAP data, and the pricing computation pipeline, which I'm refactoring.

  2. 2026–2027

    Master 2 MIAGE, parcours IANMSc in Information Systems (MIAGE), year 2

    Université de Toulouse. Intelligence artificielle, intégration d'applications, données. Le M1 est validé.

    University of Toulouse. Artificial intelligence, application integration, data. First year completed.

Tout, jusqu'à la prodAll the way to production

Je ne m'arrête pas à la maquette : DNS, certificats, conteneurs, stores, pages légales, c'est aussi mon travail.

I don't stop at the mockup: DNS, certificates, containers, app stores and legal pages are part of the job.

Des données vérifiablesData you can check

Mon métier, ce sont les données. Dans mes projets, chaque chiffre a une source et chaque règle a un test.

Data is my day job. In my projects, every number has a source and every rule has a test.

Avec ClaudeWith Claude

Claude est mon binôme au quotidien : recherche, code, revue et déploiement. C'est ce qui me permet de tenir trois produits en parallèle de l'alternance.

Claude is my everyday pair: research, code, review and deployment. It's how I keep three products running alongside my apprenticeship.

On en parle ?Let's talk

contact@kckm.fr
GitHub Toulouse, FranceToulouse, France