~/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.
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