URM ENROLL
Helping students and skilled workers from the MENA region find their way to Europe.
- Role
- Technical co-founder: architecture and full-stack development
- Timeline
- 2024 to now
- Type
- Study and skilled-migration platform
- Stack
- React, TypeScript, Vite, Serverless Node.js, Zod


The problem
Students and skilled workers in Lebanon and the wider MENA region who want to study or work in Germany face a lot of open questions. Which programmes can they get into? Is their degree recognised? Do they qualify for Germany's Opportunity Card, the Chancenkarte? And who can they trust with their documents? Most of the answers are in German and spread across many official sites.
What we built
A platform in English, German and Arabic. Students explore programmes and destinations. Skilled workers answer 18 questions modelled on the official Chancenkarte points system and get an estimate of where they stand before they talk to anyone. Every enquiry lands in one pipeline the team works from.
My role
I'm technical co-founder of URM ENROLL. I designed the architecture and wrote most of the code: the React front end, the serverless API, the translation system and the security layer. I also lead a small development team through code review and sprint planning.
How it fits together
- React and TypeScript app, prerendered for every route and language
- Typed translations: German and Arabic cannot ship with a missing string
- Serverless API for enquiries, contact and partner requests
- Five security layers on every form: Turnstile, CSRF, origin checks, rate limits and size caps
The hard part
Three languages, one of them right to left, and only one codebase. English is the typed source of truth, so no German or Arabic page can go live with a missing string, and the layout is built from logical CSS properties so Arabic mirrors properly instead of being patched afterwards. The second hard part was trust. People send personal data through these forms, so every request has to pass bot, CSRF, origin and rate checks before anyone sees it.
Where it stands
Live at enrollurm.com in English, German and Arabic. It is the front door to the other URM products: the agent portal, Nexus and the operations dashboard.
What I took from it
Translation is architecture, not the last step. When the types enforce it, German and Arabic speakers get the same product as English speakers, not a reduced copy.
Sources and scope
Sources: the private repository's README and source tree, inspected September 2026, and the live site. The repository stays private.
Screens




