Imad El Malki Jaddi

Desenvolupador de programari | Angular, Java i productes full-stack

La Gornal, Catalunya
imadelmalkij@gmail.com • https://www.linkedin.com/in/imad-el-malki-jaddi-a0585a284/ • https://github.com/ImadElMalki
Imad El Malki Jaddi

Sobre mi

Desenvolupador de programari amb experiència professional en Angular i col·laboració amb backends Java/Spring Boot. En projectes propis construeixo productes d'extrem a extrem amb TypeScript, Kotlin, React, Svelte i serveis al núvol. M'interessa transformar problemes reals —inclosos el running i la productivitat personal— en aplicacions útils, mantenibles i ben provades.

Experiència laboral

  1. VIEWNEXT

    Angular Developer

    Actualitat, Actualitat

    Desenvolupament i evolució d'aplicacions web per al sector públic amb Angular, integrades amb APIs i backends Java/Spring Boot.

    • Participació en CIRNM, sistema municipal relacionat amb la gestió ambiental.
    • Desenvolupament i evolució de SIVCA, sistema municipal integrat amb MiNT per gestionar, validar i monitorar dades de qualitat de l'aire de Madrid.
    • Implementació de components, pantalles i noves funcionalitats, manteniment evolutiu i integració amb APIs en col·laboració amb equips backend Java i QA.
  2. INETUM

    Desenvolupador web en pràctiques

    Desenvolupament web i de solucions empresarials low-code durant el període de pràctiques.

    • Desenvolupament d'aplicacions empresarials amb Microsoft Power Apps.
    • Creació de quadres de comandament i informes amb Microsoft Power BI.
    • Desenvolupament web amb JavaScript, Laravel, HTML, CSS, jQuery i Bootstrap.

Educació

  • Institut Camí de Mar

    Cicle Formatiu de Grau Superior en Desenvolupament d'Aplicacions Web (DAW)

Idiomes

  • CastellàNatiu
  • CatalàNatiu
  • ÀrabNatiu
  • Berber (amazic)Natiu
  • AnglèsIntermedi

