BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Sci Games 2026 — ระบบเว็บไซต์กีฬาสานสัมพันธ์ภายใน คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏภูเก็ต (PKRU) เว็บไซต์สำหรับงานกีฬาสานสัมพันธ์ภายใน 9 - 11 ตุลาคม 2569 สร้างด้วย Next.js (App Router), Vanilla CSS (Glassmorphism), และ Supabase (PostgreSQL + Auth + Realtime)檢視完整 README ↗
เว็บไซต์สำหรับงานกีฬาสานสัมพันธ์ภายใน 9 - 11 ตุลาคม 2569 สร้างด้วย Next.js (App Router), Vanilla CSS (Glassmorphism), และ Supabase (PostgreSQL + Auth + Realtime)
ระบบสาธารณะ (Public Spectators):
matches_public_v2 + RLS ใน migration 007/008/010) หน้าอัปเดตเองทุก 30 วินาทีผ่าน /api/live-summary ที่แคชไว้ที่ edge/handbook): ดาวน์โหลด/พรีวิวไฟล์ PDF ทางการ (public/docs/)/live) — เฉพาะผู้ล็อกอิน: บอร์ดคะแนนสดทุกสนามสำหรับกรรมการ/เจ้าหน้าที่/ผู้ดูแล (Supabase Realtime + ลูกศรแจ้งเมื่อได้แต้ม); ผู้ชมทั่วไปจะถูกส่งไปหน้าเข้าสู่ระบบteam_standings แสดงบนหน้าแรก)/staff/login (เข้าด้วย PIN 6 หลักรายกีฬา หรือบัญชี staff/admin)ระบบผู้ดูแลระบบ (Admin Dashboard):
ระบบเจ้าหน้าที่ลงคะแนนในสนาม (Staff Scoring):
/admin/settings)/admin/pins — เซสชัน 14 ชม.) หรือบัญชี staff/adminlive_scoring_enabled ใน /admin/settings แล้วกรรมการ/เจ้าหน้าที่จะลงคะแนนไม่ได้ทันที (ผู้ดูแลยังแก้ได้)npm install
คัดลอกไฟล์ตัวอย่าง .env.local.example เป็น .env.local:
cp .env.local.example .env.local
ระบุค่าจาก Supabase Project Settings:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
supabase/ ตามลำดับ: migrations/001_initial_schema.sql → seed.sql (4 ทีมสี, 5 ชนิดกีฬา, สาขา, ช่วงเวลาแข่ง) → migrations/002…010 ทุกไฟล์เป็น idempotent รันซ้ำได้ (007 = view matches_public, 008 = ตัดสิทธิ์ anon อ่านคะแนนสด — รัน 008 หลัง deploy โค้ดที่อ่าน view แล้วเท่านั้น, 010 = คอลัมน์ court + view matches_public_v2 ที่หน้าเว็บใช้)
{ for f in supabase/migrations/001_initial_schema.sql supabase/seed.sql supabase/migrations/00[2-9]_*.sql supabase/migrations/01[0-9]_*.sql; do printf '\n-- >>>>>>>>>> %s\n' "$f"; cat "$f"; done; } > supabase/apply-all.sql
npm run seed:matches (ลอง -- --dry ก่อน)node scripts/create-admin.mjs <email> <password>npm run dev
เปิดเบราว์เซอร์ไปที่: http://localhost:3000
npm run build
npm run start
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYPIN_SESSION_SECRET (สุ่มยาว ๆ ใช้เซ็น cookie ของกรรมการที่ล็อกอินด้วย PIN)| คำสั่ง | ทดสอบอะไร |
|---|---|
npm test | Vitest — helper ล้วน (format, labels, scoring queue, filters, API mappers) |
npm run test:db | รัน migration + seed + scenario ทั้งหมดบน PostgreSQL ในเครื่อง (ต้องมี PGPASSWORD) |
npm run test:smoke | ยิง API จริงผ่าน dev server ที่ :3000 กับ Supabase จริง (สร้าง/ลบข้อมูลทดสอบเอง) |
npm run lint / npm run format:check | ESLint / Prettier ทั้ง repo |
© 2569 สโมสรนักศึกษาคณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏภูเก็ต