Abdullah MohamedSenior Software Engineer
All work

National LMS + SIS platform

Talia

Appenza Studio · frontend & integration

An Arabic-first, multi-tenant education platform (LMS + SIS) for Egyptian schools, built to run a full authority → school hierarchy. Live at its first school, Parkway, and in active development as the platform grows.

25functional modules
534requirements in scope
Multi-tenantMinistry → School

The challenge

A school network needed one system for student records, learning, and operations — Arabic-first, RTL, and Hijri-aware — with confidential health, counseling, and special-needs data that not even school admins can override, and a data model that scales from one school to an authority running many.

What it had to do

  • One system for student records, learning, and school operations
  • Arabic-first, right-to-left, and Hijri-aware
  • Confidential health, counselling and special-needs records that not even school admins can override
  • A data model that scales from one school to an authority running many
  • 25 functional modules and 534 requirements, built against a backend that was still moving

My role

Frontend & integration engineer across the Talia 360 admin/ministry console and the Talia Learn app — wiring screens from mock data to a live Go/REST backend and verifying every one against the deployed environment.

How I built it

  • Built and integrated screens for Talia 360 (ministry/admin console) and Talia Learn (learning app) as SvelteKit 5 + Tailwind CSS 4 SPAs over a typed Go/REST backend.
  • Wired product screens from mock/seed data to live API reads and writes with a layered datasource → repository → query architecture using TanStack Query.
  • Implemented RBAC-aware, role-based views (teacher / student / principal / admin) over a deny-by-default authorization model across a Ministry→School entity tree.
  • Ran live in-browser QA to confirm real-data rendering, close mock-vs-live gaps, and file backend contract issues — holding a no-dummy-data standard.

Decisions, and why

Deny by default, across a Ministry → School tree

The records in this system include health, counselling and special-needs notes, and the people most likely to be asked to “just check something” are school admins. So permission is not granted by role and then restricted — nothing is visible until a rule says it is, and a school administrator has no override for confidential records. The failure mode of an allow-by-default model is a quiet leak; the failure mode of this one is someone filing a ticket.

A datasource → repository → query layer, not fetch calls in components

Twenty-five modules were being built against a backend that was still moving. Putting every read and write behind a typed layer with TanStack Query on top meant a changed endpoint was a one-file fix rather than a search across screens, and caching and refetch behaviour were decided once instead of per component.

No dummy data, ever, past the first integration

Screens built against mock fixtures pass review and fail in production, because the mock is always tidier than the API. Every screen was re-verified in-browser against the deployed environment, and the gaps that surfaced were filed as backend contract issues rather than patched in the client.

Stack

  • SvelteKit 5
  • TypeScript
  • Tailwind CSS 4
  • TanStack Query
  • REST / JWT
  • RBAC

Building something like this?

Tell me what you are trying to ship and I will tell you, honestly, whether I am the right person to build it.