<h2>GIỚI THIỆU SẢN PHẨM</h2>
<p>
Đây là bộ source code ứng dụng quản lý nha khoa được phát triển bằng Flutter và Firebase,
hỗ trợ chạy trên Android và Web/PWA. Sản phẩm có giao diện song ngữ Tiếng Việt – English,
phù hợp để phát triển ứng dụng cho phòng khám nha khoa, phòng khám tư nhân, đồ án tốt nghiệp
hoặc làm nền tảng tùy chỉnh theo yêu cầu khách hàng.
</p>
<p>
Source được tổ chức theo cấu trúc rõ ràng, có phân quyền khách hàng, bác sĩ và quản trị viên.
Người mua có thể thay đổi tên phòng khám, logo, màu sắc, thông tin liên hệ, Firebase và nội dung
dịch vụ để tạo thành sản phẩm riêng.
</p>
<h2>TÍNH NĂNG CHÍNH</h2>
<ul>
<li>Đăng nhập và phân quyền theo vai trò khách hàng, bác sĩ, quản trị viên.</li>
<li>Quản lý thông tin bệnh nhân.</li>
<li>Quản lý lịch hẹn nha khoa.</li>
<li>Đặt lịch khám dành cho khách hàng.</li>
<li>Theo dõi trạng thái lịch hẹn.</li>
<li>Quản lý hồ sơ và lịch sử điều trị.</li>
<li>Quản lý bác sĩ và tài khoản nhân viên.</li>
<li>Dashboard riêng theo từng vai trò.</li>
<li>Danh mục dịch vụ nha khoa.</li>
<li>Nội dung kiến thức, hướng dẫn chăm sóc và câu hỏi thường gặp.</li>
<li>Trang giới thiệu và thông tin liên hệ phòng khám.</li>
<li>Kiến trúc thông báo và Firebase Cloud Messaging.</li>
<li>Giao diện responsive cho điện thoại, máy tính bảng và trình duyệt web.</li>
<li>Hỗ trợ Android và Web/PWA từ cùng một source Flutter.</li>
</ul>
<h2>HỖ TRỢ SONG NGỮ</h2>
<ul>
<li>Tiếng Việt đầy đủ dấu.</li>
<li>English interface.</li>
<li>Chuyển đổi ngôn ngữ trực tiếp tại khu vực đăng nhập.</li>
<li>Lưu lựa chọn ngôn ngữ trên thiết bị.</li>
<li>Thiết bị dùng tiếng Việt sẽ mặc định Tiếng Việt.</li>
<li>Các ngôn ngữ khác sẽ mặc định English.</li>
</ul>
<h2>CÔNG NGHỆ SỬ DỤNG</h2>
<ul>
<li>Flutter.</li>
<li>Dart.</li>
<li>Firebase Authentication.</li>
<li>Cloud Firestore.</li>
<li>Firebase Cloud Functions.</li>
<li>Firebase Cloud Messaging.</li>
<li>Firebase Hosting.</li>
<li>Flutter Web và PWA.</li>
</ul>
<h2>NỘI DUNG BỘ SOURCE</h2>
<ul>
<li>Full source Flutter.</li>
<li>Source Android.</li>
<li>Source Web/PWA.</li>
<li>Firebase Functions.</li>
<li>Firestore Security Rules.</li>
<li>Bộ kiểm thử Flutter và Firebase Functions.</li>
<li>807 cặp nội dung bản địa hóa Việt – Anh.</li>
<li>Tài liệu cấu hình Firebase.</li>
<li>Tài liệu thay đổi logo, tên ứng dụng và thông tin phòng khám.</li>
<li>Tài liệu build Android và Web.</li>
<li>Tài liệu tạo tài khoản quản trị viên đầu tiên.</li>
</ul>
<h2>KIỂM THỬ SOURCE</h2>
<ul>
<li>Flutter analyze: không có lỗi.</li>
<li>Flutter test: 410/410 bài kiểm thử đạt.</li>
<li>Firebase Functions test: 113/113 bài kiểm thử đạt.</li>
<li>Build APK thành công.</li>
<li>Build Web thành công.</li>
<li>Đã kiểm tra loại bỏ thông tin Firebase, tài khoản và dữ liệu của dự án gốc.</li>
</ul>
<h2>KHẢ NĂNG TÙY CHỈNH</h2>
<ul>
<li>Đổi tên phòng khám.</li>
<li>Thay logo và favicon.</li>
<li>Thay màu nhận diện thương hiệu.</li>
<li>Thay số điện thoại, email, website và địa chỉ.</li>
<li>Cấu hình Firebase riêng của người mua.</li>
<li>Đổi application ID Android.</li>
<li>Thêm hoặc sửa dịch vụ nha khoa.</li>
<li>Mở rộng thêm vai trò lễ tân hoặc nhân viên.</li>
</ul>
<h2>LƯU Ý QUAN TRỌNG</h2>
<p>
Source không kết nối sẵn với Firebase của người bán. Người mua cần tạo Firebase Project riêng
và thực hiện cấu hình theo tài liệu đi kèm.
</p>
<p>
Các dịch vụ có tính phí của Firebase, Google Play hoặc nhà cung cấp bên thứ ba không nằm trong
giá bán source.
</p>
<p>
APK Demo chỉ dùng để xem trước giao diện và xác minh khả năng build. Người mua cần tự tạo
keystore, cấu hình Firebase và kiểm thử trên thiết bị mục tiêu trước khi phát hành chính thức.
</p>
<h2>ĐỐI TƯỢNG PHÙ HỢP</h2>
<ul>
<li>Lập trình viên Flutter.</li>
<li>Sinh viên làm đồ án quản lý phòng khám.</li>
<li>Đơn vị phát triển phần mềm nha khoa.</li>
<li>Phòng khám muốn thuê lập trình viên tùy chỉnh ứng dụng riêng.</li>
<li>Người cần source nền để phát triển sản phẩm Android và Web.</li>
</ul>
<h2>PHẠM VI HỖ TRỢ</h2>
<ul>
<li>Hỗ trợ giải đáp cài đặt cơ bản trong 7 ngày sau khi mua.</li>
<li>Hướng dẫn mở và chạy source.</li>
<li>Hướng dẫn kết nối Firebase của người mua.</li>
<li>Hướng dẫn build Android và Web theo tài liệu.</li>
<li>Hỗ trợ xác định lỗi phát sinh trực tiếp từ source gốc.</li>
</ul>
<p>
Không bao gồm phát triển tính năng mới, thiết kế lại giao diện, đăng ứng dụng lên Google Play,
tạo Firebase thay người mua hoặc tùy chỉnh theo quy trình riêng của từng phòng khám.
</p>
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
<h2>1. YÊU CẦU MÔI TRƯỜNG</h2>
<ul>
<li>Windows, macOS hoặc Linux.</li>
<li>Flutter SDK phiên bản tương thích với dự án.</li>
<li>Dart SDK đi kèm Flutter.</li>
<li>Android Studio và Android SDK.</li>
<li>Java JDK.</li>
<li>Node.js và npm để sử dụng Firebase Functions.</li>
<li>Firebase CLI.</li>
<li>Tài khoản Google và Firebase Project riêng.</li>
</ul>
<h2>2. GIẢI NÉN SOURCE</h2>
<p>
Giải nén file source vào đường dẫn ngắn, không chứa ký tự đặc biệt. Ví dụ:
</p>
<pre>C:\Projects\DentalClinicApp</pre>
<h2>3. CÀI DEPENDENCY FLUTTER</h2>
<p>Mở Terminal tại thư mục ứng dụng Flutter và chạy:</p>
<pre>flutter pub get</pre>
<p>Tạo lại file bản địa hóa Việt – Anh:</p>
<pre>flutter gen-l10n</pre>
<p>Kiểm tra source:</p>
<pre>flutter analyze</pre>
<p>Chạy bộ kiểm thử:</p>
<pre>flutter test</pre>
<h2>4. TẠO FIREBASE PROJECT RIÊNG</h2>
<ol>
<li>Đăng nhập Firebase Console.</li>
<li>Tạo một Firebase Project mới.</li>
<li>Thêm ứng dụng Android với application ID của người mua.</li>
<li>Thêm ứng dụng Web.</li>
<li>Bật Firebase Authentication theo nhu cầu.</li>
<li>Tạo Cloud Firestore.</li>
<li>Cấu hình Firebase Storage nếu sử dụng tải ảnh.</li>
<li>Cấu hình Firebase Cloud Messaging nếu sử dụng thông báo đẩy.</li>
</ol>
<p>
Không sử dụng Firebase placeholder có sẵn trong source để chạy production.
</p>
<h2>5. CẤU HÌNH FLUTTERFIRE</h2>
<p>Cài FlutterFire CLI:</p>
<pre>dart pub global activate flutterfire_cli</pre>
<p>Đăng nhập Firebase CLI:</p>
<pre>firebase login</pre>
<p>Chạy cấu hình tại thư mục Flutter:</p>
<pre>flutterfire configure</pre>
<p>
Chọn Firebase Project của người mua và các nền tảng Android, Web cần sử dụng.
Lệnh này sẽ tạo cấu hình Firebase riêng cho dự án.
</p>
<h2>6. CẤU HÌNH ANDROID</h2>
<p>
Tải file <strong>google-services.json</strong> từ Firebase Console và đặt đúng vị trí
theo cấu trúc Android của dự án.
</p>
<p>
Kiểm tra application ID trong cấu hình Android. Source Demo sử dụng:
</p>
<pre>com.dentalclinic.demo</pre>
<p>
Người mua nên đổi application ID thành tên riêng trước khi phát hành.
</p>
<h2>7. CÀI FIREBASE FUNCTIONS</h2>
<p>Mở Terminal tại thư mục functions:</p>
<pre>cd functions
npm ci
npm test</pre>
<p>Để triển khai Functions vào Firebase Project của người mua:</p>
<pre>firebase deploy --only functions</pre>
<p>
Chỉ chạy deploy sau khi đã kiểm tra đúng Firebase Project đang hoạt động.
</p>
<h2>8. TRIỂN KHAI FIRESTORE RULES</h2>
<p>
Kiểm tra nội dung Firestore Rules trước khi triển khai:
</p>
<pre>firebase deploy --only firestore:rules</pre>
<p>
Người mua cần kiểm tra lại quyền truy cập theo mô hình vận hành thực tế của phòng khám.
</p>
<h2>9. CHẠY ỨNG DỤNG ANDROID</h2>
<p>Kết nối điện thoại hoặc mở Android Emulator, sau đó chạy:</p>
<pre>flutter run</pre>
<p>Build APK debug:</p>
<pre>flutter build apk --debug</pre>
<p>
Để build bản release, người mua phải tự tạo keystore và cấu hình signing.
Keystore phát hành không được cung cấp trong source.
</p>
<h2>10. CHẠY WEB</h2>
<p>Chạy web cục bộ:</p>
<pre>flutter run -d chrome</pre>
<p>Build web release:</p>
<pre>flutter build web --release</pre>
<p>Output được tạo trong thư mục:</p>
<pre>build\web</pre>
<h2>11. TRIỂN KHAI FIREBASE HOSTING</h2>
<p>Khởi tạo Hosting cho Firebase Project của người mua:</p>
<pre>firebase init hosting</pre>
<p>Chọn thư mục public là:</p>
<pre>build/web</pre>
<p>Build lại web và triển khai:</p>
<pre>flutter build web --release
firebase deploy --only hosting</pre>
<h2>12. THAY ĐỔI THƯƠNG HIỆU</h2>
<p>
Thực hiện theo file <strong>BRANDING_SETUP.md</strong> đi kèm source để thay:
</p>
<ul>
<li>Tên phòng khám.</li>
<li>Logo.</li>
<li>Favicon.</li>
<li>Màu thương hiệu.</li>
<li>Số điện thoại.</li>
<li>Email.</li>
<li>Website.</li>
<li>Địa chỉ.</li>
<li>Application ID.</li>
</ul>
<h2>13. TẠO TÀI KHOẢN QUẢN TRỊ</h2>
<p>
Xem file <strong>ADMIN_ACCOUNT_SETUP.md</strong> để tạo tài khoản quản trị viên đầu tiên
bằng Firebase Authentication và Firestore.
</p>
<p>
Không để mật khẩu mặc định hoặc tài khoản demo khi đưa hệ thống vào sử dụng thật.
</p>
<h2>14. LƯU Ý BẢO MẬT</h2>
<ul>
<li>Không đưa API key riêng, service account hoặc keystore lên kho mã nguồn công khai.</li>
<li>Không chia sẻ file chứa mật khẩu ký Android.</li>
<li>Kiểm tra đúng Firebase Project trước khi deploy.</li>
<li>Thay toàn bộ thông tin placeholder trước khi sử dụng production.</li>
<li>Tự kiểm thử trên thiết bị mục tiêu trước khi phát hành.</li>
</ul>
<h2>15. TÀI LIỆU ĐI KÈM</h2>
<ul>
<li>README_FIRST.md</li>
<li>FIREBASE_SETUP.md</li>
<li>BRANDING_SETUP.md</li>
<li>ANDROID_SETUP.md</li>
<li>WEB_SETUP.md</li>
<li>LANGUAGE_SETUP.md</li>
<li>ADMIN_ACCOUNT_SETUP.md</li>
<li>SECURITY_AND_SECRETS.md</li>
<li>CHANGELOG.md</li>
</ul>
Nguồn: Topcode.vn