# Imad El Malki Jaddi > Desarrollador de software · Angular & Java ## Contacto - **Ubicación:** La Gornal, Barcelona - **Email:** [imadelmalkij@gmail.com](mailto:imadelmalkij@gmail.com) - **Perfiles:** [LinkedIn](https://www.linkedin.com/in/imadelmalki/) · [GitHub](https://github.com/ImadElMalki) ## Sobre mí Soy desarrollador de software especializado en Angular y Java. Desde 2023 trabajo en VIEWNEXT, desarrollando aplicaciones web junto a equipos de Java y QA. Fuera del trabajo construyo proyectos propios de principio a fin, con su base de datos, su despliegue y sus decisiones de producto; varios están publicados y en uso. ## Experiencia laboral ### [VIEWNEXT](https://www.viewnext.com/) · Subsidiaria de IBM **Angular Developer** · julio de 2023 — Actualidad Desarrollo aplicaciones Angular para el sector público con APIs y backends Java/Spring Boot. - Contribuyo a CIRNM, un sistema municipal relacionado con la gestión ambiental. - Desarrollo y mejoro SIVCA, integrado con MiNT para gestionar, validar y monitorizar los datos de calidad del aire de Madrid. - Implemento componentes, pantallas y nuevas funciones, mantengo la aplicación e integro APIs con los equipos Java y QA. ### [INETUM](https://www.inetum.com/es/es.html) **Desarrollador web** · mayo de 2022 — septiembre de 2022 Desarrollo de aplicaciones internas y web en Inetum Catalunya, con herramientas low-code y tecnologías web. - Desarrollé aplicaciones empresariales con Microsoft Power Apps. - Creé cuadros de mando e informes con Microsoft Power BI. #### Antes de programar · 2015–2023 - **Mozo especialista** — [Toende](https://resetbytoende.com) · Fabricación · 2022–2023 - **Operario de producción y almacén** — [Laineblock](https://www.laineblock.com) · Industria · 2022 - **Operario de fábrica** — [Kettal](https://www.kettal.com) · Mobiliario · 2021 - **Operario de degüelle (champagel)** — [Pere Ventura](https://www.pereventura.com) · Cava · 2018–2020 - **Operario de envasado** — [Pastisart](https://www.pastisart.com) · Alimentación · 2018 - **Operario de envasado** — [Vacu Vin](https://www.vacuvin.com) · Países Bajos · Fabricación · 2017 - **Empleado de cocina** — [McDonald's](https://www.mcdonalds.nl) · Países Bajos · Hostelería · 2017 - **Mozo de almacén** — [Leen Menken](https://www.leenmenken.nl) · Países Bajos · Logística · 2016–2017 - **Operario de mantenimiento** — [Reverté Productos Minerales](https://reverteminerals.com) · Industria · 2016 - **Operario agrícola** — [VD Holland](https://www.vdholland.nl) · Países Bajos · Agricultura · 2016 - **Operario agrícola** — [Viticultura Planas 1916](https://www.viversplanas.com) · Agricultura · 2015 - **Agente de atención al cliente** — [Iberdrola](https://www.iberdrola.es) · Energía · 2015 - **Otras habilidades** — Programas ofimáticos · Reparación de equipos · Carretilla elevadora ## Educación ### Institut Camí de Mar **Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Web (DAW)** septiembre de 2021 — mayo de 2023 ### Institut de l'Arboç · Institut Manuel de Cabanyes **Bachillerato en Ciencias y Tecnología** septiembre de 2017 — junio de 2019 ## Certificaciones - **[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: novedades y buenas prácticas** · Viewnext · 8 h · 2025 - **SQL avanzado** · Viewnext · 8 h · 2025 - **JavaScript** · Viewnext · 8 h · 2025 - **Diseño responsive con Bootstrap** · Viewnext · 12 h · 2025 - **Buenas prácticas de rendimiento** · Viewnext · 8 h · 2025 - **Seguridad y privacidad por diseño (técnico)** · Viewnext · 3 h · 2025 - **Crypt0 · Ciberseguridad** · IBM · 3 h · 2026 - **Test de nivel de inglés · MCER B2** · goFLUENT · 2024 ## Idiomas - **Español:** Nativo - **Catalán:** Nativo - **Árabe:** Nativo - **Bereber (amazig):** Nativo - **Inglés:** Intermedio alto (B2) ## Proyectos ### Amazon Spending Tracker **Estado:** En línea Extensión Chrome MV3 que calcula y desglosa el gasto anual en Amazon desde las confirmaciones de Gmail, con OAuth de solo lectura, deduplicación y almacenamiento local. **Tecnologías:** JavaScript · Chrome Extensions · Gmail API · OAuth **Destacado:** - Deduplicación por número de pedido, para no contar dos veces los correos de una misma compra. - Sincronización incremental cada hora y escaneo completo semanal. - Exportación a .xlsx generada sin dependencias. - Interfaz en español e inglés; los datos no salen del navegador. **Enlaces:** - [Sitio web](https://amazonspendingtracker.com) - [Chrome Web Store](https://chromewebstore.google.com/detail/amazon-spending-tracker/amejpfnehhohiffphbimdnilhjkpgfpb) ### 100 Cims **Estado:** Código privado Aplicación sobre el reto de los 100 Cims de la FEEC. Usa Angular para consultar las cimas, una API REST con Spring Boot y PostgreSQL, y scripts en Python para recopilar y preparar los datos y las imágenes. **Tecnologías:** Angular · TypeScript · Java · Spring Boot · PostgreSQL · Python · Docker **Destacado:** - API REST con Maven y PostgreSQL 17 en contenedor. - Proceso en Python que recopila los datos de las cimas y los carga en la base de datos. - Descarga y optimización de las imágenes a WebP. - Restauración del conjunto de datos desde CSV. ### Race Hub **Estado:** En desarrollo App Android con Capacitor y una interfaz en Svelte 5. La parte nativa en Kotlin se encarga de los datos, la sincronización y los cálculos de ritmos, splits y desnivel. **Tecnologías:** Capacitor · Svelte · TypeScript · Kotlin · Room · WorkManager · Supabase **Destacado:** - Room como única fuente de datos y WorkManager como único motor de sincronización con Supabase. - Ritmos, splits y desnivel calculados en Kotlin. - Sesión nativa con Credential Manager y calendario de Google. - Widget de inicio, recordatorios y alarmas nativas. ### Asistente Strava/Garmin **Estado:** Código privado Worker de Cloudflare que recibe los webhooks de Strava, compara la actividad principal del día con el plan de entrenamiento y añade el clima y los datos de carrera. Después genera con IA el título y el resumen que publica en Strava. **Tecnologías:** Cloudflare Workers · D1 · Queues · R2 · React · TypeScript · Hono · Vitest **Destacado:** - Colas con reintentos y cola de mensajes fallidos, más cron horario y purga diaria. - Tokens de Strava cifrados con AES-GCM antes de guardarse en D1. - Panel de administración en React servido por el propio Worker. - Importación de archivos FIT de Garmin y streams de actividad guardados en R2. ### Race Spending Tracker **Estado:** Código privado Extensión Chrome MV3 que calcula el gasto anual en inscripciones a carreras desde las confirmaciones de Gmail, con OAuth de solo lectura y almacenamiento local. **Tecnologías:** JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright **Destacado:** - Adaptadores para nueve plataformas de inscripción. - Extracción acotada de texto de PDF para los importes que faltan en el correo. - Sincronización con reintentos, checkpoints y reanudación. - Presupuesto anual con aviso al acercarse al límite. ### CaixaBank Spending Tracker **Estado:** Código privado Extensión Chrome MV3 que calcula el gasto mensual leyendo los avisos de CaixaBank en Gmail. Reconstruye el orden real de los movimientos encadenando saldos. **Tecnologías:** JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright **Destacado:** - Orden real de los movimientos a partir de la cadena de saldos. - Deduplicación por identificador de mensaje y por saldo. - Reglas de categoría con aprendizaje local y promoción a código. - Sincronización incremental con margen para los avisos tardíos. ### Riolan Solutions **Estado:** En línea Sitio corporativo de una sola página para una empresa de lampistería y reformas. Está hecho con WordPress y Elementor Pro e incluye sus servicios, una galería de trabajos y un formulario de contacto. **Tecnologías:** WordPress · Elementor · PHP · HTML · CSS **Destacado:** - Identidad propia: paleta azul y morada, tipografías Poppins y Montserrat, e iconografía recortada a medida para los seis servicios. - Página única con cabecera fija, navegación por anclas y secciones de nosotros, servicios, trabajos y contacto. - Galería de 32 fotos de obra optimizadas a WebP. - Bloque de contacto con teléfono, urgencias 24 h y horario, más formulario con validación de campos. ### Este portfolio **Estado:** En línea Sitio estático en Astro sobre Cloudflare Pages, trilingüe y sin framework de interfaz. Un solo cv.json alimenta las páginas, el PDF de cada idioma, el JSON-LD y los endpoints para máquinas; lo dinámico son Pages Functions. **Tecnologías:** Astro · TypeScript · Cloudflare Workers · D1 · Playwright · Vitest **Destacado:** - CSP por hashes y sin unsafe-inline, recalculada desde el HTML en cada build. - Presupuestos de HTML, DOM, CSS y JS que fallan el build; Lighthouse bloquea si el LCP pasa de 2,5 s. - El PDF se genera y se comprueba en cada build: una hoja A4 y texto extraíble con dos motores. - Límites de uso atómicos en D1, probados contra una base real. **Enlaces:** - [Sitio web](https://imadelmalki.com) ## Habilidades - Angular - TypeScript - Java - Spring Boot - Astro - Svelte - Cloudflare Workers - PostgreSQL - Supabase - Docker ## Versiones legibles por máquinas - [CV en JSON Resume](https://imadelmalki.com/cv.json) - [CV en Markdown](https://imadelmalki.com/cv.md)