Skip to content
All work

Online learning for secondary students

Tadris Syria

Tadris Syria is a learning platform for Syrian secondary students in grades 9 to 12. I led the build of one monorepo holding six web apps (a marketing site and portals for students, teachers, parents, staff and admins), a REST API and an Expo app. Every screen is Arabic-only and right to left. It is in beta on 3lmna.com subdomains, running on seeded demo content.

Client
Tadris Syria
Year
2026
Role
Product and engineering lead, Admix Lab
Status
Beta
Platforms
Marketing site, Student portal, Teacher portal, Admin and staff, Parent portal
Tadris Syria landing page in Arabic: a navy hero with the two-line headline “Learn, excel and succeed in the baccalaureate”, the second line in gold, a subtitle describing a learning platform built for Syrian secondary students, and Start free and Watch the intro video buttons, under a top bar with Features, Subjects, Pricing and Contact us links and a Sign in link
The same landing hero on a phone: the Tadris Syria logo and a Start free button in the top bar, the two-line headline, the subtitle for Syrian secondary students, and full-width Start free and Watch the intro video buttons

Students and parents. The public front door: an Arabic landing page aimed at the baccalaureate, with features, subjects, plans and a free sign-up.

  • Six web apps, a REST API and an Expo app (built, not yet released) in one monorepo
  • 50 data models; 79 API route files with 96 handlers
  • Arabic-first: every portal is Arabic and right to left
  • Device limits per plan to stop account sharing, plus streaks, XP and levels

Challenge

Syrian secondary students preparing for the baccalaureate needed a learning platform built in Arabic from the first screen and around local conditions: card payments are limited, shared accounts are common, and parents, teachers and operations staff each need their own tools.

The scope covered six user roles (student, parent, teacher, staff, admin and super admin) and the whole loop: lessons, quizzes and exams, motivation, payments and oversight.

Approach

The Admix Lab team first explored the product in four Lovable design prototypes between February and March 2026. I then led the build of one Turborepo monorepo: six Next.js 16 web apps, a REST API and an Expo app for students and parents, sharing packages for the database, auth, a typed API client, UI components and types. The schema has 50 Prisma models on Supabase Postgres, and the API has 79 route files with 96 handlers. The repo went from its first database migration on 16 March 2026 to a production deployment on 20 March.

Security sits in the API, not the screens: 15-minute access tokens with 30-day refresh sessions in Upstash Redis, an emailed one-time code before sign-up, a sliding-window limit of 60 requests per minute per IP, device limits per plan, a staff-tier check in middleware that keeps refunds to Supervisors, and signed URLs for videos and private files. Parents see a child's data only after linking with an expiring code.

Payments fit the market: Stripe Checkout with a signature-verified webhook for cards, and manual, Syriatel Cash and MTN Cash transfers where the student submits the sender name, transfer reference and receipt for an admin to verify or reject. Lesson videos upload directly to Cloudflare Stream, and PDFs, slides and other resources sit in Supabase Storage behind 24-hour signed links.

Impact

The six web apps and the API are deployed as seven Vercel projects on 3lmna.com subdomains, with an Arabic-only interface. The platform is in beta: production runs on seeded demo content for grades 9 to 12, and some student pages still need fixes before launch.

The API implements email-code sign-up with grade and track, lesson watch progress, quiz and exam attempts, XP, levels and streaks, parent linking, payment verification, and refunds limited to the Supervisor tier among staff.

The Expo app for students and parents (25 screens on Expo SDK 54) sits in the same monorepo with EAS build profiles set up. It has not been released on the App Store or Google Play.

Students and parents

Marketing site

The public front door: an Arabic landing page aimed at the baccalaureate, with features, subjects, plans and a free sign-up.

  • Arabic, right-to-left hero for students heading into the baccalaureate
  • Twelve subjects, from mathematics, physics and chemistry to philosophy and informatics
  • Plans and their device limits load live from the API

Students in grades 9 to 12

Student portal

