The platform needed to serve students, teachers, admins, and owners without cluttering anyone with tools they should not see.
Case study
LearnLoop
A custom multi-role learning platform for French- and English-speaking diaspora learners, designed so students, teachers, admins, and owners each get the right dashboard, permissions, and workflow.
I designed the role model, learning spine, dashboards, permission rules, and bilingual product interface.
RLS and a dedicated role table make access control part of the product design, not a layer hidden after the UI.
The product delivers tailored flows for learning, authoring, administration, and ownership from one codebase.

My contribution
- Mapped the four-role architecture and defined how each user should enter, navigate, and act inside the same platform.
- Designed the course, lesson, quiz, progress, and certificate spine so learning stays consistent across roles.
- Built the app in phases with Supabase Row-Level Security, server-side secrets, Stripe integration, and French-default bilingual UI.
Challenge
The client needed a real learning platform, not just a course list. Off-the-shelf LMS tools were expensive to bend toward a bilingual diaspora audience and did not provide the control needed for four distinct role experiences.
The design question became: how can one platform feel purpose-built for student, teacher, admin, and owner while keeping each role's tools and data strictly separated?
Build vs buy
Mainstream LMS plugins treat French as an add-on. This audience needed French as the default product language with English at parity.
Four role experiences with strict boundaries are where generic plugins become awkward, expensive, and harder to reason about.
A custom React and Tailwind build gave me control over dashboards, learning flows, permissions, and visual consistency.
Success signals
The product was evaluated around whether each role could complete its core job without seeing unrelated tools or unsafe data.
- Clarity per role: each user lands on a dashboard built around their job.
- Effortless learning: students can enroll, resume lessons, take quizzes, and track progress without navigation ambiguity.
- Confident authoring: teachers can build courses, lessons, and quizzes without touching platform-wide controls.
- Trust and safety: grades, payments, and personal data are protected at the database level.
Information architecture
Learn and finish through a focused course player, lesson quizzes, visible progress, and verifiable certificates.
Create and teach through a scoped authoring studio for courses, lessons, quizzes, and their own students.
Manage content, users, payments, roles, platform settings, audit logs, backups, and security with tiered privileges.
Learning spine
The top-level unit a student enrolls in, with support for free or paid access.
Lessons contain video, text, or files. Lesson-level quizzes create a clear checkpoint before progress continues.
Students explicitly mark progress, complete required checks, and receive a verifiable certificate at the end.
Engineering decisions
- Stored roles in a dedicated user_roles table instead of profile data to keep permissions auditable and resilient.
- Used a security-definer function to avoid recursive RLS rules and create one source of truth for access control.
- Kept Stripe and integration secrets server-side in Edge Functions, never in the browser.
- Designed 2FA enforcement for admin and super-admin roles where the risk is highest.
Process rigor
A multi-role LMS is too large to build safely in one pass. I sequenced the work so each layer could be tested before adding the next.
- Phase 0: auth, role hierarchy, database schema, RLS, and language switcher.
- Phase 1: shared course data model.
- Phase 2: student experience: enroll, learn, quiz, certificate.
- Phase 3: teacher authoring studio.
- Phase 4-5: admin and super-admin control surfaces, payments, audit logs, and security.
Issues resolved
A missing database privilege created a silent catalog issue. Resolving it reinforced the need to test data visibility by role.
Quiz logic initially allowed course completion without a passing score. I tightened the progression rule around learning integrity.
Videos rendered as bare links before being corrected into embedded lesson content, making the course player feel native.
Selected product direction

Outcome
LearnLoop is feature-complete and pre-launch, with payments and 2FA re-enforcement as final steps before release.
- Designed and built a complete four-role LMS from research through implementation.
- Delivered role-tailored dashboards with strict data separation from one codebase.
- Created a French-default bilingual interface with full English parity and resilient component layouts.