~/mikita/projects/wing-chun-way/README.md

side project

Wing Chun Way

Learning management system for Wing Chun martial arts — 12 skill grades, video lessons with auto-captions, semantic search across teaching materials, personal notes, and progress tracking.

Visit ↗

Year

2025 — Now

Role

Sole author

Team

Solo

Status

● Live in production

100+

active users

12

skill grades modeled

3

roles (Admin · Student · Junior soon)

PWA

installable, offline-aware

01. The problem

A traditional martial-arts curriculum is structured but distributed: knowledge lives in instructor’s heads, paper handouts, scattered videos, and the student’s own notes. Wing Chun’s 12 grades each cover dozens of skills with subtle variations — there was no single place for a student to see “where am I, what comes next, and what does the technique actually look like?“

02. Approach

  • Grade × Card × Material, modeled cleanly. Each grade owns a curated set of cards (skills/lessons). Each card maps to teaching materials (text, image, video). Per-grade overrides let the same card be customised for a specific level without forking the source.
  • Video as a first-class primitive. Mux for streaming, automatic captions, signed playback. Direct upload from the admin UI, no media pipeline to babysit.
  • Semantic search across the whole library. PostgreSQL full-text search fused with embedding similarity (Transformers.js, in-process — no third-party AI service, no per-query cost). Find a technique by what it does, not just by its name.
  • Per-student state. Progress (0% / 50% / 100%) per card, free-form notes that auto-save, bookmarks for fast access. Clerk handles auth and metadata sync; role gates Admin vs Student.
  • Edge-deployed, dual-target. Cloudflare Workers as primary (Hyperdrive in front of pooled Postgres so per-request Prisma clients stay cheap), Netlify as a warm standby. PR previews on both targets.

The product is the curriculum. The codebase is the boring part that makes the curriculum easy to teach.

03. Outcome

Live at martial-mind.mzyx.dev with 100+ active users across the school’s student base. The instructor-facing admin shipped with full CRUD on materials, grades, and per-grade card selection — no engineering involvement required to add a new lesson.

Open work: a third “Junior” role for younger students with a pared-back UI, deeper analytics on completion patterns to flag where students plateau, and an offline-first mode for use during in-person classes without wifi.

Stack

TanStack React StartReact 19TypeScriptPrisma ORMPostgreSQLClerkMuxCloudflare WorkersTailwind CSS v4shadcn/ui