Projectes

  • Amazon Spending Tracker

    Publicat

    Extensió Chrome MV3 que calcula i desglossa la despesa anual a Amazon a partir de les confirmacions de Gmail, amb OAuth de només lectura, deduplicació i emmagatzematge local.

    Amazon Spending Tracker

    Publicat
    • Despesa anual i desglossament per mes
    • La mateixa vista en tema clar
    • Darreres comandes, amb reemborsaments i subscripcions a part
    • Revisió manual dels imports que el correu no deixa llegir
    • Connexió amb Gmail, amb permís de només lectura

    Extensió Chrome MV3 que calcula i desglossa la despesa anual a Amazon a partir de les confirmacions de Gmail, amb OAuth de només lectura, deduplicació i emmagatzematge local.

    • Deduplicació per número de comanda, perquè els diversos correus d'una mateixa compra no se sumin dues vegades.
    • Sincronització incremental cada hora i escaneig complet setmanal.
    • Exportació a .xlsx generada sense dependències.
    • Interfície en castellà i anglès; les dades no surten del navegador.
  • 100 Cims

    Projecte personal

    Aplicació full-stack sobre el repte dels 100 cims de la FEEC: Angular per consultar els cims, API REST en Spring Boot amb PostgreSQL sobre Docker, i scripts en Python que recopilen, insereixen i optimitzen les dades i les imatges.

    100 Cims

    Projecte personal
    • Els 522 cims del repte, amb scroll infinit
    • Mode taula, amb filtre i columnes ordenables
    • Detall d'un cim, amb rutes i com arribar-hi

    Aplicació full-stack sobre el repte dels 100 cims de la FEEC: Angular per consultar els cims, API REST en Spring Boot amb PostgreSQL sobre Docker, i scripts en Python que recopilen, insereixen i optimitzen les dades i les imatges.

    • API REST amb Maven i PostgreSQL 17 en contenidor.
    • Procés en Python que recopila les dades dels cims i les carrega a la base de dades.
    • Descàrrega i optimització de les imatges a WebP.
    • Restauració del conjunt de dades des de CSV.
    • Angular
    • TypeScript
    • Java
    • Spring Boot
    • PostgreSQL
    • Python
    • Docker
  • Race Hub

    En desenvolupament

    App Android construïda amb Capacitor: la interfície és Svelte 5 en un WebView i un motor natiu en Kotlin posseeix les dades, la sincronització, la xarxa i el càlcul. Planifica curses, calcula ritmes i splits, consulta el temps i les rutes i sincronitza el calendari entre dispositius.

    Race Hub

    En desenvolupament
    • Curses planificades, ordenades pel compte enrere
    • Resum de la cursa i cronograma del dia
    • Parcials i ritme calculats al motor natiu
    • Descans i desplaçament, calculats enrere des de la sortida
    • Tema, deu accents de color, idioma i unitats
    • La mateixa pantalla amb un altre accent seleccionat

    App Android construïda amb Capacitor: la interfície és Svelte 5 en un WebView i un motor natiu en Kotlin posseeix les dades, la sincronització, la xarxa i el càlcul. Planifica curses, calcula ritmes i splits, consulta el temps i les rutes i sincronitza el calendari entre dispositius.

    • Room com a única font de dades i WorkManager com a únic motor de sincronització amb Supabase.
    • Prediccions de ritme, splits i desnivell calculats en Kotlin.
    • Inici de sessió natiu amb Credential Manager i calendari mitjançant l'API d'autorització de Google.
    • Widget de pantalla d'inici, recordatoris i alarmes natives.
    • Capacitor
    • Svelte
    • TypeScript
    • Kotlin
    • Room
    • WorkManager
    • Supabase
  • Plataforma Strava/Garmin

    Projecte personal

    Worker de Cloudflare que escolta els webhooks de Strava, classifica l'activitat principal del dia contra un pla d'entrenament, l'enriqueix amb el temps i dades de cursa, i genera amb IA el títol i l'entradeta que republica a Strava.

    Plataforma Strava/Garmin

    Projecte personal
    • Portada pública, deliberadament sense dades
    • Tauler de càrrega i forma, amb la tendència de cada mètrica
    • Rendiment: preparació, prediccions i millors marques
    • Evolució de la càrrega aguda i crònica
    • Calendari d'entrenaments: el planificat contra el fet
    • Operacions: cua, errors, registre i webhooks

    Worker de Cloudflare que escolta els webhooks de Strava, classifica l'activitat principal del dia contra un pla d'entrenament, l'enriqueix amb el temps i dades de cursa, i genera amb IA el títol i l'entradeta que republica a Strava.

    • Cues amb reintents i cua de missatges fallits, més cron horari i purga diària.
    • Tokens de Strava xifrats amb AES-GCM abans de desar-los a D1.
    • Tauler d'administració en React servit pel mateix Worker.
    • Importació d'arxius FIT de Garmin i streams d'activitat desats a R2.
    • Cloudflare Workers
    • D1
    • Queues
    • R2
    • React
    • TypeScript
    • Hono
    • Vitest
  • Race Spending Tracker

    Projecte personal

    Extensió Chrome MV3 que calcula la despesa anual en inscripcions a curses a partir de les confirmacions de Gmail, amb OAuth de només lectura, classificació conservadora per plataforma i emmagatzematge local.

    Race Spending Tracker

    Projecte personal
    • Properes curses, amb el que va costar cada inscripció
    • Historial de les curses ja disputades
    • Despesa de l'any contra el pressupost, i euros per quilòmetre
    • Cua de revisió per als correus ambigus
    • Ajustos: abast de l'escaneig, pressupost i còpies

    Extensió Chrome MV3 que calcula la despesa anual en inscripcions a curses a partir de les confirmacions de Gmail, amb OAuth de només lectura, classificació conservadora per plataforma i emmagatzematge local.

    • Adaptadors per a nou plataformes d'inscripció.
    • Extracció acotada de text de PDF per recuperar els imports que falten al correu.
    • Sincronització amb reintents, checkpoints i represa després d'una aturada.
    • Pressupost per any amb avís en acostar-se al límit.
    • JavaScript
    • Chrome Extensions
    • Gmail API
    • OAuth
    • Playwright
  • CaixaBank Spending Tracker

    Projecte personal

    Extensió Chrome MV3 que calcula la despesa mensual llegint els avisos de CaixaBank a Gmail. Reconstrueix l'ordre real dels moviments encadenant saldos, en comptes de refiar-se de l'hora d'arribada del correu.

    CaixaBank Spending Tracker

    Projecte personal
    • Resum del mes contra el pressupost
    • Corregir la categoria d'un moviment, i aprendre-la
    • Ajustos: abast de la lectura i pressupost mensual
    • Pantalla inicial, abans de connectar el correu

    Extensió Chrome MV3 que calcula la despesa mensual llegint els avisos de CaixaBank a Gmail. Reconstrueix l'ordre real dels moviments encadenant saldos, en comptes de refiar-se de l'hora d'arribada del correu.

    • Ordre real dels moviments reconstruït a partir de la cadena de saldos.
    • Deduplicació per identificador de missatge i per saldo, per no perdre dues compres iguals el mateix dia.
    • Regles de categoria amb aprenentatge local i promoció a codi.
    • Sincronització incremental amb marge per als avisos que arriben amb retard.
    • JavaScript
    • Chrome Extensions
    • Gmail API
    • OAuth
    • Playwright