The student's daily workspace: streak, XP and level up front, lessons to pick up, and progress by subject. On phones the same web portal switches to a bottom tab bar.

  • Video lessons save watch progress and count as complete at 80% watched
  • Quizzes and exams with six question types; correct answers stay on the server during an attempt
  • XP, levels and daily-streak bonuses at 3, 7, 14, 30 and 100 days
  • Each plan allows 1, 2 or 3 devices, and students remove old ones from a devices page
Connected devices page in the student portal: a bar showing 1 of 3 devices in use, one registered Mac browser with its date and a red remove button, and the device policy: up to 3 devices on the student's plan, and removing a device ends its sessions
Devices: each plan caps how many devices can sign in, to stop account sharing (demo data)Demo data

Teachers

Teacher portal

Teachers build and maintain their lessons by subject and chapter. The dashboard's four figures (students, lessons, exam average, watch time) come from the API; its other panels are sample UI in this build.

  • Lesson library with search, a subject filter, and each lesson's duration and publish status
  • Each teacher can see, edit and delete only their own lessons, checked in the API
  • New lessons start as drafts, only an admin can publish one, and teachers cannot delete a published lesson
Teacher lesson library in Arabic: a search box, All and Mathematics filters, a New lesson button, and a table of mathematics lessons showing chapter, duration in minutes, a Published badge and an Edit button on each row
Lesson library by chapter, with duration and publish status (demo data)Demo data

Admins and operations staff

Admin and staff

Admins run the content, users and payments, from a lesson CMS to a queue for verifying transfers. A separate staff portal gives the operations team tiered access.

  • Lesson CMS with draft, review, published and archived states, searchable by title or teacher
  • Stripe Checkout for cards, plus manual, Syriatel Cash and MTN Cash transfers that admins verify or reject
  • Staff portal for students, subscriptions and the payments ledger, with five staff tiers and a menu that shows only what each tier can use
  • Among staff, the API lets only the Supervisor tier refund; a refund needs a reason, cancels the linked subscription or course access, and is written to the staff activity log
Admin user management in Arabic: counters for total, active and inactive users, a search by name or email, filters set to Students and All statuses, and a table of students with email, role, grade, an Active badge and View and Disable buttons
Users: role and status filters, each student's grade, view and disable actions (demo data)Demo data
Admin payment review in Arabic: counters for total, pending and verified payments and the verified total, tabs for All, Pending, Verified and Rejected, and a table of payments with user, plan, amount, method, date and a Verified or Rejected status
Payment review: pending, verified and rejected (demo data, amounts replaced)Demo data
Staff portal payments ledger in Arabic: filters for All, Confirmed, Pending, Failed and Refunded, and a table of payments by user email with amount, method, status and date, one of them refunded, signed in at the Supervisor tier
Staff payments ledger with refunds, Supervisor tier (demo data, amounts replaced)Demo data
Staff portal home in Arabic: a platform overview with cards for total students, active subscriptions, pending payments and total payments, and a list of the latest registered students with grade and date, signed in at the Supervisor tier
Staff home: platform overview and latest registrations, Supervisor tier (demo data)Demo data
Admin dashboard in Arabic: nine figure cards for total students, active subscriptions, new registrations, total revenue, this month's revenue, pending payments, teachers, published lessons and subjects
Admin overview figures (demo data, amounts replaced)Demo data

Parents

Parent portal

Parents link to a child's account with a code the student generates, then follow each child's XP, streak and completion.

  • Link codes are 8 characters (XXXX-XXXX), skip look-alike characters and expire after 48 hours
  • The API returns a child's data only to the parent linked to that child
  • Per-child pages for progress, subjects and exams

Stack

  • Next.js 16
  • React 19
  • TypeScript
  • Turborepo
  • Tailwind CSS v4
  • TanStack Query
  • Prisma
  • PostgreSQL (Supabase)
  • Upstash Redis
  • Expo SDK 54
  • React Native 0.81
  • Vercel

Integrations

  • Stripe Checkout and webhooks
  • Cloudflare Stream
  • Supabase Storage
  • Upstash Ratelimit
  • Resend