SplitDee - Project Folder Structure Design 📂
นี่คือการออกแบบโครงสร้างโฟลเดอร์สำหรับโปรเจกต์ SplitDee (ระบบจัดการค่าใช้จ่ายและหารบิลอัจฉริยะ) โดยอ้างอิงจากโครงสร้างหลักที่คุณกำหนดไว้ในไฟล์นี้:
SplitDee/
├── docs/ # เอกสารโครงการและการออกแบบระบบ (System Design Documentation)
│ ├── system_design.md # รายละเอียดสถาปัตยกรรมระบบ (System Architecture)
│ ├── database_schema.md# การออกแบบฐานข้อมูล (Database Schema & ERD)
│ ├── api_spec.md # รายละเอียดของ API Endpoints ทั้งหมด
│ └── user_manual.md # คู่มือแนะนำการใช้งานแอปพลิเคชันสำหรับผู้ใช้
│
├── backend/ # ระบบหลังบ้านพัฒนาด้วย Python (FastAPI + SQLite/PostgreSQL)
│ ├── app/ # ซอร์สโค้ดหลักของ Backend
│ │ ├── __init__.py
│ │ ├── main.py # จุดเริ่มต้นของแอปพลิเคชัน (FastAPI Server)
│ │ ├── database.py # การเชื่อมต่อฐานข้อมูล (Database Connection)
│ │ ├── models.py # โครงสร้างตารางฐานข้อมูล (SQLAlchemy Models)
│ │ ├── schemas.py # รูปแบบการแลกเปลี่ยนข้อมูล (Pydantic Schemas)
│ │ ├── crud.py # ฟังก์ชันการเขียน/อ่านฐานข้อมูล (Create, Read, Update, Delete)
│ │ └── services/ # ระบบเสริมต่างๆ ของแอปพลิเคชัน
│ │ ├── __init__.py
│ │ ├── promptpay.py # ระบบสร้าง QR Code พร้อมเพย์ (EMVCo Payload)
│ │ ├── meme.py # ระบบสร้าง Meme ทวงเงิน (ใช้ Pillow วาดคำทวงเงินบนรูป)
│ │ └── slip.py # ระบบจำลองตรวจสอบสลิปโอนเงิน (Slip Verification API)
│ ├── static/ # โฟลเดอร์เก็บทรัพยากรฝรั่งเซิร์ฟเวอร์
│ │ ├── templates/ # รูปภาพเทมเพลตสำหรับทำ Meme ทวงเงิน
│ │ ├── memes/ # รูปภาพ Meme ที่ถูกสร้างขึ้นมาใหม่
│ │ └── slips/ # โฟลเดอร์สำหรับเก็บภาพสลิปที่ผู้ใช้อัปโหลดมาตรวจสอบ
│ ├── tests/ # สคริปต์สำหรับรันเทสระบบหลังบ้าน (PyTest)
│ ├── requirements.txt # ไฟล์บันทึกรายชื่อ Library/Package ที่ระบบต้องใช้งาน
│ └── .env.example # ไฟล์ตัวอย่างตั้งค่าตัวแปรสภาพแวดล้อม (Environment Variables)
│
├── frontend/ # ระบบหน้าต่างการใช้งาน (HTML5 + CSS3 + JavaScript)
│ ├── index.html # หน้าเพจหลักของ Web Application
│ ├── src/ # โฟลเดอร์เก็บ Logic และ Style หลัก
│ │ ├── main.js # ไฟล์ JavaScript หลักในการควบคุม UI และจัดการ State
│ │ ├── api.js # ฟังก์ชันติดต่อกับ Backend API
│ │ └── style.css # สไตล์การตกแต่งหน้าตาแอปพลิเคชัน (Vanilla CSS)
│ └── assets/ # รูปภาพ, โลโก้ และไอคอนต่างๆ ที่ใช้ในหน้าเว็บ
│
├── docker/ # สภาพแวดล้อมสำหรับรันแอปพลิเคชันด้วย Container (Docker)
│ ├── backend.Dockerfile # Dockerfile สำหรับรันระบบหลังบ้าน (Python)
│ ├── frontend.Dockerfile# Dockerfile สำหรับรันเว็บแอป (Nginx / static server)
│ └── docker-compose.yml # ไฟล์ตั้งค่าการรัน Container ร่วมกันระหว่าง Frontend/Backend
│
├── scripts/ # สคริปต์เสริมสำหรับการพัฒนา
│ ├── init_db.py # สคริปต์สร้าง Database และสร้างตารางข้อมูลเริ่มต้น
│ └── seed_data.py # สคริปต์เติมข้อมูลจำลองเริ่มต้นในฐานข้อมูล (Seed Data)
│
└── assets/ # ทรัพยากรส่วนกลางของโครงงาน
└── logos/ # โลโก้แบรนด์ SplitDee เวอร์ชั่นต่างๆ📝 คำอธิบายการออกแบบแต่ละส่วน:
docs/: ใช้สำหรับรวบรวมเอกสารวิเคราะห์และออกแบบ เพื่อให้การส่งมอบโครงงานปริญญาตรีมีความเป็นระเบียบและตรวจเช็คข้อมูลอ้างอิงได้ง่ายbackend/: พัฒนาด้วย FastAPI ซึ่งมีความเร็วในการตอบสนองสูง และรองรับการทำ Auto API Documentation (Swagger UI) ที่จะช่วยให้การเชื่อมต่อกับ Frontend สะดวกขึ้นมากfrontend/: โครงสร้างแบบ Single-Page Application (SPA) แบบดั้งเดิม (HTML/CSS/JS) เพื่อความง่ายในการพัฒนาและรันโดยไม่ต้องตั้งค่าเฟรมเวิร์กที่ซับซ้อน หรือสามารถขยายไปใช้ React.js / Vite ในภายหลังได้docker/: ช่วยแก้ปัญหาการรันโปรเจกต์ต่างเครื่อง (เช่น การนำเสนอโปรเจกต์บนเครื่องของอาจารย์หรือกรรมการตรวจ) เพื่อให้รันได้เสถียรและเร็วขึ้นscripts/: อำนวยความสะดวกในกระบวนการ Reset หรือทดสอบฐานข้อมูลใหม่โดยไม่ต้องเริ่มพิมพ์ข้อมูลใหม่ทุกครั้ง