Habilitats

  • Angular
  • TypeScript
  • JavaScript
  • Java
  • Spring Boot
  • Power Apps
  • Power BI
  • HTML
  • CSS
  • React
  • Svelte
  • Kotlin
  • Cloudflare Workers
  • Astro
  • PostgreSQL
  • MySQL
  • Supabase
  • Docker
  • Git
  • GitHub
Descarrega .md

Imad El Malki Jaddi

Desenvolupador de programari | Angular, Java i productes full-stack

Contacte

Sobre mi

Desenvolupador de programari amb experiència professional en Angular i col·laboració amb backends Java/Spring Boot. En projectes propis construeixo productes d'extrem a extrem amb TypeScript, Kotlin, React, Svelte i serveis al núvol. M'interessa transformar problemes reals —inclosos el running i la productivitat personal— en aplicacions útils, mantenibles i ben provades.

Experiència laboral

VIEWNEXT

Angular Developer · febrer del 2024 — Actualitat

Desenvolupament i evolució d'aplicacions web per al sector públic amb Angular, integrades amb APIs i backends Java/Spring Boot.

  • Participació en CIRNM, sistema municipal relacionat amb la gestió ambiental.
  • Desenvolupament i evolució de SIVCA, sistema municipal integrat amb MiNT per gestionar, validar i monitorar dades de qualitat de l'aire de Madrid.
  • Implementació de components, pantalles i noves funcionalitats, manteniment evolutiu i integració amb APIs en col·laboració amb equips backend Java i QA.

INETUM

Desenvolupador web en pràctiques · maig del 2022 — maig del 2023

Desenvolupament web i de solucions empresarials low-code durant el període de pràctiques.

  • Desenvolupament d'aplicacions empresarials amb Microsoft Power Apps.
  • Creació de quadres de comandament i informes amb Microsoft Power BI.
  • Desenvolupament web amb JavaScript, Laravel, HTML, CSS, jQuery i Bootstrap.

Educació

Institut Camí de Mar

Cicle Formatiu de Grau Superior en Desenvolupament d'Aplicacions Web (DAW)

setembre del 2021 — maig del 2023

Idiomes

  • Castellà: Natiu
  • Català: Natiu
  • Àrab: Natiu
  • Berber (amazic): Natiu
  • Anglès: Intermedi

Projectes

Amazon Spending Tracker

Estat: Publicat

Extensió Chrome MV3 que calcula i desglossa la despesa anual a Amazon a partir de les confirmacions de Gmail, amb OAuth de només lectura, deduplicació i emmagatzematge local.

Tecnologies: JavaScript · Chrome Extensions · Gmail API · OAuth

