hrms-exam/cms
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 b6b1979569
All checks were successful
Build & Deploy on Dev / build (push) Successful in 54s
Merge branch 'develop' into dev
2026-02-04 15:09:16 +07:00
..
docker edit dockerfile 2024-12-23 09:51:43 +00:00
src Merge branch 'develop' into dev 2026-02-04 15:09:16 +07:00
static เปลี่ยน list รายการการสอบคัดเลือก,แข่งขัน 2023-04-13 15:34:45 +07:00
tests Init project 2023-03-14 13:47:44 +07:00
.env.example Add new exam event, Add support positions 2023-04-12 12:46:32 +07:00
.eslintignore Init project 2023-03-14 13:47:44 +07:00
.eslintrc.cjs Init project 2023-03-14 13:47:44 +07:00
.gitignore Init project 2023-03-14 13:47:44 +07:00
.npmrc Init project 2023-03-14 13:47:44 +07:00
.prettierignore Init project 2023-03-14 13:47:44 +07:00
.prettierrc Init project 2023-03-14 13:47:44 +07:00
package-lock.json Fix:use LayoutServerLoad, update dependency 2023-06-16 13:03:27 +07:00
package.json แสดงวันเกี่ยวกับการสอบ,แสดง image placeholder 2023-04-17 09:36:06 +07:00
playwright.config.ts Init project 2023-03-14 13:47:44 +07:00
postcss.config.cjs Init project 2023-03-14 13:47:44 +07:00
README.md Fix:use LayoutServerLoad, update dependency 2023-06-16 13:03:27 +07:00
svelte.config.js Update structure and clean data 2023-04-04 12:38:01 +07:00
tailwind.config.cjs ปรับ css , เมนูหน้าแรก 2023-04-04 17:55:31 +07:00
tsconfig.json Upgrade package, Implement fake API, version info get from API. Waiting for real API 2023-04-07 13:49:34 +07:00
vite.config.ts add 3 demo calendar 2023-03-27 16:43:56 +07:00

เวปประกาศข่าว (CMS TOR 6.6.4)

การพัฒนาแบบที่เป็นอยู่ Vue(SPA)+dotnet(Web API) ของบริษัทไม่ได้รองรับ SEO เท่าใดนัก จำเป็นต้องใช้ Meta Framework ที่รองรับ SSR เช่น Nuxt.js เนื่องจากไม่ขึ้นกับส่วนอื่นมากนัก จะทดลองใช้เทคโนโลยีแบบใหม่ๆในการพัฒนา ที่ง่ายในการพัฒนากว่าเดิมจะ SvelteKit เป็นฐาน Daisy UI และ Daisy UI สำหรับการทำ Frontend และจะนำเครื่องมือในการ Automate ต่างๆมาร่วมด้วย

  • Sveltekit Meta JS Framework รองรับ SSR เขียนง่าย ทำ Frontend และ Backend (API) ได้ในตัวเดียว
  • TailWindCSS ติดตั้งด้วย svelte-add
  • Daisy UI UI Component ที่ใช้ TailWindCSS ใช้ได้ไม่จำกัด Framework มีวิธีการใช้ดูในลิงค์นี้
  • PWA ทำให้ Web App เหมือนแอปมือถือ
  • Playwright เขียนโค้ดทำการทดสอบเวปแอปบน Browser
  • Vitest ทำ Unit test สำหรับ Vite
  • GitHub Actions ทำ CI/CD ในระบบทดสอบ
  • nektos/act ใช้ GitHub Actions บนเครื่องของเราเอง
  • Argo CD deploy ขึ้นระบบ Production (K8s)
  • FullCalendar รองรับพ.ศ. ใช้แค่ฟีเจอร์ฟรีก็น่าจะพอ
  • Day.js ในฟอร์แม็ตวันในรูปแบบ local ไทยรองรับ พ.ศ.
  • ตรวจสอบเวอร์ชั่นตาม docker tag https://bma-qualifying.frappet.synology.me/api/dev

วีดีโอแสดงการทำงานทั้งหมด

Automate Development

ในวีดีโอลืมแสดงตัวอย่างการใช้ API

Install

