9.4 KiB
9.4 KiB
🛠️ Web Development Details: e-Learning Platform (Learner Frontend)
เอกสารฉบับนี้สรุปรายละเอียดทางเทคนิค โครงสร้างโค้ด และการทำงานของระบบเพื่อความสะดวกในการพัฒนาต่อและส่งมอบงาน
🚀 Tech Stack
- Framework: Nuxt 3 (Vue 3 Composition API)
- Language: TypeScript
- Styling:
- Tailwind CSS (Utility-first)
- Vanilla CSS Variables (Design Tokens & Theming)
- Custom CSS Animations (ใน
assets/css/main.css)
- State Management: Vue
ref,reactive,computed(Local State) & Composables (Global State) - UI Component:
- Custom Premium Components (สร้างเองเพื่อให้ได้ Design ที่เฉพาะตัว)
- Quasar UI (ใช้บางส่วนสำหรับ Notifications และ Layout พื้นฐาน)
- Icons: SVG Icons (Inline เพื่อ Performance สูงสุด)
📂 โครงสร้างโฟลเดอร์และหน้าที่ของไฟล์ (Project Structure)
pages/ (Routes)
กำหนดเส้นทาง (Routes) ของเว็บไซต์:
| ไฟล์ | Path URL | หน้าที่และความสำคัญ |
|---|---|---|
index.vue |
/ |
Main Landing Page: หน้าแรกบุคคลทั่วไป มีเอฟเฟกต์พื้นหลัง Hero Section และข้อมูลแพลตฟอร์ม |
auth/ |
Authentication Module: รวมหน้าที่เกี่ยวกับการยืนยันตัวตนทั้งหมด | |
├── login.vue |
/auth/login |
หน้าเข้าสู่ระบบ |
├── register.vue |
/auth/register |
หน้าสมัครสมาชิกใหม่ |
├── forgot-password.vue |
/auth/forgot.. |
หน้าขอรหัสผ่านใหม่ |
└── reset-password.vue |
/auth/reset.. |
หน้าตั้งรหัสผ่านใหม่ |
dashboard/ |
User Dashboard Module: ส่วนพื้นที่ส่วนตัวของผู้ใช้ | |
├── index.vue |
/dashboard |
Main Dashboard: หน้าหลักแสดงความคืบหน้าการเรียนล่าสุด และคอร์สแนะนำ |
├── my-courses.vue |
/dashboard/my.. |
User Knowledge Base: รวมคอร์สที่ผู้ใช้งานลงทะเบียนเรียนแล้ว |
├── profile.vue |
/dashboard/pro.. |
User Settings: หน้าจัดการข้อมูลส่วนตัว |
├── announcements.vue |
/dashboard/ann.. |
Platform News: หน้ารวมประกาศข่าวสาร |
browse/ |
Browsing Module: ส่วนค้นหาคอร์สเรียน | |
├── index.vue |
/browse |
Public Catalog: หน้ารวมคอร์สสำหรับผู้เยี่ยมชมทั่วไป (Clean Card UI) |
├── discovery.vue |
/browse/disc.. |
Course Catalog: หน้าค้นหาคอร์ส พร้อมระบบ Filter Accordion และ Expandable Categories |
├── opencovery.vue |
/browse/open.. |
Public Detail: หน้ารายละเอียดคอร์สแบบสาธารณะ |
classroom/ |
Learning Module: ส่วนการเรียนการสอน | |
├── learning.vue |
/classroom/lea.. |
Classroom Experience: ห้องเรียนออนไลน์เต็มรูปแบบ (Video Player, Sidebar) |
├── quiz.vue |
/classroom/quiz |
Assessment Module: ระบบสอบวัดผล 4 ขั้นตอน |
components/ (Reusable UI)
ส่วนประกอบที่นำไปใช้ซ้ำในหน้าต่างๆ:
- Layout & Navigation:
AppHeader.vue/AppSidebar.vue: ส่วนหัวและเมนูข้างสำหรับผู้ใช้ที่ล็อกอินแล้วLandingHeader.vue/LandingFooter.vue: ส่วนหัวและท้ายสำหรับหน้า Landing PageMobileNav.vue: เมนูนำทางด้านล่างสำหรับหน้าจอมือถือUserMenu.vue: เมนู Dropdown จัดการบัญชีผู้ใช้
- Cards & Display:
CourseCard.vue: การ์ดแสดงข้อมูลคอร์ส (Updated: Clean Design, No Badge)UserAvatar.vue: แสดงรูปโปรไฟล์ผู้ใช้ พร้อม Fallback
- Forms & Feedback:
FormInput.vue,LoadingSpinner.vue,LoadingSkeleton.vue
🔐 ระบบรักษาความปลอดภัยและ Logic พิเศษ (Core Logic)
| ส่วนงาน | ไฟล์ | คำอธิบาย |
|---|---|---|
| Route Guard | middleware/auth.ts |
Middleware ดักจับการเข้าถึง เช็กสถานะการล็อกอิน |
| Auth State | composables/useAuth.ts |
Centralized Logic สำหรับ Login/Logout เก็บ state ผู้ใช้ปัจจุบัน |
| No-Cache | server/middleware/cache-control.ts |
ป้องกันการ Cache หน้าสำคัญด้วย Headers |
🎨 Design System & Theming
- Global Styles:
assets/css/main.css- Strict Dark Palette: ใช้ระบบ CSS Variables ใหม่ (
--bg-body,--bg-surface,--text-main, etc.) เพื่อคุมธีม Dark Mode ให้แม่นยำ (Slate-900base) - Dynamic Colors: เปลี่ยนการใช้ Hardcoded HEX เป็น Tailwind Utilities (
text-slate-900 dark:text-white) เพื่อรองรับทั้ง Light/Dark Mode สมบูรณ์แบบ
- Strict Dark Palette: ใช้ระบบ CSS Variables ใหม่ (
- Font Configuration: ใช้ Inter (English) และ Prompt/Sarabun (Thai)
🆕 อัปเดตล่าสุด (Recent Major Updates)
1. Authentication Refactor
- ย้ายไฟล์ที่เกี่ยวข้องกับ Auth (
login,register, etc.) ไปไว้ในโฟลเดอร์pages/auth/เพื่อความเป็นระเบียบและง่ายต่อการจัดการ
2. UI/UX Refinements (Discovery & Courses)
- Discovery Page:
- Accordion Filters: ปรับปรุง Filter หมวดหมู่ให้สามารถ ย่อ/ขยาย ได้ (
v-show) - Show More Logic: เพิ่มปุ่ม "แสดงเพิ่มเติม/แสดงน้อยลง" สำหรับรายการหมวดหมู่ที่ยาว
- Cleaner UI: ลบไอคอน Chevron ที่ซ้ำซ้อนในแต่ละรายการออก
- Accordion Filters: ปรับปรุง Filter หมวดหมู่ให้สามารถ ย่อ/ขยาย ได้ (
- Courses Page (Public):
- Simplified Cards: ลบ Badge ระดับความยาก (Level) ออกเพื่อให้การ์ดดูสะอาดตาขึ้น
- Data Cleanup: ลบข้อมูล Level ที่ไม่จำเป็นออกจาก Mock Data
3. Dashboard (Home) Update
- New Layout: ปรับปรุงหน้า Dashboard ให้แสดง "คอร์สที่เรียนล่าสุด" และ "คอร์สแนะนำ" อย่างชัดเจน
- Progress Tracking: แสดง Progress Bar ที่สวยงามสำหรับการเรียนปัจจุบัน