YallaEdara
Fullstack Engineer (Contract) · Jan 2026 - Apr 2026 build, ongoing maintenance
Replaced a manual, human-run enrollment process with an automated payment-to-certificate loop
- $86K
- processed in the first four months, with zero human intervention
- 11K
- users served, at roughly 1.8K peak concurrent
- 495
- models typed end to end by a generated API client, across 36 services
- Student to Checkout
- Checkout to Webhook
- Webhook to Enrollment
- Enrollment to Course + exam
- Course + exam to Auto-grade
- Auto-grade to Certificate
- Certificate to QR validation
- QR validation to Student
- Administrator to Enrollment
situation
YallaEdara sells PMP certification training in Arabic and English. When I took it on, the platform was already partly live and every enrollment was manual: students paid by bank transfer, filled in a Google Form, and an administrator added them to a course by hand. The codebase I inherited had broken payments, an unreliable quiz module, page components running past two thousand lines, a single unclustered PM2 process, and link prefetching on every anchor.
constraint
The old .NET platform had to keep serving students while the new one was built. That ruled out a one-shot cutover: the data migration had to be re-runnable, and it had to preserve every reference, because students' certificates and exam history are the product. The legacy database was also inconsistent — some video lectures had several URLs recorded against them — so parts of the schema's intended meaning had to be recovered by reading the original source code rather than trusting the data.
what i built
A closed enrollment loop that removes the administrator from the path entirely: checkout through Stripe or Paymob, webhook-driven enrollment, automatic grading, and automatic certificate issue with QR validation.
Around it: an incremental, re-runnable migration for users, courses and certification records; a finance review module built to the client's tax workflow, with period-based payment and invoice navigation and mark-as-checked / mark-as-taxed state; and production hardening — PM2 clustered across three instances, a right-sized server, Sentry, and an OpenAPI codegen pipeline covering 36 services and 495 models to stop backend and frontend types drifting apart.
I also chased down a 429 rate-limit failure that appeared only for the platform's most engaged students. It was invisible on a normal account, so I built a high-volume test profile — many courses, certificates and exams — reproduced it, traced the redundant calls across the dashboard, and rebuilt the surface into grouped, tab-loaded queries. That work also removed the empty-dashboard state those users were hitting.
result
$86,000 processed in the first four months under the new system, with no human touchpoints. 11,000 users, peaking around 1,800 concurrent. The finance review module is in daily use by the client's finance team, and they have roadmapped government-API automation on top of it.
- NestJS
- Next.js
- Prisma
- PostgreSQL
- Redis
- Stripe
- Paymob
- Sentry