Dự án được xây dựng bằng TypeScript và React Native trên nền Expo SDK 51, tổ chức theo các thư mục components, screens, services và types:
┌────────────────────────────────────────────────────────────────────────┐
│ 1. PRESENTATION LAYER (GIAO DIỆN) │
│ - Screens: StudyScreen, WordMatchScreen, SentenceBuilderScreen... │
│ - Admin Screens: AdminDashboardScreen, ManageExams, ManageQuestions │
│ - Navigation: React Navigation v6 (Stack Navigator + Bottom Tabs) │
└───────────────────────────────────┬────────────────────────────────────┘
│ Gọi các dịch vụ và hook quản lý trạng thái
┌───────────────────────────────────▼────────────────────────────────────┐
│ 2. BUSINESS LOGIC & SERVICES LAYER │
│ - AuthService.ts: Quản lý phiên làm việc người dùng và phân quyền │
│ - AudioService.ts: Phát âm TTS qua expo-speech trên thiết bị │
│ - Exam Logic: Thuật toán shuffle câu hỏi, đếm ngược và chấm điểm % │
└───────────────────────────────────┬────────────────────────────────────┘
│ Đọc / Ghi dữ liệu cục bộ
┌───────────────────────────────────▼────────────────────────────────────┐
│ 3. LOCAL STORAGE & DATA PERSISTENCE LAYER │
│ - StorageService.ts: Lưu trữ cục bộ qua AsyncStorage │
│ - SeedData.ts: Bộ dữ liệu hạt giống khởi tạo tự động lần đầu mở app │
│ - Entities: Định nghĩa kiểu dữ liệu chặt chẽ qua types/index.ts │
└────────────────────────────────────────────────────────────────────────┘