# Imad El Malki Jaddi > Software developer | Angular, Java and full-stack products ## Contact - **Location:** La Gornal, Catalonia - **Email:** [imadelmalkij@gmail.com](mailto:imadelmalkij@gmail.com) - **LinkedIn:** [imad-el-malki-jaddi-a0585a284](https://www.linkedin.com/in/imad-el-malki-jaddi-a0585a284/) - **GitHub:** [ImadElMalki](https://github.com/ImadElMalki) ## About me Software developer with professional experience in Angular and close collaboration with Java/Spring Boot backends. In my own projects I build products end to end with TypeScript, Kotlin, React, Svelte and cloud services. I enjoy turning real problems —running and personal productivity among them— into useful, maintainable, well-tested applications. ## Work experience ### [VIEWNEXT](https://www.viewnext.com/) **Angular Developer** · February 2024 — Present Development and evolution of web applications for the public sector with Angular, integrated with APIs and Java/Spring Boot backends. - Contributed to CIRNM, a municipal system for environmental management. - Built and evolved SIVCA, a municipal system integrated with MiNT to manage, validate and monitor air quality data for Madrid. - Implemented components, screens and new features, handled evolutionary maintenance and API integration together with Java backend and QA teams. ### [INETUM](https://www.inetum.com/es) **Web developer intern** · May 2022 — May 2023 Web development and low-code enterprise solutions during the internship. - Built enterprise applications with Microsoft Power Apps. - Created dashboards and reports with Microsoft Power BI. - Web development with JavaScript, Laravel, HTML, CSS, jQuery and Bootstrap. ## Education ### Institut Camí de Mar **Advanced Vocational Training Diploma in Web Application Development (DAW)** September 2021 — May 2023 ## Languages - **Spanish:** Native - **Catalan:** Native - **Arabic:** Native - **Berber (Amazigh):** Native - **English:** Intermediate ## Projects ### Amazon Spending Tracker **Status:** Published Chrome MV3 extension that calculates and breaks down yearly Amazon spending from Gmail confirmations, with read-only OAuth, deduplication and local storage. **Technologies:** JavaScript · Chrome Extensions · Gmail API · OAuth **Highlights:** - Deduplication by order number, so the several emails of one purchase are not counted twice. - Hourly incremental sync plus a weekly full scan. - .xlsx export generated with no dependencies. - Spanish and English interface; data never leaves the browser. **Links:** - [Website](https://amazonspendingtracker.com) - [Chrome Web Store](https://chromewebstore.google.com/detail/amazon-spending-tracker/amejpfnehhohiffphbimdnilhjkpgfpb) ### 100 Cims **Status:** Personal project Full-stack application around the FEEC 100 peaks challenge: Angular to browse the peaks, a Spring Boot REST API with PostgreSQL on Docker, and Python scripts that collect, load and optimise the data and images. **Technologies:** Angular · TypeScript · Java · Spring Boot · PostgreSQL · Python · Docker **Highlights:** - REST API with Maven and PostgreSQL 17 in a container. - Python pipeline that collects the peak data and loads it into the database. - Image download and optimisation to WebP. - Dataset restore from CSV. ### Race Hub **Status:** In development Android app built with Capacitor: the interface is Svelte 5 in a WebView while a native Kotlin engine owns data, sync, networking and computation. It plans races, calculates paces and splits, checks weather and routes, and syncs the calendar across devices. **Technologies:** Capacitor · Svelte · TypeScript · Kotlin · Room · WorkManager · Supabase **Highlights:** - Room as the single source of data and WorkManager as the sole sync engine against Supabase. - Pace predictions, splits and elevation gain computed in Kotlin. - Native sign-in with Credential Manager and calendar access through the Google Authorization API. - Home-screen widget, reminders and native alarms. ### Strava/Garmin Platform **Status:** Personal project Cloudflare Worker that listens to Strava webhooks, classifies the main activity of the day against a training plan, enriches it with weather and race data, and generates with AI the title and summary it publishes back to Strava. **Technologies:** Cloudflare Workers · D1 · Queues · R2 · React · TypeScript · Hono · Vitest **Highlights:** - Queues with retries and a dead-letter queue, plus an hourly cron and a daily purge. - Strava tokens encrypted with AES-GCM before being stored in D1. - React admin dashboard served by the Worker itself. - Garmin FIT file import and activity streams stored in R2. ### Race Spending Tracker **Status:** Personal project Chrome MV3 extension that calculates yearly race-registration spending from Gmail confirmations, with read-only OAuth, conservative per-platform classification and local storage. **Technologies:** JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright **Highlights:** - Adapters for nine race-registration platforms. - Bounded PDF text extraction to recover amounts missing from the email body. - Sync with retries, checkpoints and resume after an interruption. - Per-year budget with a warning as the limit approaches. ### CaixaBank Spending Tracker **Status:** Personal project Chrome MV3 extension that calculates monthly spending by reading CaixaBank alerts in Gmail. It reconstructs the real order of transactions by chaining balances instead of trusting the email arrival time. **Technologies:** JavaScript · Chrome Extensions · Gmail API · OAuth · Playwright **Highlights:** - Real transaction order reconstructed from the chain of balances. - Deduplication by message id and by balance, so two identical purchases on the same day are not lost. - Category rules with local learning and promotion into code. - Incremental sync with a margin for alerts that arrive late. ## Skills - Angular - TypeScript - JavaScript - Java - Spring Boot - Power Apps - Power BI - HTML - CSS - React - Svelte - Kotlin - Cloudflare Workers - Astro - PostgreSQL - MySQL - Supabase - Docker - Git - GitHub ## Machine-readable versions - [CV in JSON Resume](https://imadelmalki.com/en/cv.json) - [CV in Markdown](https://imadelmalki.com/en/cv.md)