Back to projects

Qahwa Lab (قهوة لاب)
Qahwa Lab is an Arabic-first learning platform that takes beginners from a first espresso machine to confident home barista through a six-stage journey.
- Year
- 2026
- Type
- Web app
- Status
- Private
Private build — shown as a case study, not a public product.
The problem. Someone in Jordan buys their first espresso machine and immediately hits a wall: every guide is in English, assumes gear they don't have, and hands them recipes without ever explaining why. Qahwa Lab takes an absolute beginner from "I just bought a machine" to a confident home barista — Arabic-first, and priced for the local market.
The hard part. The easy product is a recipe list. The valuable product teaches judgment — so a learner can adapt when the recipe doesn't work on their beans. That meant designing a real pedagogy, not content: a six-stage journey where each stage builds on the last, a gear encyclopedia organized by the purpose of each tool rather than by product, and interactive dial-in tools where changing dose or yield moves a live brew-ratio dial so cause and effect are visible. Getting the sequencing right — never referencing a concept before it's taught — was the core of the work.
The approach. A Turborepo monorepo with a Nuxt web app and a NestJS API sharing typed
The outcome. A structured learning platform that treats a beginner's confusion as the actual problem to solve — with the engineering rigor (typed monorepo, enforced i18n, real E2E) usually reserved for products far less playful.
The hard part. The easy product is a recipe list. The valuable product teaches judgment — so a learner can adapt when the recipe doesn't work on their beans. That meant designing a real pedagogy, not content: a six-stage journey where each stage builds on the last, a gear encyclopedia organized by the purpose of each tool rather than by product, and interactive dial-in tools where changing dose or yield moves a live brew-ratio dial so cause and effect are visible. Getting the sequencing right — never referencing a concept before it's taught — was the core of the work.
The approach. A Turborepo monorepo with a Nuxt web app and a NestJS API sharing typed
types and ui packages, backed by PostgreSQL/Prisma, Redis, and MinIO, and a Docker Compose stack that stands the whole thing up with one command. Arabic/English parity isn't left to discipline — an automated i18n checker fails on missing keys or hardcoded strings, and Playwright drives E2E across three breakpoints in both locales. Strict TypeScript throughout: no any, no @ts-ignore. The outcome. A structured learning platform that treats a beginner's confusion as the actual problem to solve — with the engineering rigor (typed monorepo, enforced i18n, real E2E) usually reserved for products far less playful.
My Role
Founder & Full-Stack Developer — designed and built the full monorepo end-to-end: the learning pedagogy and content model, the Nuxt web app (journey, dial-in tools, gear encyclopedia, infographic studio), the NestJS + Prisma + Redis + MinIO API, and the Dockerized stack, all gated by strict typing, enforced i18n parity, and dual-locale Playwright E2E.
- Nuxt
- Vue 3
- TypeScript
- NestJS
- Prisma
- PostgreSQL
- Redis
- MinIO
- Turborepo
- pnpm
- Playwright
- Docker

