Các module npm
Repo khai 70 module bên ngoài (không tính các gói @nemo12/* của chính repo) trong 36 file package.json. Trang này sinh tự động, nên luôn khớp với thứ đang cài. Lượt kiểm hằng tuần nâng minor/patch và gỡ module không ai import (Nâng phiên bản thư viện); module ở mức Nên xem lại là ứng viên gỡ.
Mức ưu tiên
| Mức | Nghĩa | Số module |
|---|---|---|
| Cốt lõi | sản phẩm không chạy nếu thiếu | 18 |
| Công cụ | chỉ dùng lúc viết, build, test; không tới tay người dùng | 21 |
| Theo tính năng | một vài app dùng cho một tính năng riêng | 19 |
| Nên xem lại | trùng việc với module khác, hoặc ít dùng | 12 |
Khung giao diện (UI framework)
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @vitejs/plugin-react | Plugin cho Vite hiểu JSX của React và nạp lại nóng (hot reload) khi sửa code. | vite.config.ts của mọi app React. | Công cụ | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 6.1.1 |
| react | Thư viện dựng giao diện bằng component, của Meta. Mỗi màn hình là một cây component. | Mọi web app (learn, marlins, tutors, grammar, sat…) viết bằng React. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, learn-shell, marlins, mentors, mm, partners, sat, tutors, ui, web | 19.3.0 |
| react-dom | Phần của React vẽ component ra trang web (DOM) trong trình duyệt. | Đi cặp với react ở mọi app. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 19.3.0 |
Hệ thiết kế (design system): Tailwind, shadcn, Radix, Motion
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @radix-ui/react-accordion | Primitive Accordion của Radix, bản tách lẻ. | Trùng với gói gộp radix-ui; component đã chuyển sang gói gộp. Lượt hằng tuần gỡ khi không còn ai import. | Nên xem lại | grammar, learn, web | 1.2.20 |
| @radix-ui/react-dialog | Primitive Dialog của Radix, bản tách lẻ. | Trùng với radix-ui, như trên. | Nên xem lại | essay, grammar, learn, sat, web | 1.1.23 |
| @radix-ui/react-label | Primitive Label của Radix, bản tách lẻ. | Trùng với radix-ui, như trên. | Nên xem lại | learn, web | 2.1.15 |
| @radix-ui/react-progress | Primitive Progress của Radix, bản tách lẻ. | Trùng với radix-ui, như trên. | Nên xem lại | grammar, learn, web | 1.1.16 |
| @radix-ui/react-slot | Primitive Slot (cho asChild) của Radix, bản tách lẻ. | Trùng với radix-ui, như trên. | Nên xem lại | essay, grammar, learn, sat, web | 1.3.3 |
| @radix-ui/react-tabs | Primitive Tabs của Radix, bản tách lẻ. | Trùng với radix-ui, như trên. | Nên xem lại | learn, web | 1.1.21 |
| @tailwindcss/node | Gọi Tailwind từ một script Node, không qua Vite. | Script build trang tĩnh của apps/web. | Theo tính năng | web | 4.3.3 |
| @tailwindcss/vite | Plugin chạy Tailwind v4 bên trong Vite lúc build. | vite.config.ts của các app dùng Tailwind. | Công cụ | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 4.3.3 |
| class-variance-authority | Khai các biến thể của một component (size, variant) thành bảng class Tailwind. | button.tsx, badge.tsx… của shadcn. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, partners, sat, tutors, ui, web | 0.7.1 |
| clsx | Ghép tên class có điều kiện thành một chuỗi. | Hàm cn() trong lib/utils.ts của mọi app. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 2.1.1 |
| lightningcss | Công cụ nén và chuyển đổi CSS rất nhanh, viết bằng Rust. | Script build CSS của apps/web. | Theo tính năng | web | 1.32.0 |
| motion | Thư viện animation cho React (trước tên là framer-motion). | Bộ ba bắt buộc; cấm thư viện animation thứ hai. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, learn-shell, marlins, mentors, mm, partners, sat, tutors, ui, web | 14.0.0, 13.4.0 |
| radix-ui | Gói gộp các primitive không có giao diện sẵn (Dialog, Popover, Tabs…), lo phần bàn phím và trợ năng (accessibility). | Nền của mọi component shadcn; component import từ đây. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, learn-shell, marlins, mentors, partners, sat, tutors, ui, web | 1.6.7 |
| shadcn | CLI chép mã nguồn component (Button, Dialog…) vào app; component là code của mình, không phải thư viện. | Chạy tay khi thêm component; bộ ba bắt buộc của design system. | Công cụ | learn, tutors, web | 4.21.1 |
| tailwind-merge | Gộp class Tailwind xung đột, class sau thắng (p-2 p-4 → p-4). | Hàm cn(), đi cặp với clsx. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 3.7.0 |
| tailwindcss | CSS viết bằng class tiện ích ngay trong HTML (p-4, text-ocean-900). Bản v4. | Một trong bộ ba bắt buộc của design system (SRC-650). | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 4.3.3, 4.3.0 |
| tw-animate-css | Bộ class animation cho Tailwind v4 mà component shadcn dùng (mở, đóng Dialog…). | index.css của các app shadcn. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, partners, sat, tutors, ui, web | 1.4.0 |
Icon và font chữ
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @expo-google-fonts/be-vietnam-pro | Font Be Vietnam Pro, gói của hệ Expo nhưng chứa file font dùng được trên web. | Ảnh chia sẻ (OG image) của apps/web vẽ chữ tiếng Việt. | Theo tính năng | web | 0.4.1 |
| @fontsource-variable/fredoka | Font Fredoka (variable) tự host. | Khai ở learn, sat, essay nhưng không file nào nạp; lượt hằng tuần gỡ. | Nên xem lại | essay, grammar, learn, sat | 5.3.0 |
| @fontsource-variable/inter | Font Inter (variable) tự host, không gọi Google Fonts. | Font chữ chính, nạp từ packages/design-system. | Cốt lõi | design-system | 5.3.0 |
| @fontsource-variable/nunito | Font Nunito (variable) tự host. | Như Fredoka: khai mà không nạp. | Nên xem lại | design-system, essay, grammar, learn, sat | 5.3.0 |
| @heroicons/react | Bộ icon của đội Tailwind. | Chỉ apps/mentors dùng; trùng việc với lucide-react. | Nên xem lại | mentors | 2.2.0 |
| lucide-react | Bộ icon nét mảnh, mỗi icon là một component React. | Bộ icon chuẩn của design system. | Cốt lõi | admin, b21, coral, essay, grammar, gull, learn, learn-shell, marlins, mentors, sat, ui, web | 1.50.0 |
Nội dung đặc biệt: công thức, 3D, sơ đồ, soạn thảo
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @resvg/resvg-wasm | Chuyển SVG thành ảnh PNG, chạy bằng WebAssembly. | Sinh ảnh chia sẻ (OG image) của apps/web. | Theo tính năng | web | 2.6.2 |
| @tiptap/core | Lõi trình soạn thảo văn bản Tiptap (dựng trên ProseMirror). | Trình sửa nội dung trong admin (Dolphin). | Theo tính năng | admin | 3.31.4 |
| @tiptap/extension-highlight | Tô sáng chữ trong Tiptap. | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/extension-image | Chèn ảnh trong Tiptap. | Khai ở admin, Knip báo không dùng. | Nên xem lại | admin | 3.31.4 |
| @tiptap/extension-table | Bảng trong Tiptap. | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/extension-text-align | Căn lề chữ trong Tiptap. | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/extensions | Các extension phụ của Tiptap (placeholder…). | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/pm | ProseMirror đóng gói cho Tiptap. | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/react | Tiptap cho React. | admin. | Theo tính năng | admin | 3.31.4 |
| @tiptap/starter-kit | Bộ tính năng cơ bản: đoạn, tiêu đề, danh sách, đậm nghiêng. | admin. | Theo tính năng | admin | 3.31.4 |
| @types/katex | Kiểu TypeScript cho katex. | katex đã tự kèm kiểu; Knip báo không dùng. | Nên xem lại | coral, learn | 0.16.8 |
| @types/three | Kiểu TypeScript cho three. | Đi cặp với three. | Công cụ | learn | 0.186.0 |
| katex | Vẽ công thức toán (LaTeX) thành HTML, rất nhanh. | Công thức trong SAT, IB của learn và coral. | Theo tính năng | coral, learn | 0.19.0 |
| markdown-it | Chuyển Markdown thành HTML. | Script dựng bài viết SEO của apps/web. | Theo tính năng | web | 14.3.2 |
| markmap-lib | Biến Markdown thành dữ liệu sơ đồ tư duy (mind map). | apps/mm (mm.nemo12.com). | Theo tính năng | mm | 0.18.12 |
| markmap-view | Vẽ sơ đồ tư duy markmap bằng SVG. | apps/mm, đi cặp với markmap-lib. | Theo tính năng | mm | 0.18.12 |
| three | Thư viện đồ hoạ 3D trên trình duyệt (WebGL). | Cảnh 3D trong learn. | Theo tính năng | learn | 0.186.1 |
| uqr | Sinh mã QR, không phụ thuộc gì. | Khai ở learn nhưng không file nào import; lượt hằng tuần gỡ. | Nên xem lại | learn | 0.1.3 |
| yaml | Đọc và ghi file YAML. | Frontmatter bài viết của apps/web. | Theo tính năng | web | 2.9.0 |
Server và API trên Cloudflare
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @cloudflare/realtimekit | SDK gọi video thời gian thực của Cloudflare. | Buổi học trực tuyến trong learn. | Theo tính năng | learn | 2.0.2 |
| @cloudflare/workers-types | Kiểu TypeScript cho môi trường Cloudflare Workers (D1, R2, KV…). | Mọi worker. | Công cụ | api, foundry, ielts, tool-plane | 5.20261002.1 |
| @hono/zod-openapi | Hono kèm Zod: kiểm dữ liệu vào và sinh mô tả OpenAPI của API. | Route của workers/api; ghim ở 1.5.2 (scripts/deps-hold.json). | Cốt lõi | api | 1.6.3 |
| hono | Web framework nhỏ và nhanh cho Cloudflare Workers. | Toàn bộ API (workers/api) và các worker khác. | Cốt lõi | api | 4.13.12 |
| jose | Ký và kiểm token JWT, JWS theo chuẩn web, chạy được trên Workers. | Phiên đăng nhập và Google sign-in ở workers/api. | Cốt lõi | api | 6.2.12 |
| wrangler | CLI của Cloudflare: chạy worker ở máy, deploy, quản D1 và R2. | Deploy từng app trong CI (cấm deploy từ máy). | Công cụ | admin, api, b21, compass, coral, docs, essay, foundry, grammar, gull, harness, ielts, learn, marlins, mentors, mm, partners, pearl, playbooks, reef, sat, tool-plane, tutors, ui, web | 4.147.0, 4.135.0 |
| zod | Khai dạng dữ liệu một lần, vừa kiểm lúc chạy vừa ra kiểu TypeScript. | Kiểm dữ liệu từ ngoài vào ở workers/api, foundry, tool-plane (Tiêu chuẩn code §3). | Cốt lõi | api, foundry, tool-plane | 4.6.5 |
Theo dõi lỗi và tốc độ (observability)
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @sentry/cloudflare | Báo lỗi của Cloudflare Workers về Sentry. | workers/api. | Cốt lõi | sentry | 11.7.0 |
| @sentry/react | Báo lỗi JavaScript của trình duyệt về Sentry. | packages/sentry, dùng ở các web app. | Cốt lõi | sentry | 11.7.0 |
| web-vitals | Đo LCP, CLS, INP (tốc độ người dùng cảm nhận), của Google. | packages/rum gửi số đo về API. | Cốt lõi | rum | 6.2.3 |
Build, TypeScript và trang tài liệu
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @types/react | Kiểu TypeScript cho React. | Khai ở gốc để cả monorepo chỉ có một bản. | Công cụ | admin, b21, coral, essay, grammar, gull, gốc, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 19.3.0 |
| @types/react-dom | Kiểu TypeScript cho react-dom. | Như @types/react. | Công cụ | admin, b21, coral, essay, grammar, gull, gốc, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 19.3.0 |
| esbuild | Bộ đóng gói JavaScript và TypeScript rất nhanh, viết bằng Go. | Script sinh dữ liệu, contract-diff, build seed. | Công cụ | learn, marlins, web | 0.28.1 |
| typescript | JavaScript có kiểu; bắt lỗi trước khi chạy. | Mọi app, chạy bằng npm run typecheck. | Công cụ | admin, api, b21, coral, essay, foundry, grammar, gull, ielts, learn, marlins, mentors, mm, partners, sat, tool-plane, tutors, ui, web | 7.0.2 |
| vite | Công cụ chạy dev server và build web app. | Build mọi web app. | Công cụ | admin, b21, coral, essay, grammar, gull, learn, marlins, mentors, mm, partners, sat, tutors, ui, web | 8.3.2, 8.3.0 |
| vitepress | Dựng trang tài liệu tĩnh từ Markdown, trên Vite. | docs.nemo12.com, harness.nemo12.com, pearl, compass, playbooks. | Công cụ | compass, docs, harness, pearl, playbooks, reef | 1.6.4 |
| vitepress-plugin-llms | Sinh llms.txt để AI đọc trang tài liệu dễ hơn. | Các site VitePress. | Công cụ | compass, docs, pearl, playbooks | 1.14.0 |
Kiểm chất lượng: test và lint
| Module | Là gì | Ở Nemo12 dùng để | Ưu tiên | Khai ở | Phiên bản |
|---|---|---|---|---|---|
| @eslint/js | Bộ luật JavaScript chuẩn của ESLint. | eslint.config.js. | Công cụ | gốc | 10.0.1 |
| @playwright/test | Bộ chạy test E2E: mở trình duyệt thật và đóng vai người dùng. | E2E của learn, tutors, marlins, grammar, sat, essay. | Công cụ | essay, grammar, learn, marlins, sat, tutors | 1.63.0 |
| eslint | Quét code tìm lỗi và mẫu nguy hiểm (lint). | npm run lint, pre-commit, CI. | Công cụ | gốc | 10.12.0 |
| eslint-plugin-react-hooks | Luật đúng cách dùng React hooks (deps của useEffect…). | eslint.config.js. | Công cụ | gốc | 7.1.1 |
| globals | Danh sách biến toàn cục của từng môi trường (browser, node). | eslint.config.js. | Công cụ | gốc | 17.13.0 |
| playwright | Điều khiển trình duyệt từ script. | Kiểm màn hình 375px của apps/web, chụp ảnh. | Công cụ | web | 1.63.0 |
| typescript-eslint | Cho ESLint hiểu TypeScript, kèm luật riêng. | eslint.config.js. | Công cụ | gốc | 8.71.0 |
| vitest | Chạy unit test, cùng cấu hình với Vite. | Unit test và API test của mọi workspace. | Công cụ | api, essay, foundry, grammar, gull, learn, marlins, mentors, sat, sentry, tool-plane, web | 5.0.3 |