العودة إلى المشاريع

Wasfa (وصفة)

تطبيق وصفات وتغذية بالعربية والإنجليزية، يعدّل هدف السعرات وفق ما تأكله فعلًا، ويعرض التقويم الهجري ومواقيت الصلاة دون اتصال، مع بحث يراعي خصائص الكتابة العربية.

السنة
2026
النوع
تطبيق ويب
الحالة
متاح

دراسة الحالة الكاملة متوفرة بالإنجليزية.

The problem. Wasfa is built for Arabic and English from the first screen: layouts mirror correctly, search follows how Arabic dishes are written, and calorie targets adjust to the person. It is a recipes and meal-planning app with a catalogue of more than 1,100 recipe entries that guests can browse, open and cook from without an account; the planner and food diary need one.

The hard part. Three problems shaped the design. Calorie targets had to adapt to what a person really eats, so I built an energy-balance model that estimates daily expenditure from logged intake and the smoothed weight trend. Ramadan changes when people eat, which meant an offline Hijri calendar and prayer-time astronomy rather than an API call. And Arabic search needed its own normalisation, alongside an ingredient matcher that checks every recipe against a person's dietary rules.

The approach. A Vue 3.5 PWA talks to a NestJS 11 API on PostgreSQL 16 through Drizzle, and both sides share Zod contracts from one package so the client and server cannot disagree about a payload. The same web app is wrapped with Capacitor for iOS and Tauri for macOS. Accounts use TOTP two-factor sign-in, a refresh token kept in an httpOnly cookie and a strict Content Security Policy.

The outcome. The app is live on Vercel and Neon. One pnpm gate command chains typecheck, lint, RTL, i18n parity, contrast, typography, content validation, a dependency audit and a bundle-size budget; CI adds an end-to-end smoke run and a Lighthouse floor of 90. More than 2,500 web tests and 12 Playwright specs back 264 commits since July 2026.

دوري

Sole Full-Stack Developer — designed and built the Vue PWA, the NestJS API, the shared contracts, the energy-balance and Hijri calendar logic, the Arabic search, and the quality gate that every change has to pass.
  • Vue 3
  • TypeScript
  • NestJS 11
  • PostgreSQL 16
  • Drizzle ORM
  • Zod
  • Pinia
  • Vite PWA
  • Capacitor
  • Tauri
  • Vitest
  • Playwright
  • Lighthouse
  • Vercel
  • Neon
Wasfa (وصفة) — لقطة شاشة 1 من 3Wasfa (وصفة) — لقطة شاشة 2 من 3Wasfa (وصفة) — لقطة شاشة 3 من 3