Skip to content

Tách app trong một repo ​

Ba cách cho một nhóm tính năng muốn deploy độc lập. Bảng so sánh lấy từ harness.nemo12.com (Nemo12 chọn Cách 3 ngày 18.10.2026), áp vào Conan.

Cách 1: một appCách 2: subdomain, repo riêngCách 3: app riêng, cùng repo, cùng tên miền
Ví dụtokyo.conan.school/booksbooks.conan.schooltokyo.conan.school/books, Worker riêng
Deploy độc lậpKhôngCóCó
Đăng nhậpMột lầnPhải làm SSO giữa subdomainMột lần, cùng cookie
Database, APIChungCâu hỏi khó: tách dữ liệu hay sửa hai repoChung
Code dùng chungImport trực tiếpPackage có version cho mỗi repoImport trực tiếp
SEOGom về một tên miềnMỗi subdomain xây lại uy tínNhư Cách 1
Phiên AI song songDễ đụng nhauTách hẳnMỗ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, như conan-web và các site video. Cách 3 hợp với phần dùng chung tài khoản, D1 và API, như các khu lớn của tokyo.

Định tuyến của Cách 3 ​

  • Route của Cloudflare thắng custom domain trên cùng hostname; route cụ thể hơn thắng route chung.
  • App vỏ giữ hostname (trang chủ, hồ sơ, redirect); mỗi khu một Worker với route <host>/<khu> và <host>/<khu>/*.
  • Mỗi app build với base: "/<khu>/", asset không đụng nhau.
  • Cookie phiên ở .conan.school: đăng nhập giữ nguyên khi đi giữa các app.
  • 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 cũ ngay.

Bước 0 luôn là gom vỏ dùng chung ​

Trước khi tách khu đầu tiên: gom đăng nhập, HTTP client, NavBar, menu, avatar, Motion, ngôn ngữ vào một package (packages/<app>-shell). Không có bước này thì mỗi app tự chép vỏ, và chúng lệch nhau từ tuần đầu.

Ở Conan hôm nay ​

Tokyo (com.conan.school) vẫn là một SPA, và là làn bận nhất repo. Chưa có quyết định tách khu nào. Ứng viên tự nhiên nếu cần: Books, cộng đồng, khoá học. Xem Audit.