Tách app theo program
Chủ dự án chọn Cách 3 ngày 18.10.2026 (SRC-1432). Thiết kế kỹ thuật một nguồn: docs/ops/learn-split.
Ba phương án
| Cách 1: một app | Cách 2: subdomain, repo riêng | Cách 3: app riêng, cùng repo, cùng tên miền | |
|---|---|---|---|
| Ví dụ | learn.nemo12.com/ielts | ielts.nemo12.com | learn.nemo12.com/ielts, Worker riêng |
| Deploy độc lập | Không | Có | Có |
| Đăng nhập | Một lần | Phải làm SSO giữa subdomain | Một lần, cùng cookie |
| Database, API | Chung | Câu hỏi khó: tách dữ liệu hay sửa hai repo | Chung |
| Code dùng chung | Import trực tiếp | Publish package có version cho mỗi repo | Import trực tiếp |
| SEO | Gom về một tên miền | Mỗi subdomain xây lại uy tín | Như Cách 1 |
| Phiên Claude song song | Dễ đụng nhau | Tách hẳn | Mỗi phiên một thư mục app |
Cách 2 chỉ hợp với phần không chung dữ liệu hay đăng nhập với phần còn lại, như nemo12-www và nemo12-videos đã tách. Ba program học đang chung tài khoản, Learner Model, membership, dashboard phụ huynh, D1 và API.
Định tuyến
Route của Cloudflare thắng custom domain trên cùng hostname, route cụ thể hơn thắng route chung:
nemo12-learngiữlearn.nemo12.com: trang chủ,/programs, hồ sơ, chứng chỉ, lịch, redirect 301.- Mỗi program một Worker với route
learn.nemo12.com/<program>vàlearn.nemo12.com/<program>/*. - Mỗi app build với
base: "/<program>/", asset không đụng nhau. - Cookie
nemo12_sessionở.nemo12.com, đăng nhập Google là nút trong trang: phiên đăng nhập giữ nguyên. - Link sang app khác là tải lại trang, không chuyển trang trong SPA.
- Rollback: gỡ route là quay về app
learncũ ngay.
Tiến độ
| Bước | Việc | Trạng thái |
|---|---|---|
| 0 | Gom shell dùng chung vào packages/learn-shell: đăng nhập, HTTP, NavBar, menu, avatar, Motion, ngôn ngữ | Xong 18.10.2026: 668 unit test, 903 ca E2E xanh |
| 1 | Pilot GRAMMAR: app, Worker, docs và design/ riêng | Xong 18.10.2026: learn.nemo12.com/grammar do Worker nemo12-grammar phục vụ |
| 2 | SAT và ESSAY: xong 18.10.2026 (màn Join, PayCard dời vào shell). STYLE giữ trong learn (bảng mẫu giao diện của learn, không phải chương trình). WALK chờ phiên đang sửa nó xong | Gần xong |
| 3 | IELTS cùng SPEAK (chung router, tách cùng nhau, sau cùng) | Chưa |