# Imad El Malki Jaddi

> Desenvolupador de programari · Angular & Java

## Contacte

- **Ubicació:** La Gornal, Barcelona
- **Correu:** [imadelmalkij@gmail.com](mailto:imadelmalkij@gmail.com)
- **Perfils:** [LinkedIn](https://www.linkedin.com/in/imadelmalki/) · [GitHub](https://github.com/ImadElMalki)

## Sobre mi

Soc desenvolupador de programari especialitzat en Angular i Java. Des del 2023 treballo a VIEWNEXT, desenvolupant aplicacions web amb equips de Java i QA. Fora de la feina construeixo projectes propis de cap a fi, amb la seva base de dades, el seu desplegament i les seves decisions de producte; uns quants estan publicats i en ús.

## Experiència laboral

### [VIEWNEXT](https://www.viewnext.com/) · Subsidiària d'IBM

**Angular Developer** · juliol del 2023 — Actualitat

Desenvolupo aplicacions Angular per al sector públic amb APIs i backends Java/Spring Boot.

- Contribueixo a CIRNM, un sistema municipal relacionat amb la gestió ambiental.
- Desenvolupo i milloro SIVCA, integrat amb MiNT per gestionar, validar i monitorar les dades de qualitat de l'aire de Madrid.
- Implemento components, pantalles i noves funcions, mantinc l'aplicació i integro APIs amb els equips Java i QA.

### [INETUM](https://www.inetum.com/es/es.html)

**Desenvolupador web** · maig del 2022 — setembre del 2022

Desenvolupament d'aplicacions internes i web a Inetum Catalunya, amb eines low-code i tecnologies web.

- Vaig desenvolupar aplicacions empresarials amb Microsoft Power Apps.
- Vaig crear quadres de comandament i informes amb Microsoft Power BI.

#### Abans de programar · 2015–2023

- **Mosso especialista** — [Toende](https://resetbytoende.com) · Fabricació · 2022–2023
- **Operari de producció i magatzem** — [Laineblock](https://www.laineblock.com) · Indústria · 2022
- **Operari de fàbrica** — [Kettal](https://www.kettal.com) · Mobiliari · 2021
- **Operari de degollament (champagel)** — [Pere Ventura](https://www.pereventura.com) · Cava · 2018–2020
- **Operari d'envasament** — [Pastisart](https://www.pastisart.com) · Alimentació · 2018
- **Operari d'envasament** — [Vacu Vin](https://www.vacuvin.com) · Països Baixos · Fabricació · 2017
- **Empleat de cuina** — [McDonald's](https://www.mcdonalds.nl) · Països Baixos · Hostaleria · 2017
- **Mosso de magatzem** — [Leen Menken](https://www.leenmenken.nl) · Països Baixos · Logística · 2016–2017
- **Operari de manteniment** — [Reverté Productos Minerales](https://reverteminerals.com) · Indústria · 2016
- **Operari agrícola** — [VD Holland](https://www.vdholland.nl) · Països Baixos · Agricultura · 2016
- **Operari agrícola** — [Viticultura Planas 1916](https://www.viversplanas.com) · Agricultura · 2015
- **Agent d'atenció al client** — [Iberdrola](https://www.iberdrola.es) · Energia · 2015
- **Altres habilitats** — Programes ofimàtics · Reparació d'equips · Carretó elevador

## Educació

### Institut Camí de Mar

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

setembre del 2021 — maig del 2023

### Institut de l'Arboç · Institut Manuel de Cabanyes

**Batxillerat en Ciències i Tecnologia**

setembre del 2017 — juny del 2019

## Certificacions

- **[Angular: De cero a experto](https://cursos.devtalles.com/courses/angular)** · DevTalles · 34 h · 2024
- **[Astro: El framework para sitios web orientados al contenido](https://cursos.devtalles.com/courses/Astro)** · DevTalles · 26 h · 2025
- **[GIT+GitHub: Todo un sistema de control de versiones de cero](https://cursos.devtalles.com/courses/git-github-control-versiones)** · DevTalles · 12 h · 2026
- **[Claude Code: Guía completa para desarrolladores de software](https://cursos.devtalles.com/courses/claude-code-guia-completa)** · DevTalles · 18 h · 2026
- **[Model Context Protocol (MCP)](https://midu.dev/curso/intensivo-mcp)** · midu.dev · 2026
- **[GitHub Actions](https://midu.dev/curso/curso-de-github-actions)** · midu.dev · 2026
- **[Docker y DevOps](https://midu.dev/curso/curso-docker-devops)** · midu.dev · 2026
- **Spring Boot Starters** · Viewnext · 12 h · 2025
- **JPA (Java Persistence API)** · Viewnext · 12 h · 2025
- **Java 8: novetats i bones pràctiques** · Viewnext · 8 h · 2025
- **SQL avançat** · Viewnext · 8 h · 2025
- **JavaScript** · Viewnext · 8 h · 2025
- **Disseny responsive amb Bootstrap** · Viewnext · 12 h · 2025
- **Bones pràctiques de rendiment** · Viewnext · 8 h · 2025
- **Seguretat i privacitat per disseny (tècnic)** · Viewnext · 3 h · 2025
- **Crypt0 · Ciberseguretat** · IBM · 3 h · 2026
- **Test de nivell d'anglès · MECR B2** · goFLUENT · 2024

## Idiomes

- **Castellà:** Natiu
- **Català:** Natiu
- **Àrab:** Natiu
- **Berber (amazic):** Natiu
- **Anglès:** Intermedi alt (B2)

## Projectes

### Amazon Spending Tracker

**Estat:** En línia

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, per no comptar dues vegades els correus d'una mateixa compra.
- 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:**
- [Lloc web](https://amazonspendingtracker.com)
- [Chrome Web Store](https://chromewebstore.google.com/detail/amazon-spending-tracker/amejpfnehhohiffphbimdnilhjkpgfpb)

### 100 Cims

**Estat:** Codi privat

Aplicació sobre el repte dels 100 Cims de la FEEC. Fa servir Angular per consultar els cims, una API REST amb Spring Boot i PostgreSQL, i scripts en Python per recopilar i preparar 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 amb Capacitor i una interfície en Svelte 5. La part nativa en Kotlin s'encarrega de les dades, la sincronització i els càlculs de ritmes, splits i desnivell.

**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.
- Ritmes, splits i desnivell calculats en Kotlin.
- Sessió nativa amb Credential Manager i calendari de Google.
- Widget d'inici, recordatoris i alarmes natives.

### Assistent Strava/Garmin

**Estat:** Codi privat

Worker de Cloudflare que rep els webhooks de Strava, compara l'activitat principal del dia amb el pla d'entrenament i hi afegeix el temps i les dades de cursa. Després genera amb IA el títol i el resum que publica 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:** Codi privat

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 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 als imports que falten al correu.
- Sincronització amb reintents, checkpoints i represa.
- Pressupost anual amb avís en acostar-se al límit.

### CaixaBank Spending Tracker

**Estat:** Codi privat

Extensió Chrome MV3 que calcula la despesa mensual llegint els avisos de CaixaBank a Gmail. Reconstrueix l'ordre real dels moviments encadenant saldos.

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

**Destacat:**
- Ordre real dels moviments a partir de la cadena de saldos.
- Deduplicació per identificador de missatge i per saldo.
- Regles de categoria amb aprenentatge local i promoció a codi.
- Sincronització incremental amb marge per als avisos tardans.

### Riolan Solutions

**Estat:** En línia

Lloc corporatiu d'una sola pàgina per a una empresa de lampisteria i reformes. Està fet amb WordPress i Elementor Pro i inclou els serveis, una galeria de treballs i un formulari de contacte.

**Tecnologies:** WordPress · Elementor · PHP · HTML · CSS

**Destacat:**
- Identitat pròpia: paleta blava i morada, tipografies Poppins i Montserrat, i iconografia retallada a mida per als sis serveis.
- Pàgina única amb capçalera fixa, navegació per àncores i seccions de nosaltres, serveis, treballs i contacte.
- Galeria de 32 fotos d'obra optimitzades a WebP.
- Bloc de contacte amb telèfon, urgències 24 h i horari, més formulari amb validació de camps.

### Aquest portafolis

**Estat:** En línia

Lloc estàtic en Astro sobre Cloudflare Pages, trilingüe i sense framework d'interfície. Un sol cv.json alimenta les pàgines, el PDF de cada idioma, el JSON-LD i els endpoints per a màquines; el dinàmic són Pages Functions.

**Tecnologies:** Astro · TypeScript · Cloudflare Workers · D1 · Playwright · Vitest

**Destacat:**
- CSP per hashes i sense unsafe-inline, recalculada des de l'HTML a cada build.
- Pressupostos d'HTML, DOM, CSS i JS que fan fallar el build; Lighthouse bloqueja si l'LCP passa de 2,5 s.
- El PDF es genera i es comprova a cada build: un full A4 i text extraïble amb dos motors.
- Límits d'ús atòmics a D1, provats contra una base real.

**Enllaços:**
- [Lloc web](https://imadelmalki.com)

## Habilitats

- Angular
- TypeScript
- Java
- Spring Boot
- Astro
- Svelte
- Cloudflare Workers
- PostgreSQL
- Supabase
- Docker
