Svaeng Yul

Khmer-narrated tech learning for Cambodian students

2026Product builder and full-stack engineerIn Progress

What this proves

I can design a product that is easy to demonstrate without credentials but still has a credible path to real identity, durable progress, protected video, content publishing, and bounded AI assistance.

Problem

Cambodian students entering AI, data, cybersecurity, and software engineering need more structured technical learning that explains difficult concepts in Khmer without lowering the technical standard.

My role

I shaped the current product direction and built the learning model, learner experience, demo/live data boundary, admin publishing tools, video integration, AI assistant boundary, tests, and launch checklist.

What I built

  • A public track and course catalog for four technology disciplines.
  • A lesson player with curriculum navigation, progress tracking, and an optional transcript-grounded Q&A panel.
  • Student authentication, profiles, and persistent progress for live mode.
  • Admin tools for tracks, courses, lessons, publishing state, users, and video uploads.
  • A controlled launch plan covering database migrations, video delivery, abuse controls, analytics, policies, and production evidence.

Architecture

Svaeng Yul is organized around one repository interface with two implementations: an in-memory store for a zero-setup demo and Supabase for live Auth and Postgres. Public learning pages enforce published ancestry before rendering content, while admin actions require an admin session. Video delivery is abstracted behind Bunny Stream helpers, and the AI assistant receives only the current lesson context with a per-user usage limit. This keeps optional services from blocking the core learning experience.

Use a Tracks to Courses to Lessons structure with progress tracking, a focused lesson player, and an optional transcript-grounded assistant. Keep the demo deterministic and credential-free, while treating Supabase, video delivery, policies, and real Khmer curriculum as explicit launch gates rather than hidden assumptions.

Backend / deployment

Status
Planned
Frontend
Next.js 16 App Router + React 19, designed mobile-first
Backend
Next.js server actions and API routes with optional Supabase and Anthropic integrations
Database
Seeded in-memory demo or Supabase Postgres with row-level security
Hosting
Planned Vercel + Supabase + Bunny Stream production stack

Private launch candidate. The credential-free demo is verified locally; Supabase, Bunny Stream, Khmer production content, legal review, and staging evidence are still required before a public launch.

Backend-adjacent proof

  • A shared repository contract switches between deterministic demo data and Supabase without changing page components.
  • Server-side auth guards protect admin routes and role-specific actions.
  • Published-state checks cover tracks, courses, and lessons so draft content cannot be exposed through a direct public URL.
  • Row-level security limits student progress access and reserves content writes for admins.
  • Bunny Stream integration keeps upload credentials server-side and prepares signed lesson embeds instead of public hotlinks.
  • The launch branch passes repository checks, dependency audit, lint, strict type checking, 20 unit tests, and a production build.

Stack

Next.js 16React 19TypeScriptTailwind CSS 4Supabase AuthPostgreSQLBunny StreamAnthropic API

Constraints

  • Lesson narration must be Khmer-first while the interface remains clear for technical study.
  • The product must remain useful when Supabase, Bunny Stream, or the AI provider is not configured.
  • Draft lessons and unpublished parent records must not be reachable from public routes.
  • A production launch requires real Khmer content, native-speaker review, approved policies, and evidence from live services.

Tradeoffs

  • Maintained one data contract for demo and live modes instead of separate demo-only page logic.
  • Kept AI optional and lesson-scoped instead of making the learning flow dependent on generated answers.
  • Used a private launch candidate rather than presenting placeholder videos or untranslated content as production-ready.
  • Required human review for Khmer content, legal pages, migrations, and real-service behavior.

What It Demonstrates

  • The current launch candidate passes repository validation, a zero-vulnerability dependency audit, lint, strict type checking, 20 unit tests, and a 20-route production build.
  • Desktop and mobile evidence now shows the actual technology-learning product rather than the retired medical prototype.
  • The pull request remains a deliberate draft until the staging and human launch gates are complete.

What I learned

  • A demo/live architecture is strongest when both implementations share the same typed product contract.
  • Content visibility must be checked across the whole parent chain, not only on the lesson being requested.
  • An AI tutor needs grounding, cost limits, failure behavior, and a clear boundary around what it can claim.
  • A technically green build is not a launch until real services, real content, policy review, and human workflows are verified.

Next backend step

Apply the reviewed Supabase migrations to an approved staging project, connect Bunny Stream, and verify auth, progress, publishing, video, and AI limits end to end.

Next steps

  • Publish one complete Khmer-narrated learning track with native-speaker review.
  • Run the full learner and admin workflow against real staging services.
  • Complete policy review, analytics and error-reporting checks, and production evidence before launch.
Verified locally on the current launch-candidate branch with synthetic data only; no production credentials or student data were used.

Visual archive

Svaeng Yul desktop home page

Current product direction: four focused technology tracks with Khmer-narrated lessons

Svaeng Yul mobile home page

The same learning entry point at a phone-sized viewport

Svaeng Yul technology track catalog

The published catalog for AI engineering, data science, cybersecurity, and software engineering

Working on something similar?

Let's talk →