I'm Mouhamed Mazraoui, a senior full-stack developer based in Marrakech, Morocco. Over the last 7+ years I've grown from a front-end specialist into an engineer who takes products from a blank repository to something real people use — and I've shipped to more than 230,000 of them.
Most of my work lives in two places: building SaaS products end-to-end, and integrating AI that actually does things. On Scalify I built a Claude-powered agent that creates ad campaigns and reads analytics through plain language for 23,000+ users. On Spacloudy, my own founder project, I built an entire B2B SaaS solo — including a booking assistant that works in Arabic, French and English.
I care about the unglamorous parts: time-to-interactive, Core Web Vitals, test coverage, the contract between frontend and backend. They're what separate a demo from a product. And when I add AI, I treat it like any other production system — scoped tools, validation, logging — not a magic box.
How I work
Own the whole problem
I work best when I own the product end-to-end — frontend, backend, infrastructure. The seams between layers are where most projects fail.
Numbers over adjectives
“Fast” means a measured LCP. “Scalable” means a load test. I'd rather show you a metric than describe a feeling.
Right tool, not trendy tool
Astro for content, Nuxt for apps, NestJS for structure. I pick stacks that fit the problem and will still make sense in two years.
AI with guardrails
Agents that take actions need least-privilege tools, validation and logging. The safety boundary is the tool design — so that's where I spend the effort.
Experience
-
2023 — Present
Senior Full-Stack Developer · Scalify & Easy Ads
Lead front-end and AI work on two ads-automation platforms serving 230,000+ combined users. Built Scalify v3's in-app Claude agent — a tool-based chatbot that creates campaigns, generates creatives and pulls analytics through natural language. Led AI media generation, multilingual i18n, real-time previews and Cypress E2E coverage.
- Vue 3
- Nuxt
- Anthropic Claude
- MCP
- GraphQL
-
2024 — Present
Founder & Solo Engineer · Spacloudy
Designed and built a B2B SaaS for spa, hammam and salon management entirely on my own — frontend, backend, infrastructure, billing and a Claude-powered booking assistant that works in Arabic, French and English. Migrated the marketing site from Next.js to Astro for performance.
- NestJS
- MongoDB
- Stripe
- Astro
- WhatsApp Cloud API
-
2025
Full-Stack Developer · Black Horse Delivery
Built a delivery-management platform covering operations, fleet and customer-facing booking. Vue and NestJS on MongoDB, a Nuxt marketing site on Cloudflare Pages, Brevo email and GitHub Actions CI/CD, with Cypress and Playwright end-to-end tests.
- Vue
- NestJS
- Playwright
- CI/CD
-
2024 — 2025
Full-Stack Developer · Seaside Transportation (US)
Delivered a transportation-management system for a US operator: member management, location scheduling, driver coordination, payments, dashboards and interactive maps. React and Node.js on MongoDB, with a Next.js marketing site on Cloudflare Pages.
- React
- Node.js
- Maps
- Payments
-
2019 — 2023
Frontend & Full-Stack Developer · Freelance & product teams
Built and shipped web and mobile products across events, security and SaaS — including Uvently's event platform on Vue and Firebase, and Logica Security's WordPress site with ongoing performance and SEO work. Grew from frontend specialist into end-to-end product engineer.
- Vue 3
- Firebase
- WordPress
- SEO
Tech I reach for
The tools I use most. I'm comfortable learning whatever a project genuinely needs — these are simply where I'm fastest and most opinionated.
Frontend
- Vue 3
- Nuxt
- React
- Next.js
- Astro
- TypeScript
- Tailwind CSS
Backend & data
- NestJS
- Node.js
- MongoDB
- GraphQL
- REST
- MySQL
AI & automation
- Anthropic Claude
- MCP
- OpenAI
- Gemini
- n8n
Infrastructure
- Cloudflare
- Railway
- GitHub Actions
- Stripe
- Brevo
Testing
- Cypress
- Playwright
- Vitest
Integrations
- Facebook Marketing API
- Google Ads API
- WhatsApp Cloud API
- Google Calendar