ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
오프라인 전문 화학 도구: 118원소 순환표·반응·pH 계산기·IUPAC 274분자 구조·객관식 문제 은행
Bộ công cụ Hóa học chuyên nghiệp chạy offline: Bảng tuần hoàn 118 nguyên tố, Máy tính phản ứng & pH, 274 cấu trúc phân tử IUPAC, Ngân hàng đề trắc nghiệm.
교육JavaScript · TypeScriptGitHub @tuongotpho온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기App công thức hóa học
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
pH-Chem — Hóa học chuyên nghiệp (PWA) Bộ công cụ hóa học chạy trên trình duyệt, cài được như app và chạy offline. Không theo dõi định danh. Giao diện tối, song ngữ Việt / Anh. Tổng: 536 test tự động kiểm tính toán, bộ đọc đề và tính nhất quán của dữ liệu. Thêm nội dung (không cần biết lập trình) Mọi nội dung nằm trong src/data/, mỗi mục là một dòng. Chép một dòng có sẵn, sửa lại nội dung, lưu — app tự cập nhật số lượng.README 전문 보기 ↗
Bộ công cụ hóa học chạy trên trình duyệt, cài được như app và chạy offline. Không theo dõi định danh. Giao diện tối, song ngữ Việt / Anh.
🔗 Bản chạy thử: https://tuongotpho.github.io/pHchem/
| Module | Mô tả | Dữ liệu |
|---|---|---|
| Bảng tuần hoàn | 118 nguyên tố, mỗi nguyên tố có nhiệt độ nóng chảy/sôi, khối lượng riêng, độ âm điện, năm phát hiện, ứng dụng, trạng thái ở 25°C | Bảng tra chuẩn; giá trị chưa đo được để trống, không ghi số dự đoán |
| Máy tính | Khối lượng mol (kèm % khối lượng) · cân bằng phương trình · chuyển đổi mol ↔ khối lượng ↔ thể tích khí ↔ nồng độ · pha loãng · pH | Tính bằng thuật toán, có test |
| Ma trận độ tan | 14 cation × 8 anion; bấm ô ra công thức chất tạo thành (ghép theo quy tắc hóa trị) | Quy tắc độ tan chuẩn |
| Thư viện công thức | 340 chất vô cơ / hữu cơ / hóa lý, 274 chất có hình công thức cấu tạo | Hình sinh bằng RDKit, chuẩn IUPAC |
| Từ điển | 211 thuật ngữ, lọc theo chữ cái | Song ngữ |
| Sự thật | 208 sự thật, 141 câu gắn với nguyên tố liên quan | Hiện kèm ở trang chi tiết nguyên tố |
| Luyện tập | Hai nguồn đề: ngân hàng đề của giáo viên và đề do AI tự tạo. Cả hai chọn theo cây thư mục Lớp → Chương → mục con. Đồng hồ 30 giây/câu, phiếu kết quả lưu thành ảnh | Ngân hàng đề chuyển từ file Word; xem hai mục riêng bên dưới |
Tổng: 536 test tự động kiểm tính toán, bộ đọc đề và tính nhất quán của dữ liệu.
npm install # cài lần đầu
npm run dev # chạy bản phát triển: http://localhost:5183
npm test # chạy toàn bộ test
npm run build # đóng gói bản chính thức vào dist/
npm run preview # xem thử bản chính thức
npm run struct # sinh lại hình công thức cấu tạo (cần khi sửa smiles.json)
npm run icons # sinh lại icon PWA
Mọi nội dung nằm trong src/data/, mỗi mục là một dòng. Chép một dòng có sẵn,
sửa lại nội dung, lưu — app tự cập nhật số lượng.
| File | Nội dung |
|---|---|
formulas.inorganic.ts · formulas.organic.ts · formulas.physical.ts | Thư viện công thức (chia theo nhóm) |
smiles.json | Mã SMILES để sinh hình cấu tạo — sửa xong nhớ chạy npm run struct |
dictionary.ts | Từ điển thuật ngữ |
facts.ts | Sự thật (trường el gắn nguyên tố liên quan) |
elements.ts · elements.details.ts | Dữ liệu nguyên tố |
solubility.ts | Ma trận độ tan |
Hình không vẽ tay và không vẽ lúc chạy. Quy trình:
src/data/smiles.json → npm run struct → src/generated/structures.ts (danh mục)
→ src/generated/structures-svgs.ts (kho hình)
→ structure-review.html (trang duyệt)
structure-review.html để soi toàn bộ hình một lượt (dành cho giáo viên duyệt).Ngoài đề do AI tự tạo từ dữ liệu app, trang Luyện tập còn có mục "Ngân hàng đề" — đề thật do giáo viên soạn, giữ nguyên thứ tự câu và đáp án của thầy.
Ai làm gì. Giáo viên chỉ làm hai việc, đều là việc vốn đã quen:
Toàn bộ phần chuyển đổi và đưa vào mã nguồn là việc của người làm app. Không bắt thầy cô điền mẫu Excel, bỏ MathType hay học cú pháp nào.
de-nguon/*.docx → npm run de → public/de/<mã>.json (dữ liệu câu hỏi)
de-nguon/*.va.json → public/de/hinh/*.png (ảnh đã nén)
(bản vá do người làm app viết) → de-review-<mã>.html (trang duyệt)
¹⁴N không bị nhầm thành hệ số 14.scripts/deMathType.mjs mở đối tượng OLE rồi
đọc thẳng định dạng MTEF. Đo trên ba đề đang có: 25/25, 46/46, 31/31 công thức. Chỗ
nào bộ đọc tự khai là không hiểu thì vẫn bắt người soi rồi khai daSoi trong bản
vá mới cho qua.globIgnores trong vite.config.ts), nén về 4 mức
xám và đặt tên theo mã băm nội dung nên tự khử trùng lặp giữa các bộ đề. Thêm 100 bộ
đề thì gói cài vẫn nguyên kích thước.H2O, NH4+, ^14N, A ->[t°] B),
vẽ bằng bộ nhẹ tự viết ở src/lib/kyHieuHoa.js — không kéo KaTeX (~320 KB mã + 254 KB
phông). Cần toán thật thì cắm KaTeX vào là chạy, không phải sửa dữ liệu.de-review-<mã>.html để soi cả bộ đề một lượt. Trang này vẽ bằng đúng bộ vẽ của
app, nên thầy cô duyệt ở đó thì học sinh nhìn thấy y như vậy.Cả hai nguồn đề đều chọn bằng một cây thư mục dựng theo mục lục SGK bộ Kết nối tri
thức — lớp 10 (7 chương), lớp 11 (6 chương), lớp 12 (8 chương), khai ở
src/data/chuongTrinh.js. Mở một chương ra là thấy mục con: chuyên đề bên ngân
hàng đề, dạng bài bên đề AI, kèm số câu của từng mục.
doanChuong, khớp từ khóa, khớp dài thắng
khớp ngắn). Bản vá .va.json khai "chuong": "11.2" là đè lên phép đoán. Đo trên ba
bộ đề đang có: 3/3 xếp đúng (Nitrogen → 11.2, Sự điện li → 11.1, Cân bằng hóa học
→ 11.1).src/lib/xepChuong.ts: lớp chất hữu cơ thắng trước, rồi tới nitrogen–sulfur, halogen,
kim loại chuyển tiếp, kim loại IA/IIA. Mức phủ đo được: phản ứng 212/224, chất
278/298, nguyên tố 109/118 (9 nguyên tố siêu nặng chưa có nhóm nên không xếp được).npm run soi:chuong
để đổ ra chuong-review.html — bảng xếp của toàn bộ dữ liệu để thầy cô soi một lượt
rồi chỉ chỗ sai, giống trang duyệt đề.Mở app trên trình duyệt (Chrome/Edge/Safari), chọn "Cài đặt ứng dụng" / "Add to Home Screen". Sau khi cài, mở lại vẫn chạy kể cả khi mất mạng.
⚠️ Phần chạy offline chưa được kiểm trên trình duyệt thật. Bản build đúng chuẩn (manifest hợp lệ, service worker, precache 15 file) nhưng cần một lần thử tay: cài app rồi tắt mạng mở lại.
Mỗi lần đẩy lên nhánh main, .github/workflows/deploy.yml chạy test + lint, rồi
dựng hai bản và đẩy lên hai nơi cùng lúc:
| Nơi | Địa chỉ | Đường dẫn gốc | Lệnh dựng |
|---|---|---|---|
| GitHub Pages | https://tuongotpho.github.io/pHchem/ | /pHchem/ | npm run build |
| Firebase Hosting | https://ph-chem.web.app/ | / | npm run build:firebase |
Vì sao hai bản chứ không một: Pages đặt app trong thư mục con, Firebase đặt ở gốc tên miền. Lấy bản này đem đẩy sang nơi kia thì trang trắng trơn — mọi đường dẫn tới js/css/hình đều trỏ sai. Chạy song song là cố ý, để chuyển dần; Firebase hỏng thì Pages vẫn còn đó. Khi nào yên tâm hẳn thì bỏ phần Pages đi.
Xem thử bản Firebase ngay trên máy, kèm đúng luật chuyển hướng và bộ nhớ đệm:
npm run build:firebase
npx firebase emulators:start --only hosting --project ph-chem
Workflow cần một bí mật tên FIREBASE_SERVICE_ACCOUNT trên GitHub. Chưa có nó thì
job deploy-firebase đỏ, nhưng Pages vẫn lên bình thường (hai job tách rời nhau).
Cách nhanh nhất — để Firebase CLI tự tạo tài khoản dịch vụ và tự cắm bí mật:
npx firebase login
npx firebase init hosting:github
Khi nó hỏi:
tuongotpho/pHchemXong, nó tự sinh thêm hai file workflow của riêng nó trong .github/workflows/ —
xóa hai file đó đi, vì deploy.yml đã lo cả rồi. Bí mật thì nó đã cắm xong.
Kiểm bí mật đã có chưa:
gh secret list
Nếu mã dự án không phải ph-chem, sửa lại ở hai chỗ: .firebaserc và dòng
projectId: trong .github/workflows/deploy.yml. Xem mã đúng bằng:
npx firebase projects:list
Mục này nói về Firestore / đăng nhập, không phải Hosting — Hosting thì đã bật rồi, xem phần Triển khai ở trên. App vẫn chạy 100% offline và không cần phần này.
Khi nào muốn đồng bộ ghi chú hay mục yêu thích giữa nhiều máy thì tạo
src/lib/firebase.ts và điền cấu hình từ Firebase Console. Xem .env.example cho các
biến môi trường cần thiết.
Vite · React · TypeScript · Tailwind CSS · vite-plugin-pwa · vitest · RDKit (lúc build)