CodeArea คือแพลตฟอร์มการเรียนรู้แบบรวมศูนย์ (Unified Platform) ที่ช่วยให้ผู้ใช้งานสามารถฝึกฝนการเขียนโค้ดได้ทันทีผ่านเว็บเบราว์เซอร์ โดยบูรณาการเทคโนโลยี AI Tutor เพื่อยกระดับประสบการณ์การเรียนรู้และลดกำแพงในการเข้าถึงความรู้ทางเทคนิค
ในปัจจุบัน ผู้เริ่มต้นมักประสบปัญหาในช่วงเริ่มต้น เช่น ความยุ่งยากในการติดตั้งสภาพแวดล้อม (Environment) และการขาดที่ปรึกษาเมื่อติดปัญหา โครงงานนี้จึงถูกพัฒนาขึ้นเพื่อให้ผู้ใช้ฝึกเขียนโค้ดได้ทันทีและมี AI ช่วยให้คำแนะนำแบบเรียลไทม์
graph TD
User((ผู้ใช้งาน)) -->|Web Interface| FE[Frontend - Next.js 16]
FE -->|API Requests| BE[Backend - Node.js/Express]
subgraph "Core Infrastructure"
BE -->|Data| DB[(Supabase DB)]
BE -->|Assets| ST[(Supabase Storage)]
BE -->|Execution| Ex[Executor - Piston/Judge0]
end
subgraph "AI Intelligence Layer"
BE -->|Proxy| AIT[AI Tutor BaaS - FastAPI]
AIT -->|RAG Context| VDB[(ChromaDB)]
AIT -->|Inference| LLM[Ollama Local LLM]
VDB --- Emb[nomic-embed-text]
end
graph TD
Home[หน้าแรก - Landing] --> Auth[ระบบยืนยันตัวตน]
Auth --> Register[ลงทะเบียน]
Auth --> Login[เข้าสู่ระบบ]
Login --> UserDashboard[Dashboard ของผู้ใช้]
UserDashboard --> QuestionList[รายการโจทย์]
QuestionList --> CodeEditor[หน้าเขียนโค้ด - IDE]
CodeEditor --> AIAssistant[AI Tutor Sidebar]
CodeEditor --> RunOutput[แสดงผลการรัน]
Login --> AdminPanel[ระบบผู้ดูแลระบบ]
AdminPanel --> ManageQ[จัดการโจทย์]
AdminPanel --> ManageUser[จัดการสมาชิก]
AdminPanel --> SysConfig[ตั้งค่าระบบ/Execution]
| เทคโนโลยี | Badge | คำอธิบาย |
| :— | :— | :— |
| Next.js 16 | | Framework หลัก (App Router) |
| React 19 |
| UI Library |
| Tailwind v4 |
| Utility-first CSS Framework |
| Monaco Editor |
| ตัวแก้ไขโค้ดระดับแนวหน้า (VS Code Engine) |
| DaisyUI |
| Library สำหรับ UI Components |
| เทคโนโลยี | Badge | คำอธิบาย |
| :— | :— | :— |
| Node.js | | Runtime v18+ |
| Express.js |
| REST API Framework |
| Supabase |
| ฐานข้อมูล PostgreSQL |
| Redis |
| Session / Token Store |
| Docker |
| รัน Code Executor (Piston/Judge0) |
| JWT |
| ระบบ Authentication |
| FastAPI |
| AI Tutor Backend-as-a-Service |
useDeferredValue เพื่อ UI ที่ตอบสนองได้ทันใจขณะค้นหาMap ในการรวมผลข้อมูลการส่งโจทย์แยกตามหมวดหมู่status แทนการลบจริงuseState, useEffect, useMemo, useCallback, useDeferredValue, useRefnpm run submodule:updategraph TD
User((User)) -->|Browser| Frontend[Next.js Frontend]
Frontend -->|REST API| Backend[Express Gateway]
Backend -->|Auth/Data| Supabase[(Supabase DB & Auth)]
Backend -->|Execute Code| Executor[Piston/Judge0 Service]
Backend -->|Ask AI| AIService[FastAPI AI Service]
AIService -->|Context| VectorDB[(ChromaDB)]
AIService -->|LLM| Ollama[Ollama Local LLM]
[!IMPORTANT] Developer Note for Integration (@frontend/app/dashboard/problems/new/page.tsx) ข้อมูลในไฟล์นี้ถูกออกแบบมาให้สอดคล้องกับฟอร์มใน
ProblemUpsertForm:
- TITLE: ชื่อโจทย์
- CATEGORY: หมวดหมู่ใหญ่
- DIFFICULTY: 1 (ง่าย), 2 (ปานกลาง), 3 (ยาก)
- TAGS: ป้ายกำกับโจทย์ (คั่นด้วย comma)
- CONSTRAINTS: ข้อจำกัดของข้อมูล
- TIME LIMIT: มิลลิวินาที (MS)
- MEMORY LIMIT: กิโลไบต์ (KB)
- EXPECTED COMPLEXITY: Time/Space
- DESCRIPTION: เนื้อเรื่องโจทย์
- SOLUTION: โค้ดตัวอย่าง
- TEST CASES: (Input, Output, Order, Is Simple, Status)
| Order | Input Data | Output Data | Is Simple | Status |
|---|---|---|---|---|
| 1 | level | Yes | True | Active |
| 2 | hello | No | True | Active |
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s; cin >> s;
string r = s;
reverse(r.begin(), r.end());
if (s == r) cout << "Yes";
else cout << "No";
return 0;
}