Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Web học từ vựng TOEIC (600 Essential Words) cho người Việt: học theo bài, ôn lặp lại ngắt quãng, 8 dạng bài tập, đồng bộ tiến độ qua tài khoản Google.
Bản chạy: https://vocab-web-beta.vercel.app/ · Next.js 16 · React 19 · Firebase Auth + Firestore.
Học và ôn
8 dạng bài tập
| Dạng | Kiểu trả lời |
|---|---|
| Gõ từ theo ô chữ | gõ, có gợi ý chữ |
| Điền chỗ trống | chọn 1/4 |
| Chọn nghĩa / chọn từ | chọn 1/4 |
| Dạng từ (Part 5) | chọn 1/4 hoặc gõ |
| Ghép từ (gốc + phụ tố) | bấm mảnh ghép |
| Đồng nghĩa / gần nghĩa trong câu | chọn 1/4 |
| Nối từ theo chủ đề | nối 6 cặp |
| Nghe | chọn 1/4 hoặc gõ |
floor(số chữ cái × 0.3) chữ mà vẫn tính đúng; vượt mức thì tính là có hỗ trợ.Phân tích từ
agree · -ment.inter- + rupt → "phá vỡ ngay giữa chừng". Có trang /roots cho từng gốc, gồm cả từ mở rộng ngoài sách.Tài khoản
a-z 0-9 _, 3–20 ký tự).Cần Node.js 24 (tối thiểu 20.9).
npm ci
npm run dev # http://127.0.0.1:5174
Giữ nguyên host/port 127.0.0.1:5174: dữ liệu trình duyệt gắn với địa chỉ này.
| Lệnh | Việc |
|---|---|
npm run build | sinh catalog + kiểm tra nội dung + build |
npm run start | chạy bản build (cùng port 5174) |
npm test | unit test |
npm run typecheck · lint · format:check | kiểm tra code |
npm run e2e | test trình duyệt (Playwright) |
E2E bằng Edge có sẵn trên máy: đặt PW_CHANNEL=msedge. Đặt E2E_PRODUCTION=1 để test trên bản build.
Test rules Firestore cần Java 21:
FIREBASE_SYNC_EMULATOR_TEST=1 npx firebase-tools emulators:exec --only auth,firestore --project demo-vocab-sync \
"npx vitest run src/data/sync-emulator.test.ts src/data/usernames-emulator.test.ts"
| Thư mục | Nội dung |
|---|---|
src/app/ | route Next.js |
src/features/ | màn hình (Hôm nay, Bài học, Học, Tiến độ, Cài đặt, BXH…) |
src/domain/ | logic học, chấm điểm, sinh câu hỏi, đáp án nhiễu |
src/data/ | lưu trữ IndexedDB, validator, đồng bộ Firestore |
content/books/<bookId>/ | khai báo từng quyển sách |
content/roots/roots.json | dữ liệu gốc từ (mức 2) |
content/knowledge/ | bài đọc MDX |
data/ | dữ liệu nguồn và bản sinh từ pipeline Python |
scripts/ | builder catalog, gói bài tập, validator |
e2e/ | test Playwright |
Không sửa tay file sinh ra trong src/content/ và public/exercises/.
data/source, data/enrich, data/translations.npm run data — Python sinh data/generated/, builder sinh src/content/books/<bookId>/ và public/exercises/<bookId>/.Thêm một quyển sách
content/books/<bookId>/book.json (id trùng tên thư mục, title, shortTitle, builder, expectedEntries, expectedLessons).scripts/books/<bookId>.mjs trả về { payload: { lessons, topics, words }, warnings, part5 }, đăng ký trong scripts/build-content.mjs.<bookId>: (riêng toeic-600 giữ ID cũ). URL bài: /books/<bookId>/lessons/<n>.npm run data:catalog.Gốc từ: sửa content/roots/roots.json. Batch mới (file delta có newRoots, addedWords, newParticles…): npm run roots:merge -- <batch.json> để xem trước, thêm --write để ghi; mục đã có trong repo không bị ghi đè. Mọi phụ tố trong parts phải có trong bảng affixes; book.wordId phải tồn tại trong catalog — build sẽ báo lỗi nếu sai.
vocab-learn-v2, store snapshots, schemaVersion: 2. Không đổi tên/ID để giữ tiến độ cũ.vocab-web-next): users/{uid}/… (nhật ký đồng bộ, chỉ chủ tài khoản), profiles/{uid}, usernames/{name}, leaderboard/{uid}. Quy tắc ở firestore.rules.Web: Vercel, nhánh main, cấu hình sẵn trong vercel.json. Biến môi trường SITE_URL tuỳ chọn (domain thật cho sitemap).
Firebase: thêm domain Vercel vào Authentication → Authorized domains. Đổi firestore.rules thì đợi CI (job firebase-emulator) xanh rồi mới deploy:
npx firebase-tools deploy --only firestore:rules --project vocab-web-next
Nội dung 600 Essential Words có bản quyền; app dùng cho mục đích cá nhân. Cần xem lại quyền sử dụng trước khi phát hành công khai.