คำสั่งสำหรับเริ่มต้นสร้างโปรเจ็กเปล่าๆ จนใช้งาน

# สร้างโปรเจ็ก SvelteKit เลือก Skeleton project,Typescript แล้ว ติดตั้งทั้งหมด
npm create svelte@latest cms-recruit
cd cms-recruit
npm install
# ติดตั้ง Tailwindcss พร้อมเซ็ตค่าให้เรียบร้อย
npx svelte-add@latest tailwindcss
# เมื่อติดตั้ง daisyui ให้ดูวิธีการตั้งค่าเพิ่มจากในเวป 
npm i daisyui
# ใช้สำหรับทำเป็น Node.js ทำ Docker Image
npm i -D @sveltejs/adapter-node
# Day.js 
npm i dayjs
# FullCalendar
npm i @fullcalendar/core
npm i @fullcalendar/daygrid
npm i @fullcalendar/interaction
# ช่วยทำ seo ให้ง่ายขึ้น
npm install -D svelte-seo

Sveltekit

คำสั่งที่ใช้รันโปรเจ็ก

npm run dev -- --port=4000 --host=0.0.0.0
npm run build
npm run preview -- --port=4000 --host=0.0.0.0
# หรือ
npx vite --port=4000 --host=0.0.0.0
npm vite build
npx vite preview  --port=4000 --host=0.0.0.0 

โครงสร้างโค้ด

  • หน้าเวปอยู่ใน src/routes/ โครงหน้าหลัก +layout.svelte,หน้าต่างๆ +page.svelte
  • library/component ที่ใช้ร่วมกัน src/lib/ สร้าง Mockup API โค้ดอยู่ใน src/routes/api/ เพื่อความเรียบง่ายสไตล์ CMS การดึงค่าจะเรียงจากใหม่ไปเก่าเสมอ มี limit เพื่อลดปริมาณข้อมูล ถ้าไม่มี limit ดึงข้อมูลล่าสุดไปจนถึง Today+12month

ตัวอย่าง endpoint มีดังนี้

ถ้าไม่ build เอง ตอนนี้มี demo อยู่ที่ https://bma-qualifying.frappet.synology.me/ ให้เปลี่ยน base url ให้เหมาะสม

การกำหนด path ของ API และ Data Type ที่ใช้ดูในไฟล์ CMSDataType.ts

Browser Testing

ใช้ Playwright มีคอนฟิกไฟล์ playwright.config.ts โค้ดสำหรับการทดสอบจะอยู่ใน โฟลเดอร์ tests ใน VS Code จะติดตั้ง Playwright Extension รูปเป็นเหมือนโหลรูปชมพู่สำหรับทดลองวิทยาศาสตร์ ให้กดปุ่มเล่นเพื่อทำการทดสอบ

# ติดตั้ง embeded broser ของ playwright
npx playwright install chromium
# รันเทสที่อยู่ในโฟลเดอร์ tests
npm run test

ดูเพิ่มเติมได้ที่

Unit Testing

ใช้ Vitest ทำ Unit test คอนฟิกจะอยู่ที่ vite.config.ts แนะนำให้ใส่ไว้ใน lib ในรูปแบบ src/lib/*.test.ts แนะนำให้เขียนโค้ดใน

npm run test:unit

CI Github Action

ให้ดูโค้ดที่ ../.github/workflow จะแสดงการ

  • เอาโค้ดมาจาก github
  • สร้าง Docker Image แล้ว Push ขึ้น Registry (docker.frappet.com)
  • ssh ไปที่ (192.168.1.9) เพื่อ pull image ตัวใหม่มาใช้ ถ้าจะรันบนเครื่องของเราเอง(local) ให้ติดตั้ง act
# Install act (Windows)
winget install nektos.act
# Install act (macOS/Linux)
brew install act

CD Argo CD

TODO ยังไม่ได้ทำสำหรับโปรเจ็กนี้ แต่ก็ดูวิธีทำจาก ตัวอย่างการทำ CD ด้วย Argo CD ก่อนได้ครับ

PWA

ใน app.html จะเรียกใช้ manifest.json ไฟล์ service-worker.ts จะถูก SvelteKit นำไปทำเป็น Service Worker ให้