Destacat:

  • Deduplicació per número de comanda, perquè els diversos correus d'una mateixa compra no se sumin dues vegades.
  • Sincronització incremental cada hora i escaneig complet setmanal.
  • Exportació a .xlsx generada sense dependències.
  • Interfície en castellà i anglès; les dades no surten del navegador.

Enllaços:

100 Cims

Estat: Projecte personal

Aplicació full-stack sobre el repte dels 100 cims de la FEEC: Angular per consultar els cims, API REST en Spring Boot amb PostgreSQL sobre Docker, i scripts en Python que recopilen, insereixen i optimitzen les dades i les imatges.

Tecnologies: Angular · TypeScript · Java · Spring Boot · PostgreSQL · Python · Docker

Destacat:

  • API REST amb Maven i PostgreSQL 17 en contenidor.
  • Procés en Python que recopila les dades dels cims i les carrega a la base de dades.
  • Descàrrega i optimització de les imatges a WebP.
  • Restauració del conjunt de dades des de CSV.

Race Hub

Estat: En desenvolupament

App Android construïda amb Capacitor: la interfície és Svelte 5 en un WebView i un motor natiu en Kotlin posseeix les dades, la sincronització, la xarxa i el càlcul. Planifica curses, calcula ritmes i splits, consulta el temps i les rutes i sincronitza el calendari entre dispositius.

Tecnologies: Capacitor · Svelte · TypeScript · Kotlin · Room · WorkManager · Supabase

Destacat:

  • Room com a única font de dades i WorkManager com a únic motor de sincronització amb Supabase.
  • Prediccions de ritme, splits i desnivell calculats en Kotlin.
  • Inici de sessió natiu amb Credential Manager i calendari mitjançant l'API d'autorització de Google.
  • Widget de pantalla d'inici, recordatoris i alarmes natives.

Plataforma Strava/Garmin

Estat: Projecte personal

Worker de Cloudflare que escolta els webhooks de Strava, classifica l'activitat principal del dia contra un pla d'entrenament, l'enriqueix amb el temps i dades de cursa, i genera amb IA el títol i l'entradeta que republica a Strava.

Tecnologies: Cloudflare Workers · D1 · Queues · R2 · React · TypeScript · Hono · Vitest

Destacat:

  • Cues amb reintents i cua de missatges fallits, més cron horari i purga diària.
  • Tokens de Strava xifrats amb AES-GCM abans de desar-los a D1.
  • Tauler d'administració en React servit pel mateix Worker.
  • Importació d'arxius FIT de Garmin i streams d'activitat desats a R2.

Race Spending Tracker

Estat: Projecte personal

Extensió Chrome MV3 que calcula la despesa anual en inscripcions a curses a partir de les confirmacions de Gmail, amb OAuth de només lectura, classificació conservadora per plataforma i emmagatzematge local.

Tecnologies: JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright

Destacat:

  • Adaptadors per a nou plataformes d'inscripció.
  • Extracció acotada de text de PDF per recuperar els imports que falten al correu.
  • Sincronització amb reintents, checkpoints i represa després d'una aturada.
  • Pressupost per any amb avís en acostar-se al límit.

CaixaBank Spending Tracker

Estat: Projecte personal

Extensió Chrome MV3 que calcula la despesa mensual llegint els avisos de CaixaBank a Gmail. Reconstrueix l'ordre real dels moviments encadenant saldos, en comptes de refiar-se de l'hora d'arribada del correu.

Tecnologies: JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright

Destacat:

  • Ordre real dels moviments reconstruït a partir de la cadena de saldos.
  • Deduplicació per identificador de missatge i per saldo, per no perdre dues compres iguals el mateix dia.
  • Regles de categoria amb aprenentatge local i promoció a codi.
  • Sincronització incremental amb marge per als avisos que arriben amb retard.

Habilitats

  • Angular
  • TypeScript
  • JavaScript
  • Java
  • Spring Boot
  • Power Apps
  • Power BI
  • HTML
  • CSS
  • React
  • Svelte
  • Kotlin
  • Cloudflare Workers
  • Astro
  • PostgreSQL
  • MySQL
  • Supabase
  • Docker
  • Git
  • GitHub