Full-stack software engineer in Barcelona. I ship production web systems end to end — REST APIs, relational data models and React front ends — and build LLM-powered features. Freelance sites for real businesses, plus my own products.
I like understanding the problem before writing the solution, and building things people actually use.
🟢 Open to full-stack roles — get in touch through my portfolio or LinkedIn.
- Shift Tech Innovation · Freelance, 2026 — website for an AI-process-driven cloud architecture firm and authorized Google Solutions Reseller. English, Spanish and Portuguese with the language auto-detected from the visitor's time zone, and a two-step consultation form that lands in WhatsApp. React, Vite, Tailwind CSS, Motion.
- Jobby · Solo, 2026 — six remote job boards in one tab: searches RemoteOK, Arbeitnow, Remotive, Jobicy, We Work Remotely and Adzuna at once, tracks your applications, and uses an AI model via OpenRouter to find companies near you. Hand-written SQL, auth built from scratch. PostgreSQL, Cloudflare R2, Docker, Google Cloud, OpenRouter.
- AB Auto Centre · Freelance, 2026 — booking site for a Québec auto repair shop, synced both ways with the garage's GEM-CAR system: live availability in, confirmed bookings written back as work orders. React 19, Express 5, Supabase/Postgres, Vercel, Render.
- PikPilot · Solo, 2026 — AI-powered movie discovery: plain-language requests become film recommendations from an LLM, each one verified against the TMDB API. React 19, Express 5, OpenRouter, TMDB API, GSAP. (code)
- GuessWho · Team of 3, 2026 — full-stack multiplayer social game with an AI question generator, built through a branch-per-feature, peer-reviewed Git flow. React 19, Express 5, PostgreSQL (Supabase), OpenRouter. (code)
const iheb = {
location: "Barcelona, Spain",
role: "Full-Stack Software Engineer",
builds: ["REST APIs", "relational data models", "React front ends", "LLM-powered features"],
stack: ["JavaScript", "TypeScript", "React", "Node.js", "Express", "PostgreSQL", "Supabase"],
speaks: ["Arabic", "English", "French", "Spanish", "Catalan"],
askMeAbout: ["history", "music", "food"],
pronouns: ["he", "him"],
};