All work

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 enrollurm.com homepage on desktop and on a phone

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

  1. React and TypeScript app, prerendered for every route and language
  2. Typed translations: German and Arabic cannot ship with a missing string
  3. Serverless API for enquiries, contact and partner requests
  4. 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.

Ubaida DibFull-Stack Software Engineer

Hiring a full-stack engineer? Let's talk.

If you're hiring a full-stack engineer, I'd like to hear about the product and the team. Email reaches me fastest.

Open to full-stack roles in Germany. No visa sponsorship needed.